计算 Python 中符号函数的参数导数

Evaluate parametric derivative of a symbolic function in Python

我是 Python (v 3.7) 的初学者,我正在尝试对包含参数的符号函数的导数进行数值评估,但我无法以成功的方式提供值。

我尝试了不同的组合,从阅读中获得灵感 this question and something also from

这是一个复制我的问题的最小示例:

import sympy as sym
from sympy import*

x, y, a = sym.var('x, y, a')
def f(x,y):
    return a*x**2 + x*y**2
fprime = sym.diff(f(x,y),x)

print(f(1,1))
print(fprime.evalf(subs={x: 1, y: 1}))

正如预期的那样,第一个 print 的输出是 a+1 但是第二个打印出现了问题,因为我得到的输出是 2.0*a*x + y**2 而我希望获得2*a+1.

我该如何修改我的代码?我也试过分别定义 fprime 和 运行 以下内容:

def fprime(x,y):
    return sym.diff(f(x,y),x)
print(fprime(x,1))

但我仍然无法取得任何进展。谢谢!

只需使用替换。当您尝试从数字表达式中获取数字时,请使用 evalf。你的,包含未评估的 a 还不是一个数字,因此评估拒绝它。

>>> fprime.subs({x: 1, y: 1})
2*a + 1