我一直在尝试转换我的 sympy 函数变量,它看起来像这样:-
(atan(−3/)+2.66602685430536⋅10−6)^2+(atan(−2/)−0.0896686524911619)^2+(atan(−1/)−0.16739555984988)^2
为此,我一直在尝试使用 lambdastr 和 lambdify。通过以下方式:-
s = lambdastr((x,z),function)
lam_func = lambdify([x,z],s,myfuncs)
但不断收到此错误:-
AttributeError:“符号”对象没有属性“atan”
我发现这是因为 lambdastr 通过以下方式为 atan 函数添加了数学模块:-
s = lambdastr((x,z),function)
print(s)
λ x,z: (( math.atan ((z - 3)/x) + 2.66602685430536e-6) 2 + (**math.atan ((z - 2)/x) - 0.0896686524911619) 2 + (** math.atan ((z - 1)/x) - 0.16739555984988)**2)
所以,我像这样单独实现了 atan:-
s = lambdastr((x,z),function)
s = s.replace("math.atan","tan_inv")
def tan_inv_impl(x):
return math.atan(x)
myfuncs = {"tan_inv":tan_inv_impl}
lam_func = lambdify([x,z],s,myfuncs)
这确实给了我一个 lambda 函数,但它似乎不起作用
lam_func(1,1)
给出一个错误:
在 _lambdifygenerated(x, z)
1 def _lambdifygenerated(x, z):
----> 2 return (Lambda((x, z), (tan_inv((z - 3)/x) + 2.66602685430536e-6)**2 + (tan_inv(( z - 2)/x) - 0.0896686524911619)**2 + (tan_inv((z - 1)/x) - 0.16739555984988)**2))
NameError:名称“Lambda”未定义
有人可以帮我解决这个问题吗?
谢谢