【數學建模】day05-微分方程建模


很多問題,歸結起來是微分方程(組)求解的問題。比如:為什么使用三級火箭發射衛星、阻滯增長人口模型的建立……

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

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

matlab求常微分方程:

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

param:

  eqns:符號微分方程或者符號微分方程組(逗號隔開即可)

  conds:初值條件

return:

  有conds返回符號解,否則返回通解

 

例子:

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

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

1 clc,clear
2 syms y(x);
3 
4 dsolve(x^2+y+(x-2*y)*diff(y) == 0)


image

2. 求解常微分方程,初值問題

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

 

1 clc,clear
2  syms y(x)
3  df = diff(y);
4  d2y = diff(y,2);
5  y = dsolve(diff(y,3) - d2y == x,y(1) == 8,df(1) == 7,d2y(2) == 4)
6 
7 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 + 3*g == sin(x),diff(g) + diff(f) == cos(x));
 f1 = simplify(f1)
 g1 = simplify(g1)
 %特解
[f2,g2] = dsolve(df + 3*g == sin(x),diff(g) + df == cos(x),df(2) == 0,f(3) == 3,g(5) == 1);
 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 = [2 1 3;0 2 -1;0 0 2];
 B = [1 2 1]';
 [x,y,z] = dsolve(diff(X) == A*X,X(0) == 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模型

image

image

image

 

 

2. 阻滯增長模型(Logistic模型)

image

image

image


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM