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