我一直在处理连续介质力学,并且有很多操作我需要得到张量相对于另一个张量的导数。我想在计算机上试图象征性地做到这一点。
例如,弹性张量c = d(第二PK应力)/ d(应变张量),而第二PK应力张量和应变张量都是3x3矩阵,得到的弹性张量是3x3x3x3四阶张量。
我试图使用sympy,但它似乎最支持的是一个矩阵(张量为2的张量)。 numpy中的ndarray根本不是同情的。
我曾经使用过matlab,现在我也知道它在matlab中的作用方式。
因此,我想知道,有没有可用于此目的的工具? mathematica能做到吗?
提前多多感谢!
-Shawn
答案 0 :(得分:2)
在python中执行此操作的方法是使用dtype=object
使用numpy数组,以便您可以使用sympy表达式而不是数字填充它们。但是你必须自己编写所有的便捷方法(但它们非常简单,只需在numpy数组上循环已实现的sympy函数)。
如果你安装了必要的符号包,这显然可以在Mathematica中或在Matlab中完成。
Mathematica也有用于张量分析的软件包,但对于你所描述的问题来说,它们会有些过分。同样,在SymPy中有各种用于微分几何和张量分析的包,但同样,它们也是一种过度杀伤。