微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

唯一 ODE 解决方案的重新缩放参数

如何解决唯一 ODE 解决方案的重新缩放参数

我正在尝试从正态分布重新调整我的参数,以便我可以在我的 ODE 中模拟“非耦合项”。仅就某些情况而言,这是一个细胞群,重新调整我的每个细胞的参数,可以进一步了解模型。到目前为止,我有 1000 个单元格,用 N 表示,我想将我的每个参数乘以来自均值为 1 且标准差为 0.25 的正态分布的某个随机值。我知道要创建该发行版,我需要使用 rand = np.random.normal(loc=1.0,scale=0.25,size=N)。但我还没有看到如何使用 rand 数组中生成的这些值中的每一个将其与每个参数相乘,以便每个单元格都有一个独特的图。我在下面附上了我当前的代码

def goodwin(t,y):
    X,Y,Z,V = y.reshape([4,-1])
    N = len(V); v1 = 6.8355; K1 = 2.7266; n = 5.6645; v2 = 8.4297; K2 = 0.2910; k3 = 0.1177; v4 = 
    1.0841; K4 = 8.1343; k5 = 0.3352; v6 = 4.6645; K6 = 9.9849; k7 = 0.2282; v8 = 3.5216; K8 = 
    7.4519; vc = 6.7924; Kc = 4.8283; K = 1; L = 0 
    F = 1/N * sum(V)
    dXdt = (v1*(K1**n))/((K1**n)+(Z*abs(Z)**(n-1)))-((v2*X)/(K2+X)) + ((vc*K*F)/(Kc+(K*F))) + L
    dYdt = (k3*X) - ((v4*Y)/(K4+Y))
    dZdt = (k5*Y) - ((v6*Z)/(K6+Z))
    dVdt = (k7*X) - ((v8*V)/(K8+V))
    return np.concatenate([dXdt,dYdt,dZdt,dVdt])
t_span = (0,120)
t = np.linspace(t_span[0],t_span[1],3000) 
N = 1000
y0 = np.random.rand(4*N)
soln = solve_ivp(goodwin,t_span,y0,t_eval=t)
t = soln.t; X,V = soln.y[0::N] 

本质上,我想要做的是对于每个单元格(总单元格 = N),我希望它的参数是唯一的,即它的参数会被 rand 中的某个随机数缩放分配。我怎样才能做到这一点,然后绘制几个单元格的结果?任何帮助表示赞赏。请注意,我使用的是 solve_ivp

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。