スポンサード リンク

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

スポンサード リンク
-- : -- : -- | スポンサー広告 | page top↑
スポンサード リンク

Scilab超入門 第3回 行列式/逆行列/固有値/固有ベクトルを求める関数

前回のエントリでScilabにおける行列の基本的な扱いを説明しましたので、今回は行列式/逆行列/固有値/固有ベクトルをそれぞれ求める関数を紹介します。

行列式 det(A)

行列式が0でない(正則)とき、その行列は逆行列を持ちます。

-->A = [ 1 2 ; 3 4]
 A  =
 
    1.    2.  
    3.    4.  
 
-->det(A)          
 ans  =
 
  - 2.  

逆行列 inv(A)

行列Aに対し、A*inv(A) = inv(A)*A = 単位行列E となる行列inv(A)を逆行列といいます。

-->inv(A)
 ans  =
 
  - 2.     1.   
    1.5  - 0.5  
 
-->A*inv(A)
 ans  =
 
    1.           0.  
    8.882E-16    1.  
 
-->inv(A)*A
 ans  =
 
    1.           0.  
    1.110E-16    1.  

A*inv(A)およびinv(A)*Aが2次の単位行列E = [ 1 0 ; 0 1 ]となっていないのは、計算の際に生じる誤差のためです。

固有値と固有ベクトル spec(A)

行列A、ベクトルxに対し、Ax=λxを満たすλ(スカラー値)を固有値、xを固有ベクトルといいます。

-->spec(A)
 ans  =
 
    5.3722813  
  - 0.3722813  

また、関数spec()を使うことで、固有値を並べた対角行列D = [ 5.3722813 0 ; 0 -0.3722813] と、固有ベクトルを並べた行列Pを求めることもできます。

-->[P D] = spec(A)
 D  =
 
    5.3722813    0          
    0          - 0.3722813  
 P  =
 
    0.4159736  - 0.8245648  
    0.9093767    0.5657675  
 
-->inv(P)*A*P
 ans  =
 
    5.3722813  - 4.087E-16  
  - 8.412E-16  - 0.3722813  

行列Aの固有値をλ1, λ2としたとき、対角行列D = [ λ1 0 ; 0 λ2 ]となっていることと、誤差を無視すればinv(P)*A*P=Dが成立していることが確認できます。

※注意
MATLABで固有値を求める関数eig(A)はScilabでは使えないので、代わりにspec(A)を使用してください。

Scilab超入門


スポンサード リンク

テーマ:プログラミング - ジャンル:コンピュータ - ソーシャルブックマーク: この記事をクリップ! Yahoo!ブックマークに登録

21 : 20 : 54 | プログラミング-Scilab | トラックバック(0) | コメント(0) | page top↑
<<Scilab超入門 第4回 ベクトルの大きさ/正規化/連結/等間隔のベクトル | ホーム | Scilab超入門 第2回 行列とベクトルの基本>>
コメント

コメントの投稿














管理者にだけ表示を許可する

トラックバック
トラックバックURL
http://networkprogramming.blog18.fc2.com/tb.php/47-66ca1e3a
この記事にトラックバックする(FC2ブログユーザー)
| ホーム |

プロフィール

TBVector

Author:TBVector

プロフィール

メールフォーム

記事検索

Google

最近の記事

人気の記事

過去の記事

カテゴリー

タグランキング

リンク

最近のコメント

最近のトラックバック

アクセスカウンタ

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。