有没有办法通过符号推导来定义函数?
Is there a way to define a function through symbolic derivation?
有没有办法通过符号推导来定义一个函数?例如,
def f(x):return x**x
def df(x) : return diff(f(x),x)
这段代码不起作用,因为 df(1)
不可能(diff(f(1),1)
没有意义。)但是有没有办法利用 [=19 的结果=]?打印df(x)
的时候,有一个漂亮的带变量的函数形式x
,好整洁。
不需要 Maple 或 Mathematica。 Python 有同情心。
import numpy as np
from sympy import symbols, diff, lambdify
x = symbols('x')
def f(x):
return x**x
def df(x):
return diff(f(x))
print(df(x))
这个 returns 符号导数,x**x*(log(x) + 1)
。现在,这取决于你想用它做什么。看起来您想在不必知道导数是 x**x*(log(x) + 1)
的情况下计算数值。 sympy 推荐的计算许多数值的方法是使用其 lambdify
.
df_numeric = lambdify(x, df(x), modules=['numpy'])
df_numeric(5)
这给出了 8154.4934763565643。您可以对照常规的手动函数检查它:
def df_manual(n):
return n**n*(np.log(n) + 1)
df_manual(5)
有没有办法通过符号推导来定义一个函数?例如,
def f(x):return x**x
def df(x) : return diff(f(x),x)
这段代码不起作用,因为 df(1)
不可能(diff(f(1),1)
没有意义。)但是有没有办法利用 [=19 的结果=]?打印df(x)
的时候,有一个漂亮的带变量的函数形式x
,好整洁。
不需要 Maple 或 Mathematica。 Python 有同情心。
import numpy as np
from sympy import symbols, diff, lambdify
x = symbols('x')
def f(x):
return x**x
def df(x):
return diff(f(x))
print(df(x))
这个 returns 符号导数,x**x*(log(x) + 1)
。现在,这取决于你想用它做什么。看起来您想在不必知道导数是 x**x*(log(x) + 1)
的情况下计算数值。 sympy 推荐的计算许多数值的方法是使用其 lambdify
.
df_numeric = lambdify(x, df(x), modules=['numpy'])
df_numeric(5)
这给出了 8154.4934763565643。您可以对照常规的手动函数检查它:
def df_manual(n):
return n**n*(np.log(n) + 1)
df_manual(5)