一、学习目标

(1)了解连续模型及解题步骤。

(2)掌握用 dsolve 求解常见的微分方程解析解。

(3)掌握用 ODE 家族的求解器求解数值解。

(4)掌握使用专用的求解器求解。

二、实例演练

(1)谈谈连续模型在数学建模中的应用。

连续模型是指模型是连续函数的一类模型总称,具体建模方法主要是微分方程建模。微分方程建模是数学建模的重要方法,因为许多实际问题的数学描述将导致求解微分方程的定解问题。把形形色色的实际问题化成微分方程的定解问题,大体上可以按以下几步:

1. 根据实际要求确定要研究的量(自变量、未知函数、必要的参数等)并确定坐标系。

    2. 找出这些量所满足的基本规律(物理的、几何的、化学的或生物学的等等)。

    3. 运用这些规律列出方程和定解条件。

        MATLAB 在微分模型建模过程中的主要作用是求解微分方程的解析解, 将微分方程转化为一般的函数形式。 另外, 微分方程建模, 一定要做数值模拟, 即根据方程的表达形式, 给出变量间关系的图形, 做数值模拟也需要用 MATLAB 来实现。

微分方程的形式多样,微分方程的求解也是根据不同的形式采用不同的方法, 在建模比赛中, 常用的方法有三种:

   1. 用 dsolve 求解常见的微分方程解析解

    2. 用 ODE 家族的求解器求解数值解

    3. 使用专用的求解器求解

(2)常规微分方程的求解

微分方程在 MATLAB 中固定的表达方式, 这些基本的表达方式如下表所示:

对于通常的微分方程, 一般需要先求解析解, 那么 dsolve  是首先考虑的求解器,因为dsolve 能够求解解析解其具体的用法如下:

[实例]求微分方程 xy'+y-e^x=0 在初始条件 y(1)=2e 下的特解,并画出解函数的图形.

求解本问题的 Matlab 程序为:

syms x y
y=dsolve('x*Dy+y-exp(x)=0','y(1)=2*exp(1)','x')
ezplot(y)

微分方程的特解为:y=1/x*exp(x)+1/x*exp (1) (Matlab格式),即 y=(e+e^x)/x ,此函数的图形如下图:

(2)ODE 家族求解器

如果微分方程的解析形式求解不出来, 那么退而求其次的办法是求解数值解, 那么这个时候就需要用 ODE 家族的求解器求解微分方程的数值解啦。

因为没有一种算法可以有效地解决所有的 ODE 问题,为此,MATLAB 提供了多种求解器,对于不同的 ODE 问题,采用不同的 Solver。MATLAB 中常用的微分方程数值解的求解器及特点如下表所示。

要特别提醒的是:ode23、ode45 是极其常用的用来求解非刚性标准形式一阶常微分方程(组)初值问题解的 Matlab 的常用程序,其中:

ode23 采用龙格-库塔2 阶算法,用3 阶公式作误差估计来调节步长,具有低等的精度.

ode45 则采用龙格-库塔4 阶算法,用5 阶公式作误差估计来调节步长,具有中等的精度.

[实例]导弹追踪问题

设位于坐标原点的甲舰向位于 x 轴上点 A(1, 0) 处的乙舰发射导弹,导弹头始终对准乙舰。如果乙舰以最大的速度 v0 (是常数)沿平行于 y 轴的直线行驶,导弹的速度是 5*v0,求导弹运行的曲线方程,以及乙舰行驶多远时,导弹将它击中?

记导弹的速度为 w,乙舰的速率恒为 v0。设时刻 t 乙舰的坐标为 (X(t),Y(t)),导弹的坐标为 (x(t),y(t)) 。当零时刻,(X(0),Y(0))=(1,0),(x(0),y(0))=(0,0),建立微分方程模型:

因乙舰以速度 v0 沿直线 x=1 运动,设 v0=1,w=5,X=1,Y=t,因此导弹运动轨迹的参数方程为:

MATLAB 求解数值解程序如下:

(1) 定义方程的函数形式:

