Python 精炼((a*E).T*(a*E))失败
下面是我们遇到问题的Python 精炼((a*E).T*(a*E))失败,python,sympy,Python,Sympy,下面是我们遇到问题的sympy代码。我们试图在正交矩阵上使用简单代数 from sympy import * from sympy.abc import a, l E = MatrixSymbol('E', l, l) aE = a * E with assuming(Q.orthogonal(E)): print(refine(E.T * E)) print(refine(aE.T * aE)) 第一个打印行成功完成,并按预期给出“I”。另一方面,最末端的print语句终
sympy
代码。我们试图在正交矩阵上使用简单代数
from sympy import *
from sympy.abc import a, l
E = MatrixSymbol('E', l, l)
aE = a * E
with assuming(Q.orthogonal(E)):
print(refine(E.T * E))
print(refine(aE.T * aE))
第一个打印行成功完成,并按预期给出“I”。另一方面,最末端的print语句终止于:
“AttributeError:'Symbol'对象没有属性'T'”错误
整个错误消息如下:
/Users/wakita/anaconda3/envs/pyqtgl/bin/python "/Users/wakita/Dropbox (smartnova)/work/pysandbox/testsympy/aE.py"
Traceback (most recent call last):
File "/Users/wakita/Dropbox (smartnova)/work/pysandbox/testsympy/aE.py", line 9, in <module>
print(refine(aE.T * aE))
File "/Users/wakita/anaconda3/envs/pyqtgl/lib/python3.5/site-packages/sympy/assumptions/refine.py", line 29, in refine
args = [refine(arg, assumptions) for arg in expr.args]
File "/Users/wakita/anaconda3/envs/pyqtgl/lib/python3.5/site-packages/sympy/assumptions/refine.py", line 29, in <listcomp>
args = [refine(arg, assumptions) for arg in expr.args]
File "/Users/wakita/anaconda3/envs/pyqtgl/lib/python3.5/site-packages/sympy/assumptions/refine.py", line 29, in refine
args = [refine(arg, assumptions) for arg in expr.args]
File "/Users/wakita/anaconda3/envs/pyqtgl/lib/python3.5/site-packages/sympy/assumptions/refine.py", line 29, in <listcomp>
args = [refine(arg, assumptions) for arg in expr.args]
File "/Users/wakita/anaconda3/envs/pyqtgl/lib/python3.5/site-packages/sympy/assumptions/refine.py", line 40, in refine
new_expr = handler(expr, assumptions)
File "/Users/wakita/anaconda3/envs/pyqtgl/lib/python3.5/site-packages/sympy/matrices/expressions/matmul.py", line 265, in refine_MatMul
if arg == last.T and ask(Q.orthogonal(arg), assumptions):
AttributeError: 'Symbol' object has no attribute 'T'
/Users/wakita/anaconda3/envs/pyqtgl/bin/python”/Users/wakita/Dropbox(smartnova)/work/pysandbox/testsympy/aE.py“
回溯(最近一次呼叫最后一次):
文件“/Users/wakita/Dropbox(smartnova)/work/pysandbox/testsympy/aE.py”,第9行,在
打印(细化(aE.T*aE))
文件“/Users/wakita/anaconda3/envs/pyqtgl/lib/python3.5/site packages/sympy/assessments/refine.py”,第29行,在refine中
args=[表达式args中arg的细化(arg,假设)]
文件“/Users/wakita/anaconda3/envs/pyqtgl/lib/python3.5/site packages/sympy/assessments/refine.py”,第29行,在
args=[表达式args中arg的细化(arg,假设)]
文件“/Users/wakita/anaconda3/envs/pyqtgl/lib/python3.5/site packages/sympy/assessments/refine.py”,第29行,在refine中
args=[表达式args中arg的细化(arg,假设)]
文件“/Users/wakita/anaconda3/envs/pyqtgl/lib/python3.5/site packages/sympy/assessments/refine.py”,第29行,在
args=[表达式args中arg的细化(arg,假设)]
文件“/Users/wakita/anaconda3/envs/pyqtgl/lib/python3.5/site packages/sympy/assessments/refine.py”,第40行,在refine中
new_expr=handler(expr,假设)
文件“/Users/wakita/anaconda3/envs/pyqtgl/lib/python3.5/site packages/sympy/matrix/expressions/matmul.py”,第265行,在refine_matmul中
如果arg==last.T和ask(Q.orthogonal(arg),假设):
AttributeError:“符号”对象没有属性“T”
您没有定义t
。我假设它是被转置的?当它尝试转置a
时失败了(AFAICT),它只是一个通用的符号。我还没有找到任何方法使sympy
将其视为标量,即使.t
成为无操作而不是失败。我尝试了Symbol('a',real=True),但它不起作用。这肯定是sympy中的一个错误。我打开了一个问题。谢谢,我打开了refine
分支,检查我的问题是否已解决。我希望分行尽快并入主分行。谢谢