我用 python 编写了一个脚本,它使用 sympy 来计算几个向量/矩阵公式。但是,当我尝试将它们转换为可以使用 sympy.lambdify 评估的函数时,我得到了一个
SyntaxError : EOL while scanning string literal
下面是一些有同样错误的代码,这样你就明白我的意思了。
import sympy
x = sympy.MatrixSymbol('x',3,1)
f = sympy.lambdify(x, x.T*x)
因此,语法错误与表达式“x'.dot(x)”以及“.T”到“.”的转换有关。
我如何解决这个问题以正确定义上述 lambdify 中的 f?
最佳答案
找到了一个变通办法,虽然不是最干净的解决方案......但它有效。
使用 sympy 中的 implemented_function() 方法来定义您的函数。在此处阅读完整文档:http://docs.sympy.org/latest/modules/utilities/lambdify.html
代码如下:
import sympy
import numpy as np
from sympy.utilities.lambdify import implemented_function
x = sympy.MatrixSymbol('x',3,1)
f = implemented_function(sympy.Function('f'), lambda x: x.T*x)
lam_f= sympy.lambdify(x, f(x))
希望这能解决您的问题:)
关于python - 使用 lambdify 将涉及向量转置的表达式转换为数值函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36730931/