在 python 中使用 *args 区分不同维度的多变量函数

Posted

技术标签:

【中文标题】在 python 中使用 *args 区分不同维度的多变量函数【英文标题】:Differentiating a multivariable function w.r.t different dimensions, using *args in python 【发布时间】:2021-12-31 00:12:40 【问题描述】:

以下是我尝试创建一个函数来区分多变量函数,但正如您所见,它似乎只能区分第一个位置参数(即 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))

【问题讨论】:

【参考方案1】:

您可以将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

【讨论】:

以上是关于在 python 中使用 *args 区分不同维度的多变量函数的主要内容,如果未能解决你的问题,请参考以下文章

在android studio中build.gradle中使用flavor维度

在 scikit learn 中训练具有不同特征维度的逻辑回归模型

Mathab和Python的numpy中的维度顺序

在 Keras 中拟合模型时出现维度错误

Python:迭代具有不同维度的列表,是不是有通用方法?

3.2.5 Google Tag Manager实战指南——全局变量转自定义维度