繁体   English   中英

如何为 arrays 的数据格式化 scipy.optimize.fsolve 的参数

[英]How to format the argument of scipy.optimize.fsolve for arrays of data

我想使用求解器(scipy.optimize.fsolve)来求解 function、fun(x,y) 的根。 在这种情况下,我希望参数 (y) 是一个数组(例如一个数据数组)。 我还想避免使用 for 循环为 y 中的每个值调用 fsolve。

在将 arg (y) 指定为数组时,我收到一个错误,即 function 调用的结果不是正确的浮点数组。 如果我将“数据”设为元组而不是数组,则会发生其他错误。

这是问题的MWE:

import numpy as np
from scipy.optimize import fsolve

def fun(x, y):
    return x+y

data = np.array([1, 2, 3, 4])
x = fsolve(fun, x0=0, args=data)
print(x)

如何更正 fsolve 的输入,以便它求解数组中每个 y 值的 fun(x,y) 的根(不使用 for 循环)?

传递给fsolve的 function 必须返回与此处提到的长度相同的值。

在您的情况下,您将x0=0args=np.array([1,2,3,4])传递给 fsolve。 fun的返回值与 x0 的长度不同(x0 是标量,args 是形状为(4,)的数组)。

以下代码解决了您的问题:

    import numpy as np
    from scipy.optimize import fsolve

    def fun(x, y):
        return x+y

    data = np.array([1, 2, 3, 4])
    x = fsolve(fun, x0=np.array([0,0,0,0]), args=data)
    print(x)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM