关于排序:Wolfram Mathematica 中的特征系统排序

Eigensystem Sort in Wolfram Mathematica

我正在尝试在 Mathematica 中实现一种反应动力学分析解的方法。

在数值上这不是问题,但在符号形式中,必须手动重新排列特征向量列以获得"正确"结果。

例如,请查看 www.biokin.com/tools/pdf/Koro11-Kinetics-Maple-Chap2.pdf,第 41-44 页。

我正在使用矩阵

1
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,而不是排列特征值和特征向量?


特征值和特征向量的排序完全是任意的,重要的是你把正确的放在一起。

您的代码的问题是 vect 是特征向量的列表,当您将其用作矩阵时,它是一个行是特征向量的矩阵,而您需要一个列是特征向量的矩阵。使用 Transpose 来解决这个问题。完成此操作后,如果同时置换特征向量和特征值,则没有任何变化:

1
2
3
4
randsamp = RandomSample[Range[4]];
vals[[randsamp]]
Transpose@vect[[randsamp]].DiagonalMatrix[Exp[vals[[randsamp]] t]].Inverse[
   Transpose@vect[[randsamp]]] // Simplify

还有一个特定的 Mathematica 堆栈交换站点:http://mathematica.stackexchange.com