• ベストアンサー

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

  • 対称行列への近似

    こんにちは. 自分は多次元の数値解析をしています. その際に固有値,固有ベクトルを使用するのですが,その対象となる行列が対称行列ではない為,固有値が虚数解になってしまうため,後々の計算に不具合が生じてしまいます. そこで,その対象となる行列を対称行列に近似(虚数解を出さないようにする為)しようと思うのですが,なにかよい方法はありませんか? よろしくお願いします.

  • 対称行列 対角行列

    対角行列と対角化について質問させて頂きます。 対角行列は、対角成分以外が0の正方行列です。 対称行列は、t^A=Aが成り立つ正方行列Aです。 ここで、対称行列の定理で、 ・対称行列の異なる固有値に属する固有ベクトルは直交する。 というものがあるのですが、これは対角行列にも言えるのでしょうか? 対角行列は対称行列なので言えると思いますが、 テキストに特に記載がなかったので質問させて頂きました。 以上、ご回答よろしくお願い致します。

  • 行列の計算

    n次の正方行列があるのですがそれぞれの成分が 1/(i+j-1)と言う分数が並んだものです。 この行列の一番大きい固有値と一番小さい固有値の 比を計算したいのですがnが4くらいになると手計算の 限界なので何か良い方法はないでしょうか? 手計算ではなく何か別の手段でも何でも構いません。

  • maximaをより、効率的に使いたい!

    maximaで行列の固有値を求める計算をしております。固有値を求めた後、その対数とそれ自体の積を求めなくてはいけません。今は値をコピーし貼り付けるという単純な作業をやっておりますが、精度を上げることとなり(40~50桁),その様な場合、間違えないか不安です。maximaではそういった作業~ひとつの入力に対し、複数の出力がある場合、その結果に番号を振り、それらで新たな計算を容易に行うこと~は出来ますか?よろしくお願い致します。

  • 対称行列の対角化

    行列Aの固有値と固有ベクトルを求めよ。また、行列Aを対角化せよ。   (3 1 1) A=(1 2 0)   (1 0 2) っていう問題で、固有値1,2,4は出したんですけど、そこから普通に固有ベクトルを出して対角化しようとしたらうまくいきませんでした。 対称行列では何か特別な方法を使うんでしたっけ? Aは3次の正方行列です。 どなたかわかる方教えてください。

  • 行列計算

    A=[1 2;2 3]としたとき、A^50を簡単に計算せよ。という問題があります。 (a11=1 a12=2 a21=2 a22=3 ということです) Aは2次の正方対称行列になっていますが、そのことを利用するのでしょうか? よくわからないので、誰か教えてください

  • 歪対称行列について

    歪対称行列「J=-J^T(転置行列)∈R(n×n)」の固有値は0、または純虚数であることを示せ。 という問題です。 固有方程式を地道に解いていくことから始めるのは分かりますが、展開式の第2項以降がどうなるのか分かりません。 回答例をお願いします。

  • 線形代数 行列 対角化

    対角化について質問させて頂きます。 対角化とは、 「正方行列を適当な線形変換により、もとの行列と同値な 対角行列に帰着させること。」 と説明がありました。 ここで、同値とは具体的にどのような内容を指すのでしょうか? また、対角化を求める際、 正方行列Aに対してP^-1APとなる正則行列Pを求めます。 この正則行列Pは正方行列Aより求めた固有値に属する固有ベクトル を並べたものになりますが、これはなぜですか? なぜ、固有ベクトルを並べたものが正則行列Pになるのでしょうか? 以上、ご回答よろしくお願い致します。

  • 複素関数と行列の関係がわかりません

    「複素数zについて,√zが定められている.このとき,正方行列Aの固有値が,0および虚部が負の純虚数でなければ,√Aが定義できる.これは,Aの固有値を含む領域において正則なzの関数f(z)に対して,f(A)が定義できるためである.」ということを習いました. ここで,質問なのですが,「正方行列Aの固有値が,虚部が負の純虚数でない」という条件はなぜ必要なのでしょうか? √zについてz=rexp(iθ)と極形式で表示して,コーシーリーマンの関係式を調べると,z=0のときは,√zは正則ではないということがわかり,これが「Aの固有値が0でない」ことを要求する理由だと考えました. しかし,r≠0かつθ=-π/2の場合は,√zが正則であるため,Aの固有値として虚部が負の純虚数が存在していても,√Aが定義できると考えてしまいます. ご教授願います.

  • 行列

    A,B,C・・・をそれぞれ正方行列とします。 A,B,C・・・を対角に並べて、その他はすべて0の行列をX(正方行列)とします。 そのとき、Xの固有値を求めると、 A,B,C,・・・のそれぞれの固有値を求めたものをあわせたものに等しいことの証明を、 どなたかお願いします。