使用scipy.optimize.broyden2公司具有接收多个参数的函数

2024-09-29 23:14:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我想使用scipy.optimize.broyden2,问题是我的函数不仅仅以数组作为参数,还有更多的参数。你知道吗

我该怎么办?定义全局变量?你知道吗

这些是我的职责:

def F(S, I, R, alpha, beta):
    return [- beta * S * I, beta * S * I - alpha * R, alpha * R]

def euler(xi, xf, m, F, initial_values, alpha, beta):
    h = (xf - xi) / m

    t = np.linspace(xi, xf, m + 1)
    t = np.delete(t, 0)

    vect_y = [initial_values[0], initial_values[1], initial_values[2]]

    for i in range(len(t)):
        y_actual = [sum(x) for x in zip(vect_y, [element * h for element in F(vect_y[0], vect_y[1], vect_y[2], alpha, beta)])]
        vect_y = y_actual

    return vect_y

我想将broyden2euler一起使用,其中x0将是initial_values。你知道吗


Tags: inalphafor参数returndefnpinitial
1条回答
网友
1楼 · 发布于 2024-09-29 23:14:54

正如在注释中所建议的那样,您可以使用一个辅助函数,该函数使用*list语法解压参数列表,并用它调用主函数。下面显示了一个最小的示例,其中f是正在查找其根的函数。你知道吗

from scipy.optimize import broyden2
def f(x, y, z):
    return [x-1, y-2, z-3]
broyden2(lambda X: f(*X), [0, 0, 0])

输出:array([ 1., 2., 3.])

相关问题 更多 >

    热门问题