计算 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
我是 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