2017-03-02 85 views
1

我試圖在Mathematica中實現反應動力學解析解法。Eigensystem排序Wolfram Mathematica

在數字上它不是一個問題,但在符號形式中,必須重新排列EigenVectors的手動列以獲得「正確」結果。

例如,請檢查www.biokin.com/tools/pdf/Koro11-Kinetics-Maple-Chap2.pdf,第41-44頁。

我使用的是矩陣

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

的例子指出,第43頁上{vals,vect}=Eigensystem[K]給出了不同的答案。

因此,我最終的解決方案vect.DiagonalMatix[Exp[vals]].Inverse[vect]是一團糟。

有沒有辦法在符號形式時對答案進行排序?或者如何「強制」Mathematica,而不是安排特徵值和特徵向量?

回答

1

特徵值和特徵向量的排序完全是任意的,重要的部分是你將正確的特徵集合在一起。

您的代碼問題是vect是特徵向量的列表,當您將它用作矩陣時,其矩陣的行是特徵向量,而您需要矩陣的列是特徵向量。使用Transpose來解決這個問題。一旦你做到了這一點,如果你同時置換的特徵值和特徵值沒有任何變化:

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

也有對數學具體堆棧交換網站:http://mathematica.stackexchange.com

相關問題