首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >不能用导数来抨击渐近表达式

不能用导数来抨击渐近表达式
EN

Stack Overflow用户
提问于 2018-03-24 04:28:36
回答 1查看 1.2K关注 0票数 1

我不能抨击包含衍生物的表达式。下面是解释这个问题的最低限度代码:

代码语言:javascript
运行
AI代码解释
复制
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

最后一行代码引发以下错误:

代码语言:javascript
运行
AI代码解释
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-24 05:14:07

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

错误信息

代码语言:javascript
运行
AI代码解释
复制
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

代码语言:javascript
运行
AI代码解释
复制
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
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49464684

复制
相关文章

相似问题

领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档