- ベストアンサー
det(zI-A)=0をMATLAB以外で解く方法
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
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.に戻る という手順を繰り返せば、全ての解を求めることができるかと思います。
その他の回答 (1)
- qqtester
- ベストアンサー率66% (10/15)
たぶん、固有値の計算ですね。MATLABはべんりですよね。 7次の固有値計算のプログラムを自分で作ると結構大変だとおもいます。 行列Aの性質にもよるのでしょうが。 (私には大変でした。) なので、何かのライブラリ使った方が良いのではないでしょうか。 フリーのものならlapackとかGNU GSLとかliboctaveなどがあります。 もちろん商用のライブラリもあります。 例えば、GNU GSLのインストールの仕方が以下のURLにあります。 http://www.tmps.org/index.php?GNU%20Scientific%20Library%20for%20Windows
関連するQ&A
- MATLABとC++
こんにちわ。資料を参考にしつつMATLABからC言語へ変換する作業をしているのですが、どちらに関しても初心者レベルで遅々としてはかどりません…。 分からないことの一つとして、MATLABは行列計算がしやすいがC言語はそうではないということからなのですが、MATLABで A = zeros(10,20,30) というのは次元10×20×30をもつゼロ行列 ということは分かったのですが、これは 数学で習う行列、2×2 や3×3など二次元な数字の並びを、三次元にまで拡張した表し方ということでしょうか?? また、上の式をC言語で書き表すとすると どのように書き表せるのでしょうか?どなたか分かるかた 教えていただければと思います。
- ベストアンサー
- C・C++・C#
- C言語→MATLABへの変換で、困っています。
学生研究でMATLABを使用しています。 光学測定系で画像を取り込み、それを解析する実験を行っています。 MATLABはプログラム内の値の変更や処理の追加できることから 大変助かっています。 そこで、もともとはC言語でやっていた3種類の処理を 一つのMファイルで行いたいと思い。 只今、C→MATLAB変換するプログラムの書き直しを行っています。 そのうち2種のプログラムは行列の計算がメインだったため何とか Mファイルに書き直すことができたのですが、 最後のひとつが難しい関数らしきものが多く、 MATLABに書き直すことができるプログラムなのかもわからない状態です。 そこで、 ・C→MATLAB変換可能なプログラムか? ・書き直すにあたってどこを部分を直せばよいのか? をアドバイスいただけないでしょうか? ↓MATLAB化したいC言語ファイル http://karispace.web.fc2.com/cmat2.c 一枚のbmp画像から4枚のdatデータを出力するプログラムです。 C言語とMATLABの三ヶ月前に勉強して、使用しており、基礎がわかる程度です。 よろしくお願いします。
- 締切済み
- その他(プログラミング・開発)
- matlabにおいて、
matlabにおいて、 [(-Q*A) (Q*A) (-Q*A^2) (Q*A^2) ....(Q*A^29)]のような行列を、 for i = 1:29 のみたいな感じのもので表現できますでしょうか。 それかほかにもっといい表現の仕方はありますか? ちなみにQもAも2行2列の行列です。
- 締切済み
- 物理学
- MATLABプログラミングをCのプログラミングに変換
MATLABでよくやる以下のプログラミング方法を効率よくCでプログラムするにはどうすべきですか? a=[]; for i = 1:100 a_k = [1 2 3 4];<<-a_kは1行4列の行列です a = [a a_k];<<-特にこの部分 end よろしくお願いします。
- 締切済み
- C・C++・C#
- MATLABでのプログラミングについて
はじめまして。 当方MATLAB初心者です。プログラムをどう組み込めばよいのかよく分かりません。 MATLABでPSO(粒子群最適化)のアルゴリズムを取り入れてシミュレーションを行ないたいと思っているのですが、 m-fileに直接書き込むにしても条件分岐などがあるので、どう書いたらいいのかよく分かりません。 C言語などで別に書いたプログラムを組み込んだりできるのでしょうか? 大学では制御の分野を学んでいるのですがMATLABにはほとんど触れた事がないです、質問もわかりにくいかも知れませんが、ご存知の方がいらっしゃるなら教えていただきたいです。
- ベストアンサー
- 数学・算数
- MATLABプログラミングで質問
MATLABでプログラムを作っているのですが、 C言語のプログラムのように for文のなかで*=や+=のような処理をしたいのですがやり方が分かりません。どなたか教えてください。
- ベストアンサー
- その他(プログラミング・開発)
- 留数が射影行列となる事の証明が
宜しくお願い致します。 A∈C^{n×n},Iはn次単位行列,λjはAの固有値,j=1,2…,k≦nでγ_jはλ_jのみを内部含むJordan閉曲線とする時, λ_jは(zI-A)^-1の極となっているので Res_{z=λ_j}[(zI-A)^-1]=1/(2πi)∮_{γ_j}(zI-A)^-1dzが成り立ちますよね。 この時,更に, P_j=1/(2πi)∮_{γ_j}(zI-A)^-1dzも成り立つそうなのですがどうすれば示せますでしょうか? (但し,Σ_{j=1..k}P_j=I, Σ_{j=1..k}λ_jP_j=A)
- 締切済み
- 数学・算数
- MATLABにおける行の挿入方法
こんにちは,現在データ整理のためにMATLABを用いて以下のようなプログラムを構築しています 1.ファイルを読み,その値を100行7列の行列Aとする 2.Aの10行目と11行目の間に1行7列の行列B1を挿入する (イメージ的にはEXCELの行の挿入です) 3.同様に20行目と21行目の間に1行7列の行列B2を挿入する 4.以降10行ごとに繰り返す となります.ここで2の処理にあたる「行列の特定の列の間に別の行列を挿入する」方法がわかりません いろいろ調べたのですが、このような方法はどこにもありませんでした MATLABに詳しい方,教えていただけないでしょうか?
- 締切済み
- その他(プログラミング・開発)
- matlabについての質問です。
matlabについての質問です。matlab初心者です。 3つ以上のデータ列について相関係数を求めるプログラムを教えてください。 イメージとしては データ列a b cについて a b c a 1 b 0.2 1 c 0.8 0.4 1 このような結果が出るようなプログラムを書きたいです。 わかるかた、回答宜しくお願いします。
- 締切済み
- 電気・電子工学
- MATLABのfor文の使い方について
MATLAB(というかプログラム)初心者です 下記を教えてください よろしくお願いいたします 「つくりたいプログラム」 y1=[A B C] y2=[D E F] ・ ・ ・ y200=[AA BB CC] 上記のような200個くらいある行列に同じ操作をしたいです そこでいちばん簡単な構造を考えました ////////////////////// y1=[A B C] y2=[D E F] for i=1:2 Yi=yi*5 end ///////////// 成功イメージは Y1=[5A 5B 5C] Y2=[5D 5E 5F] となってほしいのですが回りません・・・ yiの定義のしかたがわからず困っております 初歩的な質問かもしれませんが教えてくださいよろしくお願いいたします
- ベストアンサー
- その他(プログラミング・開発)
お礼
ありがとうございます。頑張ってやってみます。休日を挟んでも分からなかったらまたヒントを下さい。