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
私はsympy
andの初心者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)
deriv
しかし、導関数を計算するために他の値を試した後、実際にはであるため、結果が -1、0、または 1 であることがわかりましたsign(-0.5*sqrt(-4*x + 1) + 0.5)
。
私は何をすべきか?
numpy と sympy の両方がインポートされます。
from sympy import *
import numpy as np
Abs の下にない関数の導関数を見つけようとしても、問題はありません。