まず、 を使用して (4000x4000) 行列の固有値を見つけますnumpy.linalg.eigvalsh
。次に、固有値のわずかな変化のみを期待して、境界条件を変更します。
固有値を減算すると、浮動小数点エラーが発生しやすくなるため、相対許容誤差を使用しました。
ここで、固有値A = 1.0001e-10
と別のがあるとしB = 1.0050e-10
ます。浮動小数点演算に関する私のささやかな知識によると、A - B != 0
. 問題は、これらの数値が何桁もの線形代数計算に由来することです。他の固有値は、たとえば次数である可能性があります1
。
問題は、 を使用して計算された固有値の精度はどのくらいかということnumpy.linalg.eigvalsh
です。この精度は値 ( A * eps
) に対して相対的ですか、それとも最大の固有値に対して相対的ですか? それとも元のマトリックスの要素に相対的ですか?
たとえば、次のマトリックス:
1 1e-20
1e-20 3
これと同じ固有値を与える:
1 1e-5
1e-5 3