Wolfram Mathematica 中的特征系统排序
Eigensystem Sort in Wolfram Mathematica
我正在尝试在 Mathematica 中实现一种反应动力学解析解的方法。
在数值上这不是问题,但在符号形式中,必须手动重新排列 EigenVectors 的列才能获得 "right" 结果。
请检查 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]
一团糟。
有没有办法对符号形式的答案进行排序?或者如何"force" Mathematica,而不是排列特征值和特征向量?
特征值和特征向量的排序完全是任意的,重要的是你把正确的放在一起。
您的代码的问题是 vect
是一个特征向量列表,当您将它用作矩阵时,它是一个矩阵,其行是特征向量,而您需要一个矩阵,其列是特征向量。使用 Transpose
来解决这个问题。完成此操作后,如果同时置换特征向量和特征值,则不会发生任何变化:
randsamp = RandomSample[Range[4]];
vals[[randsamp]]
Transpose@vect[[randsamp]].DiagonalMatrix[Exp[vals[[randsamp]] t]].Inverse[
Transpose@vect[[randsamp]]] // Simplify
还有一个特定的 Mathematica 堆栈交换站点:http://mathematica.stackexchange.com
我正在尝试在 Mathematica 中实现一种反应动力学解析解的方法。
在数值上这不是问题,但在符号形式中,必须手动重新排列 EigenVectors 的列才能获得 "right" 结果。
请检查 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]
一团糟。
有没有办法对符号形式的答案进行排序?或者如何"force" Mathematica,而不是排列特征值和特征向量?
特征值和特征向量的排序完全是任意的,重要的是你把正确的放在一起。
您的代码的问题是 vect
是一个特征向量列表,当您将它用作矩阵时,它是一个矩阵,其行是特征向量,而您需要一个矩阵,其列是特征向量。使用 Transpose
来解决这个问题。完成此操作后,如果同时置换特征向量和特征值,则不会发生任何变化:
randsamp = RandomSample[Range[4]];
vals[[randsamp]]
Transpose@vect[[randsamp]].DiagonalMatrix[Exp[vals[[randsamp]] t]].Inverse[
Transpose@vect[[randsamp]]] // Simplify
还有一个特定的 Mathematica 堆栈交换站点:http://mathematica.stackexchange.com