練習問題メモ 24(対称行列の対角化)#
問1#
次の対称行列
ただし、 の固有値 が (重解) 14 で、それぞれの
固有値に対する固有空間が
であることを用いてよい。
まず固有値を求める
よって
続いて、固有ベクトルを求める。
よって
と表すことができる。固有空間は
となる。
よって
と表すことができる。固有空間は
となる。
固有値
とおく。
であり
より
により
個別に直交化する例
(これがいいのかはわからんが、対角化はできる)
により
import sympy as sp
x1 = sp.Matrix([-2,1])
x2 = sp.Matrix([1,2])
A = sp.Matrix([
[3, 2],
[2, 6],
])
p1 = x1 / x1.norm()
c = x2.T @ p1
v2 = (x2 - c[0]*p1)
p2 = v2 / v2.norm()
P = sp.Matrix([p1, p2]).reshape(2, 2).T
P
P.inv() @ A @ P
P = sp.Matrix(sp.GramSchmidt([x1, x2])).reshape(2,2).T
P
P.inv() @ A @ P
ただし、 の固有値 が (重解) 14 で、それぞれの
固有値に対する固有空間が
であることを用いてよい。
固有ベクトルとして
を用いる。
これらを直交化したベクトルを
(1)
import sympy as sp
x1 = sp.Matrix([-2,1,0])
x2 = sp.Matrix([-3,0,1])
x3 = sp.Matrix([1,2,3])
p1 = x1 / x1.norm()
p1
(2)
c = (x2.T @ p1)[0]
p2 = (x2 - c * p1) / (x2 - c * p1).norm()
p2
(3)
なので
により
p3 = x3 / x3.norm()
p3
P = sp.Matrix([p1, p2, p3]).reshape(3, 3).T
P
P.inv()
A = sp.Matrix([
[1,2,3],
[2,4,6],
[3,6,9]
])
P.inv() @ A @ P
P = sp.Matrix(sp.GramSchmidt([x1,x2,x3], orthonormal=True)).reshape(3,3).T
P
簡易版
相異なる固有値に属する固有ベクトルたちは1次独立であり、別々に直交化できるため、ノルム
を用いて
とおく。これらを列ベクトルにもつ行列を
import sympy as sp
a1 = sp.Matrix([-2,1,0])
a2 = sp.Matrix([-3,0,1])
a3 = sp.Matrix([1,2,3])
p1 = a1 / a1.norm()
p2 = a2 / a2.norm()
p3 = a3 / a3.norm()
P = sp.Matrix([p1, p2, p3]).reshape(3, 3).T
P
P.inv()
A = sp.Matrix([
[1,2,3],
[2,4,6],
[3,6,9]
])
P.inv() @ A @ P
Matrices (linear algebra) - SymPy 1.13.3 documentation
Gram–Schmidt process - Wikipedia
import sympy as sp
a1 = sp.Matrix([-2,1,0])
a2 = sp.Matrix([-3,0,1])
a3 = sp.Matrix([1,2,3])
P = sp.Matrix(sp.GramSchmidt([a1,a2,a3])).reshape(3,3).T
P
P.inv() @ A @ P
補足:対称行列の対角化の応用例
実数を係数とする
は2次曲線とも呼ばれ、
と表される。ここで、行列
で表される。ただし、
問2#
直交行列の固有値は絶対値 1 の複素数であることを示せ。
のノルムを取ると
よって
固有値は一般には複素数となるため、直交行列の固有値は絶対値1の複素数である