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 © 2024
京ICP备05028076号