2012-02-09 3 views
3

を掛けたとき、私はx注文d*cであり、ラムダが一定で、Aはオーダーd*dであるA*x=lambda*x、同じような問題を持っている同じ結果を与える行列を探します。 Aおよびlambdaは既知であり、マトリックスxは未知である。 matlabでこの問題を解決する方法はありますか? (固有値と同様ですが、xはベクトルではなくd*c行列です)。定数または別の行列

答えて

2

私が正しく理解していれば、必ずしもxの解決策はありません。 A*x=lambda*x場合、x満足A*y=lambda*yの任意の列yのでxの列は、単に固有値lambdaに対応Aの固有ベクトルであり、lambdaが実際に固有値である場合にのみ、任意のソリューションが存在することになります。 documentationから

[V、D] = EIG(A)は固有値の行列(D)と行列Aの固有ベクトル (V)を生成し、* D *のV = Vよう。行列Dは、 Aの正準形式です。主対角にAの固有値を持つ対角行列です。 行列Vは、モーダル行列である - その列は、あなたがlambdaが固有値であるかどうかを確認するためにこれを使用すると、任意の対応する固有ベクトルを見つけることができますA.

の固有ベクトルです。

0

この問題を変えることができます。 x(:)(サイズがd * c x 1)を使ってxをベクトルとして書く。次に、Aは対角に沿ってAのcバージョンを有するd * c x d * c行列に書き直すことができる。

これは単純な固有値問題です。

0

実際には些細なことです。あなたの要件は、A * X =ラムダ* Xです.Xは配列です。事実上、X.配列Xが存在する場合は、単一の列に何が起こるかを見て、それが真実であること

A * X(:、i)は=ラムダ* X(:、i)は

そして、これは、Xのすべての列についてのラムダのSAME値について真でなければならない。これは、X(:i)がAの固有ベクトルであり、対応する固有値λを有することを意味する。さらに重要なのは、Xのすべての列が他のすべての列と同じ固有値を持つことを意味します。

したがって、この問題の簡単な解決策は、列がAの固有ベクトルである限り、同じ列を持つ行列Xを単純に持つことです。固有値が1より大きい多重度を持つ場合(したがって、同じ固有値)なら、Xの列はこれらの固有ベクトルの任意の線形結合であってもよい。

実際に試してみてください。私たちは、任意の任意の定数で固有ベクトルを拡張することができます。5.の固有値で、Vの2番目の列は固有ベクトルでいくつかの簡単な行列A

>> A = [2 3;3 2]; 
>> [V,D] = eig(A) 
V = 
    -0.70711  0.70711 
     0.70711  0.70711 
D = 
      -1   0 
      0   5 

を選ぶでしょう。今度はベクトルvecを選択し、複製された列を持つ行列を作成します。

>> vec = [1;1]; 
>> A*[vec,vec,vec] 
ans = 
    5  5  5 
    5  5  5 

これは誰も驚かないでしょう。

関連する問題