{{indexmenu_n>999}}
====== Tridiagonalize ======
###
Matrix.Tridiagonalize(M) returns the matrix in triple-diagonal form. The first element returned is a try-diagonal response function representing the matrix. The second element returned is a matrix that represents the unitary matrix that transforms the Hermitian matrix M to try-diagonal form. Possible options include
###
* BlockSize - the size of the blocks in the tri-diagonal matrix
* NTri - the maximal number of tridiagonal blocks
* SingularValue - the minimum singular value that is considered to be different from 0 of Matrix M.
===== Example =====
==== Input ====
M = Matrix.New({{1,1,1,1,1,1},
{1,1,2,3,4,5},
{1,2,3,4,8,6},
{1,3,4,5,6,7},
{1,4,8,6,7,8},
{1,5,6,7,8,1}})
G1, U1 = Matrix.Tridiagonalize(M,{{"BlockSize",1}})
G2, U2 = Matrix.Tridiagonalize(M,{{"BlockSize",2}})
print("The matrix M in tri-diagonal form is")
print(ResponseFunction.ToMatrix(G1))
print("The unitary matrix U1 that transforms M to tridiagonal form is given as")
print(U2)
print("And if we look at U^**M*U^T we get")
print(Chop(U1*M*Matrix.Transpose(U1)))
print("The matrix M in Block tri-diagonal form is")
print(ResponseFunction.ToMatrix(G2))
print("The unitary matrix U2 that transforms M to tridiagonal form is given as")
print(U2)
print("And if we look at U^**M*U^T we get")
print(Chop(U2*M*Matrix.Transpose(U2)))
==== Result ====
The matrix M in tri-diagonal form is
{ { 1 , -2.2361 , 0 , 0 , 0 , 0 } ,
{ -2.2361 , 24.6 , 5.8515 , 0 , 0 , 0 } ,
{ 0 , 5.8515 , -0.7402 , -2.334 , 0 , 0 } ,
{ 0 , 0 , -2.334 , -2.4962 , 2.2758 , 0 } ,
{ 0 , 0 , 0 , 2.2758 , -3.2905 , 2.162 } ,
{ 0 , 0 , 0 , 0 , 2.162 , -1.0732 } }
The unitary matrix U1 that transforms M to tridiagonal form is given as
{ { 1 , 0 , 0 , 0 , 0 , 0 } ,
{ 0 , 1 , 0 , 0 , 0 , 0 } ,
{ 0 , 0 , 0.8328 , 0.4502 , 0.0676 , -0.315 } ,
{ 0 , 0 , 0.0805 , 0.312 , 0.5435 , 0.7751 } ,
{ 3e-17 , 0 , 0.4415 , -0.8303 , 0.3361 , 0.0527 } ,
{ -8e-17 , 0 , -0.3242 , 0.1032 , 0.7662 , -0.5452 } }
And if we look at U^**M*U^T we get
{ { 1 , -2.2361 , 0 , 0 , 0 , 0 } ,
{ -2.2361 , 24.6 , 5.8515 , 0 , -3e-15 , 0 } ,
{ 0 , 5.8515 , -0.7402 , -2.334 , 0 , 0 } ,
{ 0 , 0 , -2.334 , -2.4962 , 2.2758 , 0 } ,
{ 0 , -3e-15 , 0 , 2.2758 , -3.2905 , 2.162 } ,
{ 0 , 0 , 0 , 0 , 2.162 , -1.0732 } }
The matrix M in Block tri-diagonal form is
{ { 1 , 1 , 1.0355 , 1.7111 , 0 , 0 } ,
{ 1 , 1 , 1.7111 , 7.1465 , 0 , 0 } ,
{ 1.0355 , 1.7111 , 2.0149 , 11.884 , 1.062 , 0.4744 } ,
{ 1.7111 , 7.1465 , 11.884 , 16.985 , 0.4744 , 3.0368 } ,
{ 0 , 0 , 1.062 , 0.4744 , 0.8681 , 0.9176 } ,
{ 0 , 0 , 0.4744 , 3.0368 , 0.9176 , -3.8681 } }
The unitary matrix U2 that transforms M to tridiagonal form is given as
{ { 1 , 0 , 0 , 0 , 0 , 0 } ,
{ 0 , 1 , 0 , 0 , 0 , 0 } ,
{ 0 , 0 , 0.8328 , 0.4502 , 0.0676 , -0.315 } ,
{ 0 , 0 , 0.0805 , 0.312 , 0.5435 , 0.7751 } ,
{ 0 , 0 , 0.4415 , -0.8303 , 0.3361 , 0.0527 } ,
{ 0 , 0 , -0.3242 , 0.1032 , 0.7662 , -0.5452 } }
And if we look at U^**M*U^T we get
{ { 1 , 1 , 1.0355 , 1.7111 , 0 , 0 } ,
{ 1 , 1 , 1.7111 , 7.1465 , 0 , 0 } ,
{ 1.0355 , 1.7111 , 2.0149 , 11.884 , 1.062 , 0.4744 } ,
{ 1.7111 , 7.1465 , 11.884 , 16.985 , 0.4744 , 3.0368 } ,
{ 0 , 0 , 1.062 , 0.4744 , 0.8681 , 0.9176 } ,
{ 0 , 0 , 0.4744 , 3.0368 , 0.9176 , -3.8681 } }
===== Table of contents =====
{{indexmenu>..:#2|tsort}}