代码如下:
import ode_7 as ode
import numpy as np
import matplotlib.pyplot as plt
# 采用matplotlib作图时默认设置下是无法显示中文的,凡是汉字都会显示成方块。
# 实际上,matplotlib是支持unicode编码的,不能正常显示汉字主要是没有找到合适的中文字体。
from pylab import mpl
mpl.rcParams['font.sans-serif']= ['SimHei']
# 解决负号显示问题
import matplotlib
matplotlib.rcParams['axes.unicode_minus']=False
'''
根据传染病传播的SIR模型,微分方程组可以转换为向量运算:
y = [S, I, R]
f(t, y) = [-beta*y[0]*y[1], beta*y[0]*y[1]-gamma*y[1], gamma*y[1]]
前向欧拉公式:
y[k+1] = y[k] + dt * f(t[k], y[k])
后向欧拉公式(两步迭代):
y_p = y[k] + dt * f(t[k], y[k])
y[k+1] = y[k] + dt * f(x[k+1], y_p)
改进的欧拉法:
y_p = y[k] + dt * f(t[k], y[k])
y_c = y[k] + dt * f(t[k+1], y_p)
y[k+1] = 1/2 * (y_p + y_c)
'''
class SIR(ode.ODE):
def f(self,