python - 将 scipy.optimize.broyden2 与接收多个参数的函数一起使用

标签 python scipy

我想使用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

最佳答案

正如评论中所建议的,您可以使用辅助函数,该函数使用 *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])

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

关于python - 将 scipy.optimize.broyden2 与接收多个参数的函数一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43835547/

相关文章:

python - 在 Python 脚本中定义全局函数

python - 在 OS X 10.7 (Lion) 上使用 scipy 颜色和 imsave

python - 梯度下降未按预期工作

numpy - 相关二维矢量场

python - 如何在python中将jpg文件保存到文件夹中

python - 使用 Jinja2 遍历 Python 字典

python - 尝试安装 Fiona 时使用 GDAL_CONFIG 环境变量错误提供 gdal-config 的路径

python - python中两个numpy数组之间的区别

python - keras和scipy的2D卷积结果不同

python - 从一维 numpy 数组中获取相对极值