mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
[ruby/matrix] Fix Matrix#unitary? [#14]
This commit is contained in:
parent
c925cc01c5
commit
7d360efe92
2 changed files with 11 additions and 3 deletions
|
@ -983,11 +983,11 @@ class Matrix
|
||||||
#
|
#
|
||||||
def unitary?
|
def unitary?
|
||||||
raise ErrDimensionMismatch unless square?
|
raise ErrDimensionMismatch unless square?
|
||||||
rows.each_with_index do |row, i|
|
rows.each_with_index do |row_i, i|
|
||||||
column_count.times do |j|
|
rows.each_with_index do |row_j, j|
|
||||||
s = 0
|
s = 0
|
||||||
row_count.times do |k|
|
row_count.times do |k|
|
||||||
s += row[k].conj * rows[k][j]
|
s += row_i[k].conj * row_j[k]
|
||||||
end
|
end
|
||||||
return false unless s == (i == j ? 1 : 0)
|
return false unless s == (i == j ? 1 : 0)
|
||||||
end
|
end
|
||||||
|
|
|
@ -18,6 +18,7 @@ class TestMatrix < Test::Unit::TestCase
|
||||||
@a3 = Matrix[[4, 1, -3], [0, 3, 7], [11, -4, 2]]
|
@a3 = Matrix[[4, 1, -3], [0, 3, 7], [11, -4, 2]]
|
||||||
@a5 = Matrix[[2, 0, 9, 3, 9], [8, 7, 0, 1, 9], [7, 5, 6, 6, 5], [0, 7, 8, 3, 0], [7, 8, 2, 3, 1]]
|
@a5 = Matrix[[2, 0, 9, 3, 9], [8, 7, 0, 1, 9], [7, 5, 6, 6, 5], [0, 7, 8, 3, 0], [7, 8, 2, 3, 1]]
|
||||||
@b3 = Matrix[[-7, 7, -10], [9, -3, -2], [-1, 3, 9]]
|
@b3 = Matrix[[-7, 7, -10], [9, -3, -2], [-1, 3, 9]]
|
||||||
|
@rot = Matrix[[0, -1, 0], [1, 0, 0], [0, 0, -1]]
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_matrix
|
def test_matrix
|
||||||
|
@ -792,4 +793,11 @@ class TestMatrix < Test::Unit::TestCase
|
||||||
assert_in_epsilon(vectors[0][0], vectors[0][1])
|
assert_in_epsilon(vectors[0][0], vectors[0][1])
|
||||||
assert_in_epsilon(-4 * vectors[1][0], vectors[1][1])
|
assert_in_epsilon(-4 * vectors[1][0], vectors[1][1])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_unitary?
|
||||||
|
assert_equal true, @rot.unitary?
|
||||||
|
assert_equal true, ((0+1i) * @rot).unitary?
|
||||||
|
assert_equal false, @a3.unitary?
|
||||||
|
assert_raise(Matrix::ErrDimensionMismatch) { @m1.unitary? }
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue