![](/img/trans.png)
[英]How to fix TypeError when using `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=0和args=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.