我尝试了以下操作-符号矩阵的平方根。我对sympy的能力印象深刻。如果您在末尾注意到,矩阵的平方根将处于相当不可思议的状态-平方根都可以消失,并且元素可以很好地简化。有没有办法让sympy为我们做这种简化?
import sympy as sp
a, b, c = sp.symbols("a b c")
m = sp.Matrix([
[a**2 + b**2, 0, 2*a*b],
[0, c**2, 0],
[2*a*b, 0, a**2 + b**2]
])
m**(1/2)
您可以这样简化:
In [8]: sqrt(m).doit().factor(deep=True)
Out[8]:
⎡ __________ __________ __________ __________⎤
⎢ ╱ 2 ╱ 2 ╱ 2 ╱ 2 ⎥
⎢ ╲╱ (a - b) ╲╱ (a + b) ╲╱ (a - b) ╲╱ (a + b) ⎥
⎢ ───────────── + ───────────── 0 - ───────────── + ─────────────⎥
⎢ 2 2 2 2 ⎥
⎢ ⎥
⎢ ____ ⎥
⎢ ╱ 2 ⎥
⎢ 0 ╲╱ c 0 ⎥
⎢ ⎥
⎢ __________ __________ __________ __________ ⎥
⎢ ╱ 2 ╱ 2 ╱ 2 ╱ 2 ⎥
⎢ ╲╱ (a - b) ╲╱ (a + b) ╲╱ (a - b) ╲╱ (a + b) ⎥
⎢- ───────────── + ───────────── 0 ───────────── + ───────────── ⎥
⎣ 2 2 2 2 ⎦
声明符号为正数
a, b, c = sp.symbols("a b c", positive=True)
给予此
In [13]: sqrt(m).doit().factor(deep=True)
Out[13]:
⎡a + b + │a - b│ a + b - │a - b│⎤
⎢─────────────── 0 ───────────────⎥
⎢ 2 2 ⎥
⎢ ⎥
⎢ 0 c 0 ⎥
⎢ ⎥
⎢a + b - │a - b│ a + b + │a - b│⎥
⎢─────────────── 0 ───────────────⎥
⎣ 2 2 ⎦