我想y=Abs(0.5-0.5*sqrt(1-4*x))
使用 python 计算 0.1 的导数。这是我的代码:
x=Symbol('x')
y=Abs(0.5-0.5*sqrt(1-4*x))
deriv=y.diff(x)
d=lambdify(x,deriv,'numpy')
print d(0.1)
这就是我得到的:
Traceback (most recent call last):
File "/home/milossimic/g4/s1/.../optimize.py", line 100, in <module>
print d(0.1)
File "<string>", line 1, in <lambda>
NameError: global name 'Derivative' is not defined
我是 and 的新手sympy
,numpy
所以我想我使用错误的方法来确定导数。
编辑:我打印了 deriv,这就是我得到的:
阅读此http://docs.sympy.org/dev/modules/functions/elementary.html后,我尝试过fdiff()
:
x=Symbol('x')
y=Abs(0.5-0.5*sqrt(1-4*x))
deriv=y.fdiff()
d=lambdify(x,deriv,'numpy')
print d(0)
但是在尝试了其他值来计算导数之后,我发现结果是 -1、0 或 1,因为deriv
实际上是sign(-0.5*sqrt(-4*x + 1) + 0.5)
.
我应该怎么办?
numpy 和 sympy 都被导入:
from sympy import *
import numpy as np
如果我尝试找到不在 Abs 下的函数的导数,则没有问题。