MATLAB课程设计——《微分方程》
1.微分方程模型
如果有一个实际问题,要找一个量y,与另一个量t(时间或其它变量)的关系,这种关系涉及量y在每个t时的瞬时变化率,而且这个瞬时变化率与量y与t的关系可以确定,那么这样的问题通常可以通过微分方程来解决。其常见模型有传染病模型、经济增长模型、药物在体内的分布与排除模型、人口的预测与控制模型、烟雾的扩散与消失模型等。
2.matlab求微分方程的符号解
求解线性常微分方程函数r=dsove('eq1,eq2,...', 'cond1,cond2,...', 'v')可以有以下几种调用格式.
(1) r=dsolve('eqn','v'):输入eqn为符号微分方程,v为自变量,系统缺省的自变量为t,返回方程通解;
(2) r=dsolve('eq1,eq2,...','v'): 输入eq1,eq2...为符号微分方程组,v为自变量,返回方程通解;
(3) r=dsolve('eqn', 'cond1,cond2,...', 'v'):输入eqn为符号微分方程,而cond1,cond2初始条件,v为自变量,返回方程特解;
(4) r=dsolve('eq1,eq2,...', 'cond1,cond2,...', 'v'):输入eq1,eq2...为符号微分方程组,而cond1,cond2初始条件,v为自变量,返回方程组特解;
一阶导dy/dx写成Dy, n 阶导写成Dny.
例1 求下列常微分方程的通解:
(1) dy/dx=2xy;
(2) dy/dx-2y/(x+1)=(x+1)^(5/2);
(3) y''-5y'+6y=xe^(2x).
解:输入程序并运行
>> (1) dy/dx=2xy;
>> dsolve('Dy=2*x*y','x')
ans =
C1*exp(x^2)
>> (2) dy/dx-2y/(x+1)=(x+1)^(5/2);
>> dsolve('Dy-2*y/(x+1)=(x+1)^(5/2)','x')
ans =
2/3*(x+1)^(3/2)*x^2+4/3*(x+1)^(3/2)*x+2/3*(x+1)^(3/2)+C1*x^2+2*C1*x+C1
(3) y''-5y'+6y=xe^(2x).
>> dsolve('D2y-5*Dy+6*y=x*exp(2*x)','x')
ans =
-1/2*exp(2*x)*(x^2+2*x+2)+C1*exp(2*x)+C2*exp(3*x)
3.初值问题的matlab数值解
如果在自变量的某值给出适当个数的附加条件,用来确定微分方程的特解,则这类问题称为初值问题。
1:问题
常微分方程的初值问题的标准数学表述为:
我们要求解的任何高阶常微分方程都可以用替换法化为上式所示的一阶形式,其中y为向量,yo为初始值。
2:Matlab中解决以上问题的步骤(1):化方程组为标准形式。
例如:y’’’-3y’’-y’y=0,y(0)=0,y’(0)=1,y’’(0)=-1. 把微分方程的高阶导数写为低阶导数的算式,即:
y’’’=3y’’+y’y,设:y1=y,y2=y’,y3=y’’,则原方程化为下列等价的方程组:
满足初值条件:已把该方程化成了标准形式。例.分别用步长0.05,0.1,0.125,0.2h来求初值问题在区间[0,8]上的近似解
解:利用如下代码,注意其中作为输入参数的函数的代码的编写方法,以及ODE解法器ode45的调用方法。
function zzz
h=0.1;
y0=1;tspan=0:h:8;
[t,y] = ode45(@f,tspan,y0);
[t,y]
hold on;
plot(tspan,y,'--k',tspan,fu(tspan),'-b');
title('Solution of IVP in eg1');
xlabel('time t');
ylabel('solution u');
legend('numerical solutons','true solutions');
function dudt=f(t,u)
dudt=u-2*t./u;
function
u=fu(t) u=sqrt(1+2*t);
4.边值问题的Matlab数值解
在微分方程中,边值问题是一个微分方程和一组称之为边界条件的约束条件。边值问题的解通常是符合约束条件的微分方程的解。
物理学中经常遇到边值问题,例如波动方程等。许多重要的边值问题属于Sturm-Liouville问题。这类问题的分析会和微分算子的本征函数有关。
在实际应用中,边值问题应当是适定的(即,存在解,解唯一且解会随着初始值连续的变化)。许多偏微分方程领域的理论提出是为要证明科学及工程应用的许多边值问题都是适定问题。
最早研究的边值问题是狄利克雷问题,是要找出调和函数,也就是拉普拉斯方程的解,后来是用狄利克雷原理找到相关的解。
求微分方程
(1+x)D2y=2y-4
初始条件
y(0)=0
y(1)=2Dy(1)
dydx = (x,y) [y(2);(2*y(1)-4)/(1+x) ];
res = (ya,yb) [yb(2) - yb(1)/2;ya(1) - 0 ];
solinit = bvpinit(linspace(0,1,10),[1 0]);
sol = bvp4c(dydx,res,solinit);
xint = linspace(0,1,50);
Sxint = deval_r(sol,xint);
5.数学建模应用实例
视频连接:https://www.doczj.com/doc/b312101802.html,/show/MNEwm6qFPR4M7CZK.html
https://www.doczj.com/doc/b312101802.html,/show/wc5E8Z4BUMxLDbgg.html
微分方程教学.p p t
https://www.doczj.com/doc/b312101802.html,/s/BN0k2EjtOe2u1#_loginLayer_1452495360576 PPT地址
有关书籍:《数学建模方法与应用》韩中庚解放军信息工程大学。