函数A需要使用函数B中的变量值,函数B同样需要函数A中的变量值才能生成新值,这该怎么写程序啊?

函数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中取就行了