繁体   English   中英

Sympy符号矩阵指数

[英]Sympy Symbolic Matrix Exponential

我正试图找出,如果我能以某种方式找到符号矩阵的封闭形式的矩阵指数:

n=3;
a = symbols(['a'+str(1+k) for k in range(n)], real=True);
Ts = symbols('T_s',real=True,positive=True);
A = Matrix([zeros(1,n),eye(1,n),a])

然而

expm(A)

似乎不起作用,“TypeError:无法从a1创建mpf”! 然后我尝试使用系列扩展进行估算,但同样:

Sum(A**n, (n, 0, 1))

给出:“ValueError:Matrix det == 0;不可逆”。 我猜他们试图通过joran块来获得矩阵的力量,而我的结构对此并不好。 我怎么能继续? A**2可以计算,但A**1A**0不是?!

方法expm属于mpmath库,由SymPy用于数值计算。 它仅适用于数值矩阵。

SymPy使用exp进行矩阵求幂 我建议使用它simplify ,因为矩阵的exp输出比它可能更复杂。 简化的结果, simplify(exp(A)) ,是

Matrix([
[                                          1,                   0,       0],
[                                          1,                   1,       0],
[(-a2*a3 + (a1*a3 + a2)*(exp(a3) - 1))/a3**2, a2*(exp(a3) - 1)/a3, exp(a3)]])

如果希望计算exp(A)的幂级数的部分和,则不这样做

Sum(A**n / factorial(n), (n, 0, 5))

因为上面将尝试在插入特定值之前将A提升为符号幂n。 将矩阵提升为符号功率仅针对可逆A实现; 很难想象不可逆转的应该是什么。 相反,使用Python的sum ,给它一个零矩阵作为累加器的初始值

sum([A**n / factorial(n) for n in range(6)], zeros(*(A.shape)))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM