You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现Lotka-Volterra差分方程绘制种群互动报错求解

问题原因
  • 迭代全为0的问题:你的差分递推循环从n=2开始,但仅初始化了R[0]、F[0]两个初始值,R[1]、F[1]保持了np.zeros初始化的默认值0,后续所有计算都基于前序的0值,自然输出全为0。同时Lotka-Volterra一阶差分方程仅依赖前1个时间步的结果,不需要从n=2开始递推,循环起始值设置错误。
  • 绘图报错的问题:你生成的时间序列t设置了num=10000,长度为10000,而种群数组R、F的长度仅为N+1=501,二者维度不匹配;且你绘图时传入的是R[n],此时n是循环结束后的固定值,仅为单个数值,和长度10000的t自然无法匹配绘图。
修正后可运行代码
import numpy as np
import matplotlib.pyplot as plt

N = 500
a = 0.4
b = 0.1
c = 0.005
e = 0.2

R = np.zeros(N+1)
F = np.zeros(N+1)
# 时间序列长度和种群数组保持一致,每个时间步对应一组种群值
t = np.arange(N+1)

R[0] = 100
F[0] = 20

# 从n=1开始递推,覆盖所有时间步
for n in range(1, N+1):
    # 兔子种群更新
    R[n] = R[n-1] + a*R[n-1] - c*R[n-1] * F[n-1]
    # 狐狸种群更新
    F[n] = F[n - 1] + e * c * R[n - 1] * F[n - 1] - b * F[n - 1]

# 传入完整数组绘图,同时展示两个种群的变化
plt.plot(t, R, label='兔子种群数量')
plt.plot(t, F, label='狐狸种群数量')
plt.xlabel('时间步')
plt.ylabel('种群数量')
plt.legend()
plt.show()

内容的提问来源于stack exchange,提问作者fredericoamigo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 20:54:07