• ベストアンサー

det(zI-A)=0をMATLAB以外で解く方法

MATLABを使わずに|zI-A|=0を求めるプログラムを組みたいのですが可能でしょうか?できればC言語系でお願いします。ちなみにAは7×7の行列でIはその単位行列、zは未定定数です。定数だけのものなら書けるのですが。可能であるならサンプルないし考え方も教えてくださると助かります。

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

  • ベストアンサー
  • foobar
  • ベストアンサー率44% (1423/3185)
回答No.1

Aの要素が数値(実数)で、これをzについて数値的に解く、 というのなら比較的楽(?)にできるかと思います。 考え方としては |zI-A|=0を,zの多項式=0,の形に変形し、 多項式の解を求めるプログラムを作ることになるかと思います。 解を求める方法としては、 1. zの多項式=0を満たす二次の式(z^2+qz+r=0)の係数p,qを繰り返し計算で求める。 2. 二次の式からzが二つ計算できる。 3. 元の多項式をz^2+qz+rで割れば、次数が2減った多項式になる。 1.に戻る という手順を繰り返せば、全ての解を求めることができるかと思います。

aaatex
質問者

お礼

ありがとうございます。頑張ってやってみます。休日を挟んでも分からなかったらまたヒントを下さい。

その他の回答 (1)

  • qqtester
  • ベストアンサー率66% (10/15)
回答No.2

たぶん、固有値の計算ですね。MATLABはべんりですよね。 7次の固有値計算のプログラムを自分で作ると結構大変だとおもいます。 行列Aの性質にもよるのでしょうが。 (私には大変でした。) なので、何かのライブラリ使った方が良いのではないでしょうか。 フリーのものならlapackとかGNU GSLとかliboctaveなどがあります。 もちろん商用のライブラリもあります。 例えば、GNU GSLのインストールの仕方が以下のURLにあります。  http://www.tmps.org/index.php?GNU%20Scientific%20Library%20for%20Windows

関連するQ&A