有没有办法通过符号推导来定义函数?

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)