(某月某日) 「対称行列
 
を実直交行列によって対角化せよ」という問題の答えの験算をする。
行列を入力して確認する。
| 
a={{0, 1, 1}, {1, 0, -1}, {1, -1, 0}}
MatrixForm[a]
 | 
固有値を求める。 Eigenvalues[] を使えば一発で求まるが、 特性多項式も計算しておこう。
| Eigenvalues[a] f[x_]:=Det[x IdentityMatrix[3] -a] f[x] Solve[f[x]==0,x] | 
 ,
,  (重根) であることが分かる。
 (重根) であることが分かる。
固有ベクトルは
| 
{v1,v2,v3}=Eigenvectors[a]
 | 
 
が求まるが、念のために固有値がそれぞれ
 ,
,  ,
,  であることを確認する。
 であることを確認する。
| a.v1 a.v1-(-2)v1 a.v2-1 v2 a.v3-1 v3 | 
 .
.
Gram-Schmidt の直交化法によって正規直交基底を求める。
| u1=v1/Norm[v1] u2=v2/Norm[v2] | 
 は(異なる固有値に属する固有ベクトルなので)
 は(異なる固有値に属する固有ベクトルなので)  とは直交しているので、単に正規化すれば良い。
とは直交しているので、単に正規化すれば良い。
 からは
 からは  成分を削除してから正規化する必要がある。
 成分を削除してから正規化する必要がある。
|  | ||
|  | 
| vv3=v3-v3.u2 u2 v2.vv3 u3=vv3/Nomr[vv3] | 
 
これを並べた行列
 を作って表示し、
 を作って表示し、
 を計算して固有値が対角線に並んだ対角行列になっていることを確認する。
 を計算して固有値が対角線に並んだ対角行列になっていることを確認する。
| 
u=Transpose[{u1,u2,u3}]
MatrixForm[u]
d=Simplify[Transpose[u].a.u]
MatrixForm[d]
 | 
 になった。
 になった。
桂田 祐史