2

次の形式の行列の記号固有値とベクトルを計算しようとしています

[ a, c, 0]
[ c, b, e]
[ 0, e, f]

matlab で (a、b、c などを x、y、z を含むいくつかの式に置き換えます)。対角外項 0 が 4 つあれば、プログラムは成功です。しかし、行列が 2 つの非対角要素ゼロしか持たない場合 (例のように)、プログラムは固有ベクトルを見つけることができませんが、固有ベクトルを見つけることができます (これは 3 次多項式であるため予想されます)。もちろん、固有値の式は非常に多忙です。そして、固有ベクトルを計算しようとすると、エラーが発生します

Warning: basis of eigenspace for eigenvalue - 1/2*((c^2*d^2*e^2 -...
Error: Unable to find eigenvectors. [mleigenvectors]
Error in ==> sym.eig at 74
S = mupadfeval('mleigenvectors',A);

私はmatlab R2009aを使用しています。これは、たとえば R2009b またはそれ以上のサーバーで解決できる問題ですか、それとも多くの計算を試すだけですか? 上記の行列から LI (ここで、K は固有値 I は id 行列) を減算して固有ベクトル方程式を解こうとすると、手で解いて L を含む式を取得することもできるため、これは妥当とは思えません。 a、b、c、e、f、g。次に、ラムダの式を単純に入力するだけです。ただし、もちろん結果は非常に長くなるため、これはメモリの問題でしょうか?

ありがとう

4

1 に答える 1

0

2012a と 2010a の 32 ビットでテストしましたが、どちらも問題なく動作しました。

興味深いことに、2012a は 0.2 秒、2010a は 0.3 秒かかりました。以下が機能しない場合は、シンボリック処理を大幅に更新するため、内部バグが疑われます。

tic; syms a c b e f; A=[a c 0;c b e;0 e f]; [V,D]=eig(A); toc;

検索により、これは 2008 年の問題であることが確認されました...

http://www.mathworks.com/matlabcentral/newsreader/view_thread/263921

実際、Steven、この場合、多項式は 3 次に単純化されます。Matlabシンボリックは固有値を正常に検出しますが、固有ベクトルで失敗します(私のMatlab 2008bを使用)

EDU>> 値 = eig(A); EDU>> 簡素化 (値)

ans =

(too long to show)

しかし、ベクトルは失敗します:

EDU>> [ベクトル、値]=eig(A); 警告: 固有値の固有空間の基底 1/3*a + 1/3*b + 1/3*c + (4/9*a^2 - 1/9*a*b - 1/9*a*c + 1/9*b^2 + 2/9*b*c + 1/9*c^2)/(4/9*a*b^2 + 1/9*a^2*b - 1/18* a*c^2 + 1/9*a^2*c - 7/18*b*c^2 + 1/9*b^2*c - 8/27*a^3 + 1/27*b^ 3 + 1/27*c^3 + (- 1/3*a^4*b^2 - 10/27*a^4*b*c - 1/27*a^4*c^2 + 1/ 9*a^3*b^3 + 2/9*a^3*... [linalg::eigenvectors] ??? Error using ==> mupadfeval at 28 Error: Unable to find eigenvectors. [mleigenvectors]

==> sym.eig のエラー 74 S = mupadfeval('mleigenvectors',A);

Mathematica で同じことを試してみたところ、固有ベクトルが見つかりました(これは正しいと思います;)。結果は次のとおりです(大きすぎてここにも投稿できません)

于 2012-12-09T05:33:17.880 に答える