0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于MATLAB连续模型求解方法介绍和分析

MATLAB 来源:djl 作者:卓金武 2019-09-16 11:41 次阅读

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

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

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

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

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

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

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

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

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

1.常规微分方程的求解

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

关于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 ,此函数的图形如图 1:

关于MATLAB连续模型求解方法介绍和分析

图1y关于x的函数图象

2.ODE 家族求解器

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

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

关于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),建立微分方程模型:

关于MATLAB连续模型求解方法介绍和分析

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

关于MATLAB连续模型求解方法介绍和分析

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=00.21;plot(X,Y,'-')

plot(y(:,1),y(:,2),'*'),hold on

x=01; y=-5*(1-x).^(4/5)/8+5*(1-x).^(6/5)/12+5/24;

plot(x,y,'r')

关于MATLAB连续模型求解方法介绍和分析

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 equal

title'Geometry With Edge Labels Displayed';

xlabel x

ylabel y

关于MATLAB连续模型求解方法介绍和分析

(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);

figure

pdemesh(model);

ylim([-1.1 1.1]);

axis equal

xlabel x

ylabel y

关于MATLAB连续模型求解方法介绍和分析

(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)模型的数值仿真

figure

umax = max(max(u));

umin = min(min(u));

for i = 1:n

pdeplot(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 x

ylabel y

zlabel u

M(i) = getframe;

end

关于MATLAB连续模型求解方法介绍和分析

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 函数
    +关注

    关注

    3

    文章

    4331

    浏览量

    62604
  • 生物学
    +关注

    关注

    0

    文章

    26

    浏览量

    12973
  • 数值模拟
    +关注

    关注

    0

    文章

    29

    浏览量

    9579
收藏 人收藏

    评论

    相关推荐

    Simulink与 MATLAB 的结合使用 Simulink中的信号处理方法

    在工程和科学研究中,信号处理是一个重要的领域,涉及到信号的采集、分析、处理和生成。MATLAB 提供了丰富的信号处理工具箱,而 Simulink 提供了一个直观的图形界面,使得复杂的信号处理系统可以
    的头像 发表于 12-12 09:25 323次阅读

    介绍FIR滤波模型的建立,分4个步骤

    本帖介绍FIR滤波模型的建立,分以下几个步骤: 选定滤波结构:低通、高通、带通、带阻; 选定合适的窗函数,常见的有hamming、hanning、blackman、ExactBlackman
    发表于 09-04 09:08

    matlab缆索动力学?

    关于这个我想获得细缆在水中的张力和构型的matlab求解,编程时候这个向量我怎么办
    发表于 08-29 15:57

    支路电流法是以什么为求解对象

    的定义 支路电流法是一种基于基尔霍夫电流定律(KCL)的电路分析方法。它通过将电路分解为若干个支路,并以这些支路的电流为变量,建立一组线性方程组来求解电路中的电流分布。 1.2 支路电流法的适用范围 支路电流法适用于各种线性和非
    的头像 发表于 08-08 17:00 1016次阅读

    对放大电路的分析方法介绍

    放大电路是电子威廉希尔官方网站 中非常重要的组成部分,它广泛应用于信号处理、通信、测量等领域。对于放大电路的分析,通常可以分为直流分析和交流分析两种情况。下面我们将介绍这两种
    的头像 发表于 08-07 10:08 626次阅读

    matlab预测模型怎么用

    MATLAB预测模型是一种基于统计和数学方法的预测工具,广泛应用于各种领域,如金融、气象、生物医学等。本文将介绍MATLAB预测
    的头像 发表于 07-11 14:33 615次阅读

    MATLAB预测模型哪个好

    MATLAB中,预测模型的选择取决于数据类型、问题复杂度和预测目标。以下是一些常见的预测模型及其适用场景的介绍: 线性回归(Linear Regression): 线性回归是最基本的
    的头像 发表于 07-11 14:31 426次阅读

    如何使用MATLAB创建预测模型

    在这篇文章中,我们将讨论如何使用MATLAB创建预测模型MATLAB(矩阵实验室)是一种用于数值计算、可视化和编程的高级编程语言和交互式环境。它广泛应用于工程、科学研究和金融领域。 1.
    的头像 发表于 07-11 14:29 681次阅读

    matlab预测模型有哪些

    环境,使其成为预测模型开发和实现的理想平台。本文将详细介绍MATLAB中常用的预测模型及其应用。 线性回归模型 线性回归是一种简单的预测
    的头像 发表于 07-11 14:27 768次阅读

    基于MATLAB 的质量守恒空化模型(JFO 模型

    可有大佬会基于MATLAB 的质量守恒空化模型(JFO 模型
    发表于 07-05 23:32

    matlab神经网络工具箱结果分析

    神经网络是一种强大的机器学习威廉希尔官方网站 ,广泛应用于各种领域,如图像识别、语音识别、自然语言处理等。MATLAB提供了一个功能强大的神经网络工具箱,可以帮助用户快速构建和训练神经网络模型。本文将介绍
    的头像 发表于 07-03 10:32 604次阅读

    基于MATLAB的信号处理系统与分析

    在信息威廉希尔官方网站 日新月异的今天,信号处理与分析威廉希尔官方网站 在通信、控制、生物医学、图像处理等领域的应用日益广泛。MATLAB作为一款功能强大的数学软件,为信号处理与分析提供了强大的工具和支持。本文旨在探讨
    的头像 发表于 05-17 14:24 1082次阅读

    gis中常用的空间分析方法

    将详细介绍GIS中常用的空间分析方法,包括空间插值、缓冲区分析、空间统计、领域分析、网络分析和多
    的头像 发表于 02-25 13:44 5589次阅读

    电驱动系统性能集成化分析

    对于电驱系统的仿真分析,传统方法是将不同的结构分割,然后再分领域的进行设计仿真分析。不同的仿真分析之间相互独立,系统级集成往往在后期阶段完成。或者采用多物理场联合仿真的
    的头像 发表于 01-16 15:05 744次阅读
    电驱动系统性能集成化<b class='flag-5'>分析</b>

    四种微调大模型方法介绍

    全微调(Full Fine-tuning):全微调是指对整个预训练模型进行微调,包括所有的模型参数。在这种方法中,预训练模型的所有层和参数都会被更新和优化,以适应目标任务的需求。
    发表于 01-03 10:57 2.4w次阅读
    四种微调大<b class='flag-5'>模型</b>的<b class='flag-5'>方法</b><b class='flag-5'>介绍</b>