将涉及矢量转置的表达式转换为具有lambdify的数值函数

Kon*_*nos 8 python vector sympy

我在python中编写了一个脚本,它使用sympy来计算几个向量/矩阵公式.但是,当我尝试将这些函数转换为我可以使用sympy.lambdify进行评估的函数时,我得到了一个

SyntaxError:扫描字符串文字时的EOL

这里有一些代码有相同的错误,所以你可以看到我的意思.

import sympy
x = sympy.MatrixSymbol('x',3,1)
f = sympy.lambdify(x, x.T*x)
Run Code Online (Sandbox Code Playgroud)

因此,语法错误与表达式"x'.dot(x)"和".T"到'的转换有关.

我如何解决这个问题,从上面的lambdify中正确定义f?

Tan*_*wal 1

它已在 sympy 版本 >= 1.1 中解决

编辑:

例子

当你定义这个时 x = sympy.MatrixSymbol('x',3,1) ,你正在创建一个矩阵,

您可以使用检查其索引和形状 print(sympy.Matrix(x))

现在您想要将 x 的转置乘以 x,您必须给出x一个与之前定义的形状相同的矩阵

在这里试试这个:

from sympy import MatrixSymbol, lambdify, Matrix
x = MatrixSymbol('x', 3, 1)
f = lambdify(x, x.T*x)
a = Matrix([[1], [2], [3]])
print(f(a))
Run Code Online (Sandbox Code Playgroud)

您可以查看此链接以更好地了解lambdaify: http://docs.sympy.org/latest/modules/utilities/lambdify.html