Conjugate transpose: Difference between revisions
Content added Content deleted
(Conjugate transpose of a matrix; Hermitian matrix; normal matrix; unitary matrix.) |
(Add Ruby, but mark {{incorrect}} for Matrix#hermitian?.) |
||
Line 12: | Line 12: | ||
* A [[wp:unitary matrix|unitary matrix]] has its [[inverse matrix|inverse]] equal to its conjugate transpose: <math>M^H = M^{-1}</math>. This is true [[wikt:iff|iff]] <math>M^HM = I_n</math> and iff <math>MM^H = I_n</math>, where <math>I_n</math> is the identity matrix. |
* A [[wp:unitary matrix|unitary matrix]] has its [[inverse matrix|inverse]] equal to its conjugate transpose: <math>M^H = M^{-1}</math>. This is true [[wikt:iff|iff]] <math>M^HM = I_n</math> and iff <math>MM^H = I_n</math>, where <math>I_n</math> is the identity matrix. |
||
Given some matrix of complex numbers, find its conjugate |
Given some matrix of complex numbers, find its conjugate transpose. Also determine if it is a Hermitian matrix, normal matrix, or a unitary matrix. |
||
* MathWorld: [http://mathworld.wolfram.com/ConjugateTranspose.html conjugate transpose], [http://mathworld.wolfram.com/HermitianMatrix.html Hermitian matrix], [http://mathworld.wolfram.com/NormalMatrix.html normal matrix], [http://mathworld.wolfram.com/UnitaryMatrix.html unitary matrix] |
* MathWorld: [http://mathworld.wolfram.com/ConjugateTranspose.html conjugate transpose], [http://mathworld.wolfram.com/HermitianMatrix.html Hermitian matrix], [http://mathworld.wolfram.com/NormalMatrix.html normal matrix], [http://mathworld.wolfram.com/UnitaryMatrix.html unitary matrix] |
||
=={{header|Ruby}}== |
|||
{{incorrect|Ruby|Matrix#hermitian? in [[MRI]] uses a different definition of Hermitian matrix: it only checks <math>M_{ji} = \overline{M_{ij}}</math> for <math>i \ne j</math>.}} |
|||
{{works with|Ruby|1.9.3}} |
|||
<lang ruby>require 'matrix' |
|||
# Start with some matrix. |
|||
i = Complex::I |
|||
matrix = Matrix[[i, 0, 0], |
|||
[0, i, 0], |
|||
[0, 0, i]] |
|||
# Find the conjugate transpose. |
|||
# Matrix#conjugate appeared in Ruby 1.9.2. |
|||
conjt = matrix.conj.t # aliases for matrix.conjugate.tranpose |
|||
print 'conjugate tranpose: '; puts conjt |
|||
if matrix.square? |
|||
# These predicates appeared in Ruby 1.9.3. |
|||
print 'Hermitian? '; puts matrix.hermitian? |
|||
print ' normal? '; puts matrix.normal? |
|||
print ' unitary? '; puts matrix.unitary? |
|||
else |
|||
# Matrix is not square. These predicates would |
|||
# raise ExceptionForMatrix::ErrDimensionMismatch. |
|||
print 'Hermitian? false' |
|||
print ' normal? false' |
|||
print ' unitary? false' |
|||
end</lang> |
Revision as of 19:24, 30 January 2012
Conjugate transpose is a draft programming task. It is not yet considered ready to be promoted as a complete task, for reasons that should be found in its talk page.
Suppose that a matrix contains complex numbers. Then the conjugate transpose of is a matrix containing the complex conjugates of the matrix transposition of .
This means that row , column of the conjugate transpose equals the complex conjugate of row , column of the original matrix.
In the next list, must also be a square matrix.
- A Hermitian matrix equals its own conjugate transpose: .
- A normal matrix is commutative in multiplication with its conjugate transpose: .
- A unitary matrix has its inverse equal to its conjugate transpose: . This is true iff and iff , where is the identity matrix.
Given some matrix of complex numbers, find its conjugate transpose. Also determine if it is a Hermitian matrix, normal matrix, or a unitary matrix.
- MathWorld: conjugate transpose, Hermitian matrix, normal matrix, unitary matrix
Ruby
<lang ruby>require 'matrix'
- Start with some matrix.
i = Complex::I matrix = Matrix[[i, 0, 0],
[0, i, 0], [0, 0, i]]
- Find the conjugate transpose.
- Matrix#conjugate appeared in Ruby 1.9.2.
conjt = matrix.conj.t # aliases for matrix.conjugate.tranpose print 'conjugate tranpose: '; puts conjt
if matrix.square?
# These predicates appeared in Ruby 1.9.3. print 'Hermitian? '; puts matrix.hermitian? print ' normal? '; puts matrix.normal? print ' unitary? '; puts matrix.unitary?
else
# Matrix is not square. These predicates would # raise ExceptionForMatrix::ErrDimensionMismatch. print 'Hermitian? false' print ' normal? false' print ' unitary? false'
end</lang>