【数学建模】day05-微分方程建模

时间:2023-03-09 06:52:17
【数学建模】day05-微分方程建模

很多问题,归结起来是微分方程(组)求解的问题。比如:为什么使用三级火箭发射卫星、阻滞增长人口模型的建立……

MATLAB提供了良好的微分方程求解方案。

一、MATLAB求微分方程的符号解

matlab求常微分方程:

[y1,….yN] = dsolve(eqns,conds,Name,Value);

param:

  eqns:符号微分方程或者符号微分方程组(逗号隔开即可)

  conds:初值条件

return:

  有conds返回符号解,否则返回通解

例子:

1. 求解常微分方程通解:

x^2 + y + ( x-2y)*y'= 0;

 clc,clear
syms y(x); dsolve(x^+y+(x-*y)*diff(y) == )

【数学建模】day05-微分方程建模

2. 求解常微分方程,初值问题

y'''– y' = x; y(1) = 8,y'(1) = 7,y''(2) = 4

 clc,clear
syms y(x)
df = diff(y);
d2y = diff(y,);
y = dsolve(diff(y,) - d2y == x,y() == ,df() == ,d2y() == ) t = simplify(y) %化简结果

y =x*((exp(-1)*(19*exp(1) - 14))/2 - 1) + 7*exp(-2)*exp(x) - x^2/2 - x^3/6 + (exp(-1)*(19*exp(1) - 14))/2 - (exp(-1)*(25*exp(1) - 21))/3 - 1
t =(17*x)/2 + 7*exp(x - 2) - 7*x*exp(-1) - x^2/2 - x^3/6 + 1/6

3. 常微分方程组

f''+ 3g = sin(x)

g'+ f' = cos(x)

求通解以及在初值条件为f'(2) = 0,f(3) = 3,g(5) =1处的一个特解。

clc,clear
syms f(x) g(x)
df = diff(f);
[f1,g1] = dsolve(df + *g == sin(x),diff(g) + diff(f) == cos(x));
f1 = simplify(f1)
g1 = simplify(g1)
%特解
[f2,g2] = dsolve(df + *g == sin(x),diff(g) + df == cos(x),df() == ,f() == ,g() == );
f2 = simplify(f2)
g2 = simplify(g2)

4. 求线性微分方程组

X‘ = AX,初值X(0) = [1 2 1]’;这里X是向量 A是矩阵

其中,A = [2 1 3;0 2 –1;0 0 2];

syms x(t) y(t) z(t)
X = [x;y;z];
A = [ ; -; ];
B = [ ]';
[x,y,z] = dsolve(diff(X) == A*X,X() == B)

x =exp(2*t) + 5*t*exp(2*t) - (t^2*exp(2*t))/2
y =2*exp(2*t) - t*exp(2*t)

z =exp(2*t)

5. 其他微分方程组形式、初值、边值问题,用到查阅。

6. 另外注意一点,常微分方程的离散化解法不失为一种很有效的解法(差分、差商解法),这在《数值分析》一课中有讲解。

二、人口模型

1. Malthus模型

【数学建模】day05-微分方程建模

【数学建模】day05-微分方程建模

【数学建模】day05-微分方程建模

2. 阻滞增长模型(Logistic模型)

【数学建模】day05-微分方程建模

【数学建模】day05-微分方程建模

【数学建模】day05-微分方程建模