怎么把用diff求导生成的表达式转成函数

ldehai 2013-10-08 04:55:40
因为需要求表达式的导数,所以使用了sympy的diff函数。但是求导后生成的是一个表达式,不能拿来当函数用,试了用lambda转换,也不行,求指导!

代码如下:
# -*- coding: utf-8 -*-
from sympy import *

x = Symbol("x")
f = 1+x**2+x**3
df1 = diff(f,x,1)
df2 = diff(f,x,2)

df1 = lambda x:df1 #这里用lambda转成函数,结果不行
print df1(0.5)
...全文
252 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
jeky_zhang2013 2013-10-08
  • 打赏
  • 举报
回复
这个挺方便的,不用再包装一层,一般只适合小功能吧?
panghuhu250 2013-10-08
  • 打赏
  • 举报
回复
evalf
In [356]: diff1 = sympy.diff(f, x)

In [357]: diff1
Out[357]: 3*x**2 + 2*x

In [358]: diff1.evalf(15, {x: 1})
Out[358]: 5.00000000000000

In [359]: diff1.evalf?
Type:       instancemethod
String Form:<bound method Add.evalf of 3*x**2 + 2*x>
File:       /usr/lib/python2.7/dist-packages/sympy/core/evalf.py
Definition: diff1.evalf(self, n=15, subs=None, maxn=100, chop=False, strict=False, quad=None, verbose=False)
Docstring:
Evaluate the given formula to an accuracy of n digits.
Optional keyword arguments:

    subs=<dict>
        Substitute numerical values for symbols, e.g.
        subs={x:3, y:1+pi}.

    maxn=<integer>
        Allow a maximum temporary working precision of maxn digits
        (default=100)

    chop=<bool>
        Replace tiny real or imaginary parts in subresults
        by exact zeros (default=False)

    strict=<bool>
        Raise PrecisionExhausted if any subresult fails to evaluate
        to full accuracy, given the available maxprec
        (default=False)

    quad=<str>
        Choose algorithm for numerical quadrature. By default,
        tanh-sinh quadrature is used. For oscillatory
        integrals on an infinite interval, try quad='osc'.

    verbose=<bool>
        Print debug information (default=False)

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