函数A 如下:
def SIR_model(y, t, B, r0):
S, I, R = y
dS_dt = -B * S * I
dI_dt = B * S * I - r0 * I
dR_dt = r0* I
O.append(I)
r.append(R)
s.append(S)
return ([dS_dt, dI_dt, dR_dt ])
这里的B指的是函数B中的B
S,I,R有初值,B的初值也能求出来,
S0=0.999999551536256
I0=0.000000448463744
R0 = 0.0
函数B如下:
B = B0 - C * (i+r)
B0=0.36,C=1250,i和r是从函数A中获得的
我不知道是不是该用类来写,如果用类来定义的话该怎么定义呢?谢谢!
这逻辑没问题吗?函数A需要参数B才能计算I和R,但是B又要通过I和R才能计算,如果I和R是有初值的,那也是先执行函数B计算出B,然后再用B调用函数A呀
def A(y, t, B, r0):
S, I, R = y
dS_dt = -B(S,I) * S * I
dI_dt = B(S,I) * S * I - r0 * I
dR_dt = r0 * I
O.append(I)
r.append(R)
s.append(S)
return ([dS_dt, dI_dt, dR_dt])
def B(i, r):
B0 = 0.36
C = 1250
return B0 - C * (i + r)
# 调用函数
A(y,t,B,r0)
看你的代码,I和R的值在函数A中来自于元组y,但在A中又没有重新赋值
那在B中用到的I和R就直接从y中取就行了