数学建模—微分方程

  • 引言
  • 微分方程求解
  • Matlab求解析解
  • Matlab求取数值解
  • 求解原理
  • matlab求解
  • 小结
  • 一段


引言

 数模课上讲的微分方程部分的知识,在之前一直是笔者弱项,在此将基础知识稍作整理后汇总成此博文,不足之处,望笔者多多指正。

微分方程求解

Matlab求解析解

 在Matlab中解析解常用函数库dslove来进行求解,常用的语法格式:

dsolve(‘方程1’,‘方程2’,…,‘方程n’,‘初始条件’,‘自变量’)
说明:在表达微分方程时,用字母D表示求微分,D2、D3等
表示求高阶微分.任何D后所跟的字母为因变量,自变量可以指
定或由系统规则选定为缺省

  • 例子1:求取MATLAB 求解微分方程等的深度学习库 matlab怎么求微分方程的解_编程语言的通解。
dsolve('Du=1+u^2','t')
  • 例子2:求取MATLAB 求解微分方程等的深度学习库 matlab怎么求微分方程的解_编程语言_02
y=dsolve('D2y+4*Dy+29*y=0','y(0)=0,Dy(0)=15','x')
  • 例子3:求方程 MATLAB 求解微分方程等的深度学习库 matlab怎么求微分方程的解_取数值_03通解
x,y,z]=dsolve('Dx=2*x-3*y+3*z',...
  'Dy=4*x-5*y+3*z','Dz=4*x-4*y+2*z', 't')

Matlab求取数值解

 在生产和科研中所处理的微分方程往往很复杂,且大多得不出一般解.而实际中的对初值问题,一般是要求得到解在若干个点上满足规定精确度的近似值,或者得到一个满足精确度要求的便于计算的表达式。

求解原理

  • 欧拉法
     在求解数值解过程中假设MATLAB 求解微分方程等的深度学习库 matlab怎么求微分方程的解_取数值_04,那么可以尝试用离散的方式去接微分方程:MATLAB 求解微分方程等的深度学习库 matlab怎么求微分方程的解_编程语言_05
    如果h步长较小,有:MATLAB 求解微分方程等的深度学习库 matlab怎么求微分方程的解_matlab_06
    可以得等到对应的欧拉公式:MATLAB 求解微分方程等的深度学习库 matlab怎么求微分方程的解_数学建模_07
  • 使用数值积分(改进欧拉)

对方程f(x,y)两边由MATLAB 求解微分方程等的深度学习库 matlab怎么求微分方程的解_取数值_08MATLAB 求解微分方程等的深度学习库 matlab怎么求微分方程的解_取数值_09进行积分,并利用梯形公式有:MATLAB 求解微分方程等的深度学习库 matlab怎么求微分方程的解_微分方程_10
得到:MATLAB 求解微分方程等的深度学习库 matlab怎么求微分方程的解_取数值_11
结合欧拉公式使用可以得到:
MATLAB 求解微分方程等的深度学习库 matlab怎么求微分方程的解_编程语言_12
满足精度条件后继续下一步的计算。

  • 此外还可以结合泰勒公式继续得到比如龙格—库塔法、线性多步法等。

matlab求解

 语法格式:

[t,x]=solver(’f’,ts,x0,options)
(偷懒直接截图)

MATLAB 求解微分方程等的深度学习库 matlab怎么求微分方程的解_编程语言_13

  • 例子4:MATLAB 求解微分方程等的深度学习库 matlab怎么求微分方程的解_数学建模_14
    求解程序:
%例子4函数
function dy=vdp1000(t,y)
    dy=zeros(2,1);
    dy(1)=y(2);
    dy(2)=1000*(1-y(1)^2)*y(2)-y(1);
end

命令窗口:
%例子4
t0=0;
tf=3000;
[T,Y]=ode15s('vdp1000',[0 3000],[2 0]); 
     plot(T,Y(:,1),'-')

运行结果:

MATLAB 求解微分方程等的深度学习库 matlab怎么求微分方程的解_微分方程_15

  • 例子5:MATLAB 求解微分方程等的深度学习库 matlab怎么求微分方程的解_数学建模_16
    求解程序:
%求解例子5
function dy=rigid(t,y)
       dy=zeros(3,1);
       dy(1)=y(2)*y(3);
       dy(2)=-y(1)*y(3);
       dy(3)=-0.51*y(1)*y(2);
end

命令行:
t0=0;
 tf=12;
 [T,Y]=ode45('rigid',[0 12],[0 1 1]);
     plot(T,Y(:,1),'-',T,Y(:,2),'*',T,Y(:,3),'+')

结果:

MATLAB 求解微分方程等的深度学习库 matlab怎么求微分方程的解_微分方程_17

小结

 在笔者本科阶段的学习过程中,微分求解方程的学习经历课程主要有:常微分方程、数值分析、数学建模。希望在未来的学习过程中将其进一步的串成网络。最后本文不足之处望多多指正。

一段

某程序员夫妇新婚,一年之后喜得贵子,取名"灵灵"
过一年后又喜得一女,取名"灵伊"
两年之后得子"伊灵"
两年之后,夫妇商定为得圆满再生一子,取名"伊伊"
不料产科发现所怀为双胞胎,夫欲减胎,妻不允,冥思许久,对夫曰:“老五就叫’忆初’吧…”