- ベストアンサー
maximaの行列計算
maximaで行列の計算をしております。8次の正方行列の固有値を求めた際に、行列が対称行列に関わらず、固有値が虚数になってしまいます。maximaでは行列の計算は無理なのでしょうか?それとも、良い方法があるのでしょうか?教えて下さいます様、よろしくお願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#1です。 行列Aを入力後 fpprec:50$ B:eigenvalues(A); float(realpart(bfloat(B))); float(imagpart(bfloat(B))); を実行してみてください。 Bの固有値はカルダーノの3次方程式が使われているようで虚数単位「%i」が入っていて虚数のように見えますが、実際は実数です。 固有値の実数部、虚数部をとると実数部だけが求まります。 虚数部はMaximaの計算誤差のため出てくるものです。 非常に小さな10^(-49)以下の誤差が入っていますが実際はゼロのはずです(計算精度を上げて計算すれば虚数部の計算誤差はどんどん小さくなっていくかと思います。数値計算では計算誤差はつき物です。本当にゼロかは、計算精度を上げてゼロに近づいていくかで判断します)。 他の数式処理ソフトでも確認済みで、わずかな虚数部が出ます。
その他の回答 (2)
- Tacosan
- ベストアンサー率23% (3656/15482)
手元で試しましたが, この固有値は全て実数です.
お礼
わかりました。ありがとうございます
- info22
- ベストアンサー率55% (2225/4034)
やられたMaximaの8次の正方行列表現式を補足に貼り付けて下さい。 そうしていただかないとチェックできず回答できません。
補足
info22様 早速のお返事ありがとうございます。maximaには以下の様に打ち込みました。 A:matrix([727,0,0,-916,0,1073,-916,0],[0,1250,-1465,0,1194,0,0,-916],[0,-1465,1773,0,-1465,0,0,1073],[-916,0,0,1250,0,-1465,1194,0],[0,1194,-1465,0,1250,0,0,-916],[1073,0,0,-1465,0,1773,-1465,0],[-916,0,0,1194,0,-1465,1250,0],[0,-916,1073,0,-916,0,0,727]) よろしくお願い致します
お礼
なるほど!大変よくわかりました。早速、計算してみようと思います。本当に困っておりましたので、感謝致します。ありがとうございました。