![](/img/trans.png)
[英]Trouble using fsolve to find x-values of scipy.ODR with given y-values
[英]Scipy ODR not compatible with fsolve?
到目前为止,我想解决ODR
函数的特定问题:
from scipy.odr import ODR, Model, RealData
from scipy.optimize import fsolve
import numpy as np
me = np.array([1, 2, 3, 4, 5])
my = np.array([6, 7, 8, 9, 10])
def func(beta, x):
y = beta[0]+beta[1]*x+beta[2]*x**3
return y
modata = RealData(me, my)
model = Model(func)
odr = ODR(modata, model, [0,0,0])
odr.set_job(fit_type=0)
output = odr.run()
mam = fsolve(func, 5, args=(output.beta))
我得到:
IndexError:索引1超出了尺寸为1的轴0的范围
我认为这是因为beta
充当函数内的索引。
我尝试重新定义func
以将多个变量用作beta
,但是这样做时我无法使ODR
正常工作。
有没有办法做到这一点?
fsolve
是为了寻找func
的根源。 但是,您必须给它一个初始估计,这是函数的有效参数。 不过,您无法传入5
作为beta
参数。 beta
必须至少包含三个元素进行迭代(因为您要评估beta[0]
, beta[1]
和beta[2]
)。
如果执行fsolve(func, [5,5,5], args=(output.beta))
,该函数将运行,并且输出的根为[0, 0, 0]
(显然,这是正确的根,因为func([0, 0, 0], x)
总是返回0
而不管x
的值如何
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.