我在计算科学论坛上问过这个问题。https://scicomp.stackexchange.com/q/32973/24915有人建议我在这个论坛上问这个问题。你知道吗
我有一个二阶张量(F),我需要计算它的行列式和逆w.r.t.本身的导数。这些基本上是matrix cookbook中的等式(49)和(60)。你知道吗
我和辛皮一起工作了大约一个星期。我可以得到F本身的导数,但不知道如何得到它的行列式和逆的导数。作为参考,我张贴的代码和输出连同错误消息。你知道吗
Python代码
from sympy import *
i = tensor.Idx('i',3)
j = tensor.Idx('j',3)
k = tensor.Idx('k',3)
l = tensor.Idx('l',3)
F = MatrixSymbol('F', 3, 3)
print("Derivative of F wrt F")
print("---------------------")
print(diff(F[k,l], F[i,j]))
print("\n")
J = det(F)
print("Derivative of det(F) wrt F")
print("--------------------------")
print(diff(J, F[i,j]))
print("\n")
print("Derivative of inv(F) wrt F")
print("--------------------------")
Finv = Inverse(F)
print(Finv[i,j])
print(diff(Finv[k,l], F[i,j]))
print("\n")
输出
Derivative of F wrt F
---------------------------
KroneckerDelta(i, k)*KroneckerDelta(j, l)
Derivative of det(F) wrt F
-------------------------------
Derivative(Determinant(F), F[i, j])
Derivative of inv(F) wrt F
-------------------------------
Traceback (most recent call last):
File "matdiffinverse.py", line 25, in <module>
print(Finv[i,j])
File "/usr/lib/python3/dist-packages/sympy/matrices/expressions/matexpr.py", line 248, in __getitem__
return self._entry(i, j)
File "/usr/lib/python3/dist-packages/sympy/matrices/expressions/matpow.py", line 46, in _entry
raise NotImplementedError(("(%d, %d) entry" % (int(i), int(j)))
File "/usr/lib/python3/dist-packages/sympy/core/expr.py", line 207, in __int__
raise TypeError("can't convert symbols to int")
TypeError: can't convert symbols to int
我看不出你的代码有什么问题。我假设您是通过IDE或其他方式引用不同的模块。尝试显式导入模块
输出
相关问题 更多 >
编程相关推荐