努力️ 2021-10-26 09:58 采纳率: 66.7%
浏览 13
已结题

函数中迭代次数没达到预期

具体代码如下:


import scipy.integrate
import numpy as np
import matplotlib.pyplot as plt
O = []
S0 = 0.999999551536256
I0 = 0.000000448463744
R0 = 0.0
r0 = 0.1
t = np.linspace(1, 140, 140)
B0 = 0.36
C = 1250
b = 0.359943942032
def SIR_model(y, t, b, r0):
    S, I, R= y
    b = B0 - C * (I + R)
    dS_dt = -b * S * I
    dI_dt = b * S * I - r0 * I
    dR_dt = r0 * I
    O.append(I)
    print(I)
    return ([dS_dt, dI_dt, dR_dt])
res = scipy.integrate.odeint(SIR_model, [S0, I0, R0], t, args=(b,r0))
print("O=",O)
print("len(O)=",len(O))

结果显示

len(O)= 107

我想让O的长度和时间t一样长,都为140次,是因为迭代到最后数字变得太小,所以不再迭代了吗?

  • 写回答

1条回答 默认 最新

  • 辉煌仪奇 2021-10-26 10:25
    关注

    你好,刚刚测试了一下,O的长度取决于你给的数据S0,R0,I0的初始值,还有r0 的初始值
    想要O的长度和t保持一致你可以选择后面补元素或者修改传入数据

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月12日
  • 已采纳回答 11月4日
  • 创建了问题 10月26日

悬赏问题

  • ¥15 一道python难题2
  • ¥15 一道python难题
  • ¥15 用matlab 设计一个不动点迭代法求解非线性方程组的代码
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试
  • ¥20 问题请教!vue项目关于Nginx配置nonce安全策略的问题
  • ¥15 教务系统账号被盗号如何追溯设备