optimize.leastsq忽略函数中的条件

2024-10-05 10:49:21 发布

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

我试着用optimize.leastsq找到2个参数,但我有条件 因此,我将条件添加到计算模型的函数中,如果条件被破坏,将返回一个非常大的答案,因此MSE将是巨大的。 但它不起作用:

data是我的真实数据集,p0是一个2参数列表:

p1, success = optimize.leastsq(errfunc, p0[:], args=(data))
errfunc = lambda p, y: (season1(p[0],p[1]) - y)**2

def season1(a, b, i=range(1, 150)):
    temp=[0.1875-0.1875*0.01, 0.1875+0.1875*0.01]
    S=0.999
    I=0.001
    R=0
    r=[0]
    for t in i:  
        S -= b*S*I             #Update S by the new t
        I = I+b*S*I-a*I    #Update I by the new t
        R += a*I  
        r.append(R)
    if R <= temp[1] and R >= temp[0]:
        print(R, a, b)
        return r
    return [1]*len(r)

Tags: the模型newdata参数byreturnupdate

热门问题