Python和科学计算认证群组  - 讨论区

标题:如何求导数?

2012年05月13日 星期日 10:24

有个函数:

y=2+3x+4x**2+7x**3

如何求导?

from sympy import *

x = Symbol("x")

(2+3*x+4*x**2+7*x**3).diff(x)
>>>3 + 8*x + 21*x**2

问题来了,如果是我可否给出一个字符串来表达一个函数,然后用diff(x)?

比如

>>> str='2+3*x+4*x**2'
>>> str.diff(x)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'str' object has no attribute 'diff'
如何让一个字符串转换成sympy可以接受的函数表达式?

 

 

 

2012年05月13日 星期日 12:33

还有个问题,

from sympy import *

x = Symbol("x")

(2+3*x+4*x**2+7*x**3).diff(x)
>>>3 + 8*x + 21*x**2

我如何获得x=3,这个点的导数的具体的数值?

2012年05月13日 星期日 14:44

用eval():

eval(s).diff(x)

第二个问题用subs将x替换为3:

(2+3*x+4*x**2+7*x**3).diff(x).subs({x:3})

2012年05月13日 星期日 15:21

>>> (2+3*x+4*x**2+7*x**3).diff(x).subs({x:3})
216
>>> (2+3*x+4*x**2+7*x**3.7).diff(x).subs({x:3})
27 + 25.9*3**2.7
指数次方,为何无法正确计算出一个数值来?

2012年05月13日 星期日 17:30

用evalf()

(2+3*x+4*x**2+7*x**3.7).diff(x).subs({x:3}).evalf()

SymPy尽量精确表达,如果你要计算一个不精确的值的话需要调用evalf()

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2024

    京ICP备05028076号