使用 python 中的 *args 区分多变量函数 w.r.t 不同的维度
Differentiating a multivariable function w.r.t different dimensions, using *args in python
以下是我尝试创建一个函数来区分多变量函数,但如您所见,它似乎只能区分第一个位置参数(即 x)。我如何扩展它才能对 y 和 z 求偏导数?
def firstderivative(func,x,*args):
return((func(x+0.001,*args)-func(x-0.001,*args))/0.002)
def afunc(x,y,z):
return(x*y+x*z+y*z)
print(firstderivative(afunc,2,4,5))
您可以将 args
从元组转换为列表。
def firstderivative(func, n, *args):
# args[0] is x, args[1] is y and args[2] is z
args_0 = list(args)
args_0[n] -= 0.001
args_1 = list(args)
args_1[n] += 0.001
return ((func(*args_1) - func(*args_0)) / 0.002)
def afunc(x, y, z):
return (x * y + x * z + y * z)
print(firstderivative(afunc, 0, 2, 4, 5)) # x
print(firstderivative(afunc, 1, 2, 4, 5)) # y
print(firstderivative(afunc, 2, 2, 4, 5)) # z
以下是我尝试创建一个函数来区分多变量函数,但如您所见,它似乎只能区分第一个位置参数(即 x)。我如何扩展它才能对 y 和 z 求偏导数?
def firstderivative(func,x,*args):
return((func(x+0.001,*args)-func(x-0.001,*args))/0.002)
def afunc(x,y,z):
return(x*y+x*z+y*z)
print(firstderivative(afunc,2,4,5))
您可以将 args
从元组转换为列表。
def firstderivative(func, n, *args):
# args[0] is x, args[1] is y and args[2] is z
args_0 = list(args)
args_0[n] -= 0.001
args_1 = list(args)
args_1[n] += 0.001
return ((func(*args_1) - func(*args_0)) / 0.002)
def afunc(x, y, z):
return (x * y + x * z + y * z)
print(firstderivative(afunc, 0, 2, 4, 5)) # x
print(firstderivative(afunc, 1, 2, 4, 5)) # y
print(firstderivative(afunc, 2, 2, 4, 5)) # z