2017-03-02 4 views
1

私はMathematicaで反応速度論の解析的解法を実装しようとしています。Eigensystem Wolfram Mathematicaで並べ替え

数値的には問題ありませんが、象徴的な形では、「正しい」結果を得るために、EigenVectorsの列を手作業で並べ替える必要があります。

たとえば、www.biokin.com/tools/pdf/Koro11-Kinetics-Maple-Chap2.pdfの41-44ページを確認してください。

ページ43 {vals,vect}=Eigensystem[K]上の例で指摘したように、私は行列

K={{-k1 - k2, 0, 0, 0}, {k1, 0, 0, 0}, {k2, 0, -k3, k4}, {0, 0, k3, -k4}} 

を使用していますが異なる答えを与えます。

私の最終的な解決策vect.DiagonalMatix[Exp[vals]].Inverse[vect]は混乱です。

象徴的な形で答えを並べ替える方法はありますか?あるいは、固有値と固有ベクトルを配置しないようにMathematicaを "強制"する方法はありますか?

答えて

1

固有値と固有ベクトルのソートは完全に任意ですが、重要な部分は適切なものを一緒に得ることです。

vectは固有ベクトルのリストです。固有ベクトルのリストは行列を固有ベクトルとする行列ですが、列が固有ベクトルである行列が必要です。これを修正するにはTransposeを使用してください。あなたがこれを実行したら、あなたが同時に並べ替える場合は、固有ベクトルと固有値は何も変わりません:http://mathematica.stackexchange.com

randsamp = RandomSample[Range[4]]; 
vals[[randsamp]] 
[email protected][[randsamp]].DiagonalMatrix[Exp[vals[[randsamp]] t]].Inverse[ 
    [email protected][[randsamp]]] // Simplify 

はまた、Mathematicaのための特定のスタック交換サイトがあります

関連する問題