Sympy limit simplification error: TypeError: cannot add 'ImmutableDenseMatrix' and 'Zero'
Sympy limit simplification error: TypeError: cannot add 'ImmutableDenseMatrix' and 'Zero'
我正在尝试使用 Sympy 评估和简化符号限制,但我一直收到错误提示我无法添加 ImmutableDenseMatrix
和 Zero
。但是,我似乎没有明确地执行任何带有 0(或另一个标量)的矩阵的添加。
如何修复这个错误并让 Sympy 简化限制?
from sympy import *
a = symbols('a')
m = Matrix([[0, -a],[a,0]])
I = Matrix([[1,0],[0,1]])
n = symbols('n', integer=True)
limit = Limit(MatPow(I + m/n, n), n, oo)
limit.doit() # The error can be triggered either by .doit()
simplify(limit) # or by running simplify() on the limit
"""
TypeError: cannot add <class 'sympy.matrices.immutable.ImmutableDenseMatrix'>
and <class 'sympy.core.numbers.Zero'>
您显示的错误看起来像是 sympy 中的错误(应该报告给 GitHub)。
虽然您可以稍微不同地计算结果:
In [1]: from sympy import *
...:
...: a = symbols("a")
...: m = Matrix([[0, -a], [a, 0]])
...: I = Matrix([[1, 0], [0, 1]])
...:
...: n = symbols("n", integer=True)
In [2]: M = (I + m / n) ** n
In [3]: M
Out[3]:
⎡ n n n n⎤
⎢ ⎛ ⅈ⋅a ⎞ ⎛ⅈ⋅a ⎞ ⎛ ⅈ⋅a ⎞ ⎛ⅈ⋅a ⎞ ⎥
⎢ ⎜- ─── + 1⎟ ⎜─── + 1⎟ ⅈ⋅⎜- ─── + 1⎟ ⅈ⋅⎜─── + 1⎟ ⎥
⎢ ⎝ n ⎠ ⎝ n ⎠ ⎝ n ⎠ ⎝ n ⎠ ⎥
⎢ ──────────── + ────────── - ────────────── + ────────────⎥
⎢ 2 2 2 2 ⎥
⎢ ⎥
⎢ n n n n ⎥
⎢ ⎛ ⅈ⋅a ⎞ ⎛ⅈ⋅a ⎞ ⎛ ⅈ⋅a ⎞ ⎛ⅈ⋅a ⎞ ⎥
⎢ⅈ⋅⎜- ─── + 1⎟ ⅈ⋅⎜─── + 1⎟ ⎜- ─── + 1⎟ ⎜─── + 1⎟ ⎥
⎢ ⎝ n ⎠ ⎝ n ⎠ ⎝ n ⎠ ⎝ n ⎠ ⎥
⎢────────────── - ──────────── ──────────── + ────────── ⎥
⎣ 2 2 2 2 ⎦
In [4]: M.limit(n, oo)
Out[4]:
⎡ ⅈ⋅a -ⅈ⋅a ⅈ⋅a -ⅈ⋅a⎤
⎢ ℯ ℯ ⅈ⋅ℯ ⅈ⋅ℯ ⎥
⎢ ──── + ───── ────── - ───────⎥
⎢ 2 2 2 2 ⎥
⎢ ⎥
⎢ ⅈ⋅a -ⅈ⋅a ⅈ⋅a -ⅈ⋅a ⎥
⎢ ⅈ⋅ℯ ⅈ⋅ℯ ℯ ℯ ⎥
⎢- ────── + ─────── ──── + ───── ⎥
⎣ 2 2 2 2 ⎦
我正在尝试使用 Sympy 评估和简化符号限制,但我一直收到错误提示我无法添加 ImmutableDenseMatrix
和 Zero
。但是,我似乎没有明确地执行任何带有 0(或另一个标量)的矩阵的添加。
如何修复这个错误并让 Sympy 简化限制?
from sympy import *
a = symbols('a')
m = Matrix([[0, -a],[a,0]])
I = Matrix([[1,0],[0,1]])
n = symbols('n', integer=True)
limit = Limit(MatPow(I + m/n, n), n, oo)
limit.doit() # The error can be triggered either by .doit()
simplify(limit) # or by running simplify() on the limit
"""
TypeError: cannot add <class 'sympy.matrices.immutable.ImmutableDenseMatrix'>
and <class 'sympy.core.numbers.Zero'>
您显示的错误看起来像是 sympy 中的错误(应该报告给 GitHub)。
虽然您可以稍微不同地计算结果:
In [1]: from sympy import *
...:
...: a = symbols("a")
...: m = Matrix([[0, -a], [a, 0]])
...: I = Matrix([[1, 0], [0, 1]])
...:
...: n = symbols("n", integer=True)
In [2]: M = (I + m / n) ** n
In [3]: M
Out[3]:
⎡ n n n n⎤
⎢ ⎛ ⅈ⋅a ⎞ ⎛ⅈ⋅a ⎞ ⎛ ⅈ⋅a ⎞ ⎛ⅈ⋅a ⎞ ⎥
⎢ ⎜- ─── + 1⎟ ⎜─── + 1⎟ ⅈ⋅⎜- ─── + 1⎟ ⅈ⋅⎜─── + 1⎟ ⎥
⎢ ⎝ n ⎠ ⎝ n ⎠ ⎝ n ⎠ ⎝ n ⎠ ⎥
⎢ ──────────── + ────────── - ────────────── + ────────────⎥
⎢ 2 2 2 2 ⎥
⎢ ⎥
⎢ n n n n ⎥
⎢ ⎛ ⅈ⋅a ⎞ ⎛ⅈ⋅a ⎞ ⎛ ⅈ⋅a ⎞ ⎛ⅈ⋅a ⎞ ⎥
⎢ⅈ⋅⎜- ─── + 1⎟ ⅈ⋅⎜─── + 1⎟ ⎜- ─── + 1⎟ ⎜─── + 1⎟ ⎥
⎢ ⎝ n ⎠ ⎝ n ⎠ ⎝ n ⎠ ⎝ n ⎠ ⎥
⎢────────────── - ──────────── ──────────── + ────────── ⎥
⎣ 2 2 2 2 ⎦
In [4]: M.limit(n, oo)
Out[4]:
⎡ ⅈ⋅a -ⅈ⋅a ⅈ⋅a -ⅈ⋅a⎤
⎢ ℯ ℯ ⅈ⋅ℯ ⅈ⋅ℯ ⎥
⎢ ──── + ───── ────── - ───────⎥
⎢ 2 2 2 2 ⎥
⎢ ⎥
⎢ ⅈ⋅a -ⅈ⋅a ⅈ⋅a -ⅈ⋅a ⎥
⎢ ⅈ⋅ℯ ⅈ⋅ℯ ℯ ℯ ⎥
⎢- ────── + ─────── ──── + ───── ⎥
⎣ 2 2 2 2 ⎦