运行代码时出现以下错误:
类型错误:lambda() 正好需要 4 个参数(给定 3 个)
这是我的代码 - 我的错误来自我试图实现 Scipy 优化算法的最后一行代码(我认为)fmin
from pylab import *
import pylab as pl
from numpy import *
from scipy.optimize import fmin
from scipy import integrate
import numpy as np
def ode(s,t,k1,k2):
A = s[0]
B = s[1]
C = s[2]
dA = -k1*A
dB = k1*A-k2*B
dC = k2*B
ds = [dA,dB,dC]
return ds
def myllsq(teta,s0,t,s):
y_obs = s
k1 = teta[0]
k2 = teta[1]
s = integrate.odeint(ode,s0,t,args=(k1,k2))
y_cal = s[:,1]
lsq = sum(y_obs-y_cal)**2
return lsq
e = lambda teta,s0,t,s: myllsq(teta,s0,t,s)
if __name__ == '__main__':
n = 10
tmin = 0.0
tmax = 9
k1 = 0.3
k2 = 0.2
s0 = [1,0,0]
t = linspace(tmin,tmax,n)
s = [0.000,0.416,0.489,0.595,0.506,0.493,0.458,0.394,0.335,0.309]
teta = [k1,k2]
print e(teta,s0,t,s)
fmin(e,teta,args=(t,s),maxiter=10000,maxfun=10000)