固有値、固有ベクトル、スペクトル分解、特異値分解、コレスキー分解
プログラム
#include<oxstd.h> main() { decl A,lambda,P; A=<1,2;2,10>; print("A=",A); eigen(A,&lambda,&P); // eigensym can also be used. print("eigenvalues of A:",lambda); print("eigenvectors of A:", P); P[ ][0]/=sqrt(sumsqrc(P[ ][0])); P[ ][1]/=sqrt(sumsqrc(P[ ][1])); print("eigenvectors(length=1) of A:", P); // Check PP'=I print("P'P=",P'P); // Singular Value Decomposition decl U,W,V; decsvd(A, &U, &W, &V); print("U=",U,"W=",W,"V=",V); print("UVW'=",U*diag(W)*V'); // Choleski Decomposition decl L; L=choleski(A); print("L=",L, "LL'=",L*L'); }
計算結果
A= 1.0000 2.0000 2.0000 10.000 eigenvalues of A: 0.57557 10.424 eigenvectors of A: 1.0000 0.21221 -0.21221 1.0000 eigenvectors(length=1) of A: 0.97822 0.20759 -0.20759 0.97822 P'P= 1.0000 0.00000 0.00000 1.0000 U= -0.20759 -0.97822 -0.97822 0.20759 W= 10.424 0.57557 V= -0.20759 -0.97822 -0.97822 0.20759 UVW'= 1.0000 2.0000 2.0000 10.000 L= 1.0000 0.00000 2.0000 2.4495 LL'= 1.0000 2.0000 2.0000 10.000