.doit()
simplify=False
的差异化选项,但没有效果。
为什么Sympy.diff()在此处介绍一个s表达以及如何避免它? 如何将此衍生物转换为lambdify可以在没有错误的情况下处理的形式?
任何洞察力或其他方法都将不胜感激!
使用
asin
和
subs
:
In [82]: a,x = sp.symbols('a x')
In [83]: formula=sp.asin(a**x); formula
Out[83]:
asin(a**x)
In [84]: d_formula=sp.diff(formula,x, simplify=False); d_formula
Out[84]:
a**x*log(a)/sqrt(1 - a**(2*x))
In [85]: d_formula.subs({a:.5, x:2})
Out[85]:
-0.178969832451953
现在我们可以使用
In [86]: foo = sp.lambdify((a,x),d_formula)
In [87]: help(foo)
Help on function _lambdifygenerated:
_lambdifygenerated(a, x)
Created with lambdify. Signature:
func(a, x)
Expression:
a**x*log(a)/sqrt(1 - a**(2*x))
Source code:
def _lambdifygenerated(a, x):
return a**x*log(a)/sqrt(1 - a**(2*x))
In [88]: foo(.5,2)
Out[88]: np.float64(-0.1789698324519529)