function dy=eq2(t,y)
dy=zeros(2,1);
dy(1)=5*(1-y(1))/sqrt((1-y(1))^2+(t-y(2))^2);
dy(2)=5*(t-y(2))/sqrt((1-y(1))^2+(t-y(2))^2);

2) 求解微分方程的数值解

t0=0,tf=0.21;
[t,y]=ode45('eq2',[t0 tf],[0 0]);
X=1;Y=0:0.001:0.21;plot(X,Y,'-')
plot(y(:,1),y(:,2),'*'),hold on
x=0:0.01:1; y=-5*(1-x).^(4/5)/8+5*(1-x).^(6/5)/12+5/24;
plot(x,y,'r')

(3)专用求解器

对于复杂的微分方程模型的求解, 可以借助 MATLAB 偏微分方程工具箱中的专用求解器。以下将以一个实例来看看如何借助偏微分方程工具箱来实现一个微分方程的求解与数值仿真。

所研究的对象是一个二阶波的方程:

这个时候要查看一下 MALTAB 中哪个函数能求解相类似的方程, solvepde 可以求解的方程形式为:

可以发现只要通过参数设定就可以将所要求解的方程转化成这种标准形式。

具体求解步骤如下:

(1)  设置参数

c = 1;a = 0;f = 0;m = 1;

(2)  定义波的空间位置

numberOfPDE = 1;model = createpde(numberOfPDE);geometryFromEdges(model,@squareg);pdegplot(model,'EdgeLabels','on');ylim([-1.1 1.1]);axis equaltitle 'Geometry With Edge Labels Displayed';xlabel xylabel y

(3)  定义微分方程模型的系数和边界条件

specifyCoefficients(model,'m',m,'d',0,'c',c,'a',a,'f',f);applyBoundaryCondition(model,'dirichlet','Edge',[2,4],'u',0);applyBoundaryCondition(model,'neumann','Edge',([1 3]),'g',0);

4)  定义该问题的有限元网格

generateMesh(model);figurepdemesh(model);ylim([-1.1 1.1]);axis equalxlabel xylabel y

(5)  定义初始条件

u0 = @(location) atan(cos(pi/2*location.x));ut0 = @(location) 3*sin(pi*location.x).*exp(sin(pi/2*location.y));setInitialConditions(model,u0,ut0);

(6)  方程的求解

n = 31;  % 求解次数tlist = linspace(0,5,n);model.SolverOptions.ReportStatistics ='on';result = solvepde(model,tlist);u = result.NodalSolution;

(7)  模型的数值仿真

figureumax = max(max(u));umin = min(min(u));for i = 1:npdeplot(model,'XYData',u(:,i),'ZData',u(:,i),'ZStyle','continuous',...'Mesh','off','XYGrid','on','ColorBar','off');axis([-1 1 -1 1 umin umax]);caxis([umin umax]);xlabel xylabel yzlabel uM(i) = getframe;end

