1

我一直在处理连续介质力学,并且有很多操作需要得到一个张量相对于另一个张量的导数。我很想尝试在计算机上象征性地做到这一点。

例如,弹性张量 c = d(2nd PK stress) / d(strain tensor),而 2nd PK 应力张量和应变张量都是 3x3 矩阵,得到的弹性张量是 3x3x3x3 4 阶张量。

我尝试使用 sympy,但似乎它最多支持的是矩阵(2 阶张量)。numpy 中的 ndarray 根本不在 sympy 中。

我曾经使用 matlab,现在知道它也可以在 matlab 中工作。

因此,我想知道,是否有任何工具可用于此目的?数学能做到吗?

提前非常感谢!

-肖恩

4

1 回答 1

2

在 python 中执行此操作的一种方法是使用 numpy 数组 usingdtype=object以便您可以用 sympy 表达式而不是数字填充它们。但是,您必须自己编写所有便利方法(但它们将非常简单,只需在 numpy 数组上循环已经实现的 sympy 函数)。

如果您安装了必要的符号包,这显然也可以在 Mathematica 或 Matlab 中完成。

Mathematica 也有用于张量分析的软件包,但对于您所描述的问题来说,它们将是过度杀伤力。同样,SymPy 中有各种用于微分几何和张量分析的包,但同样,它们将是一种矫枉过正。

于 2013-10-04T13:58:29.637 回答