• ベストアンサー

maximaの行列計算

maximaで行列の計算をしております。8次の正方行列の固有値を求めた際に、行列が対称行列に関わらず、固有値が虚数になってしまいます。maximaでは行列の計算は無理なのでしょうか?それとも、良い方法があるのでしょうか?教えて下さいます様、よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • info22
  • ベストアンサー率55% (2225/4034)
回答No.3

#1です。 行列Aを入力後 fpprec:50$ B:eigenvalues(A); float(realpart(bfloat(B))); float(imagpart(bfloat(B))); を実行してみてください。 Bの固有値はカルダーノの3次方程式が使われているようで虚数単位「%i」が入っていて虚数のように見えますが、実際は実数です。 固有値の実数部、虚数部をとると実数部だけが求まります。 虚数部はMaximaの計算誤差のため出てくるものです。 非常に小さな10^(-49)以下の誤差が入っていますが実際はゼロのはずです(計算精度を上げて計算すれば虚数部の計算誤差はどんどん小さくなっていくかと思います。数値計算では計算誤差はつき物です。本当にゼロかは、計算精度を上げてゼロに近づいていくかで判断します)。 他の数式処理ソフトでも確認済みで、わずかな虚数部が出ます。

aroron
質問者

お礼

なるほど!大変よくわかりました。早速、計算してみようと思います。本当に困っておりましたので、感謝致します。ありがとうございました。

その他の回答 (2)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

手元で試しましたが, この固有値は全て実数です.

aroron
質問者

お礼

わかりました。ありがとうございます

  • info22
  • ベストアンサー率55% (2225/4034)
回答No.1

やられたMaximaの8次の正方行列表現式を補足に貼り付けて下さい。 そうしていただかないとチェックできず回答できません。

aroron
質問者

補足

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]) よろしくお願い致します

関連するQ&A