Matlab数学建模(七):连续模型相关推荐

  1. MATLAB数学建模:数学规划模型

    数学规划模型 数学规划是运筹学的一个重要分支,也是现代数学的一门重要学科.在实际问题的需要和计算机的飞速发展背景之下,数学规划迅速发展并成为了一门活跃的新兴学科. 在本章中,我们将介绍数学规划模型的概 ...

  2. Matlab中一球反弹的高度,matlab数学建模2乒乓球的弹跳和罗基斯帝模型.doc

    matlab数学建模2乒乓球的弹跳和罗基斯帝模型.doc 1乒乓球的弹跳罗基斯第模型问题罗基斯第模型一个乒乓球离球拍的高度为H0,落在球拍上反弹,设恢复系数为E,不计空气阻力.1如果E为常数,讨论球的 ...

  3. 《MATLAB数学建模方法与实践(第3版)》第2章学习笔记

    第2章 MATLAB数学建模快速入门 2.1 MATLAB快速入门 2.1.1 MATLAB概要 MATLAB是矩阵实验室(Matrix Laboratory)的缩写.MATLAB的基本数据单元是矩阵 ...

  4. 在matlab中以图像中心为旋转轴逆时针旋转30度自编程序,MATLAB数学建模习题

    MATLAB数学建模习题1 一.单项选择题(将选择答案写在答题纸上,每小题2分共20分) 1.在MATLAB命令窗口中键入命令,Vname=prod(7:9)/prod(1:3),可计算组合数 如果省 ...

  5. matlab数学建模方法与实践 笔记1:快速入门

    入门案例 1.导入数据 2.数据探索 3.多项式拟合 4.发布功能 5.数据类型 6.全部代码 代码在Cha2文件夹下 1.导入数据 2.数据探索 3.多项式拟合 4.发布功能 5.数据类型 6.全部 ...

  6. 排课系统matlab,matlab数学建模排课

    matlab数学建模排课Tag内容描述: 1.TOMLAB课表编排问题 我们老师让我们做一个课表编排问题 题目见 我试图用基于MATLAB的一个软件TOMLAB做 因为他有一个例子 见 由于我对MAT ...

  7. 数学建模基本算法模型Chapter1--线性规划

    数学建模基本算法模型Charpter1–线性规划(LP) By 进栈需检票 一.线性规划基本概念 1.Linear Programming (LP问题) 列出方程组不等式求解(基本形式) 包含目标函数 ...

  8. matlab球落点的数学建模,MATLAB数学建模:智能优化算法-人工鱼群算法

    MATLAB 数学建模: 人工鱼群算法 1. 基本原理 人工鱼群算法是一种受鱼群聚集规律而启发的优化算法. 在人工鱼群算法中, 我们假定鱼群的活动行为分为: 觅食行为, 群聚行为, 追随行为和随机行为 ...

  9. 数学建模matlab imread,《matlab数学建模方法与实践》第三章 数据的处理

    3.1数据的获取 3.1.1从Excel中读取数据 a= xlsread('路径',n(sheetn),'A(n-1):Bn(读入的数据范围)') 3.1.2从TXT中读取数据 3.1.2.1.1 同 ...

  10. 数学建模——逻辑回归模型Python代码

    数学建模--逻辑回归模型详解Python代码 程序用到的测试数据: 链接:https://pan.baidu.com/s/1LGD1MAxk2lxO93smSPNyZg 提取码:uukr 代码正文 i ...

最新文章

  1. 干货!这里有一份神经网络入门指导,请收下!
  2. 爱奇艺效果广告的个性化探索与实践
  3. 虚拟机Linux下解决ping时出现 unknown host问题
  4. 百度地图android自定义文字,androidsdk | 百度地图API SDK
  5. c++ 通过 myodbc连接到 远程linux 上的mysql server
  6. 今晚8点:基于强化学习的关系抽取和文本分类 | PhD Talk #18
  7. 使用vert.x 2.0,RxJava和mongoDB创建simpe RESTful服务
  8. ZooKeeper的安装和API
  9. 【01】如何在XMind中排列自由主题
  10. PTA 7-1 判断素数
  11. Dynamic resolution 动态分辨率 相机系列6
  12. Capstone/CS5211低成本替代昆泰CH7511B方案
  13. opencv-python Shi-Tomasi角点检测和特征追踪
  14. 数字图像处理-第一章
  15. C++语言Switch函数使用小贴士
  16. 计算并返回 x 的平方根,其中 x 是非负整数。
  17. 艺术字生成工具 | Mixlab创意编程
  18. Git入门与进阶 - 总览
  19. 整车电源状态 K15 KL30 KL31
  20. kali系列-一.kali U盘安装

热门文章

  1. python---使用QQ邮箱发送邮件
  2. jQuery播放音乐
  3. 快速了解Mesh组网及应用
  4. catflag Crypto KeyBoard
  5. CTF.show-mx密码2
  6. 解放双手——Android的自动化构建及发布
  7. Liunx运维整理文案-网络管理命令大全
  8. 经典算法之直接插入排序法
  9. 数字图像处理(MATLAB)(第二版) 冈萨雷斯 学习笔记
  10. 车型识别API调用与批量分类车辆图片