gpt4 book ai didi

python - 无法使用派生词对 sympy 表达式进行 lambdify

转载 作者:太空宇宙 更新时间:2023-11-04 09:46:46 25 4
gpt4 key购买 nike

我无法对包含导数的表达式进行 lambdify。这是解释问题的最少代码:

import sympy
x = sympy.symbols('x', real=True)
a = sympy.Function('a')(x)
b = a**2
r = sympy.diff(b, x)
sympy.lambdify((a), b) # works
r.evalf(subs={diff(a, x): 1, a: 2}) # works
b_x = sympy.lambdify((diff(a, x), a), r) # throws an error

最后一行代码抛出如下错误:

Traceback (most recent call last):   File "C:\Anaconda2\lib\site-packages\IPython\core\interactiveshell.py", line 2882, in run_code
exec(code_obj, self.user_global_ns, self.user_ns) File "<ipython-input-29-a0069a059795>", line 2, in <module>
gx = sympy.lambdify((diff(a, x), a), r) # gives an error File "C:\Anaconda2\lib\site-packages\sympy\utilities\lambdify.py", line 434, in lambdify
func = eval(lstr, namespace) File "<string>", line 1
lambda Derivative(a(x), x),_Dummy_29: (2*Derivative(_Dummy_29, x)*_Dummy_29)
^ SyntaxError: invalid syntax

最佳答案

lambdify 尝试用数值等价物替换符号函数,并且返回一个可以接受数值或数组并返回数字或数组的函数。

错误信息

lambda Derivative(a(x), x),_Dummy_29: (2*Derivative(_Dummy_29, x)*_Dummy_29)
^ SyntaxError: invalid syntax

显示 lambdify 正在尝试构建第一个参数为 Derivative(a(x), x) 的 lambda 函数。显然,这是行不通的。我们需要一个裸变量名,而不是符号表达式 Derivative(a(x), x)

所以将 Derivative(a(x), x) 替换为一个空符号 da:

import sympy
x = sympy.symbols('x', real=True)
a = sympy.Function('a')(x)
b = a**2
r = sympy.diff(b, x)
da = sympy.symbols('da')
b_x = sympy.lambdify((da, a), r.subs([(sympy.diff(a, x), da)]))
assert b_x(1, 2) == r.evalf(subs={sympy.diff(a, x): 1, a: 2})
# 4

关于python - 无法使用派生词对 sympy 表达式进行 lambdify,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49464684/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com