其他分享
首页 > 其他分享> > 求动力学模型的特征矩阵、特征方程【matlab工具集_03】

求动力学模型的特征矩阵、特征方程【matlab工具集_03】

作者:互联网

这里我们以如下SIVRS传染病动力学模型为例,其动力学方程如下所示:

 (模型的详细介绍可参考几种经典病毒动力学模型【基于matlab的动力学模型学习笔记_3】_L1234X的博客-CSDN博客)

 计算此动力学模型的matlab程序为:

%求特征方程
syms x1 x2 x3 x4 y%定义特征值
x=[x1,x2,x3,x4]
N=1;
a=0.6;%易感者转为感染者系数(感染系数)
b=0.8;%感染者转为免疫者系数(康复系数)
c=0.1;%感染者内部变异 
d=0.1;%感染者外部变异   
e=0.05;%死亡系数 
h=0.2;%免疫者转化为易感者概率
g=0.05;%初始出生率
k=2;%网络平均度(每个个体平均接触其它个体数)
f1=[g*N-a*k*x1*x2+h*x4-e*x1,a*k*x1*x2-d*k*x2*x3-(c+b+e)*x2,d*k*x2*x3+c*x2-e*x3,b*x2-h*x4-e*x4]%定义函数,以矩阵形式展示
j=jacobian(f1,x)%计算雅可比矩阵
n=[1 1 1 1];%构造单位向量 
D=y*diag(n)-j%构造得特征矩阵
m=det(D)%计算特征矩阵的值
k=collect(m,y)%得特征方程

计算结果为:

特征矩阵:

 特征矩阵值、特征方程结果略(由于含较多字符,结果较复杂,这里就不做过多展示)

补充:

1.特征矩阵由雅可比矩阵构造而来

2.collect函数用于合并同类项(将x1、x2、x3、x3逐项合并)

3.雅可比函数的求解可参考(1条消息) 未定义与 ‘double‘ 类型的输入参数相对应的函数 ‘jacobian‘【matlab问题集_01】_L1234X的博客-CSDN博客

 

标签:03,矩阵,工具集,x2,x3,特征方程,x1,x4
来源: https://blog.csdn.net/L1234X/article/details/120161661