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

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

3天内不再提示

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

MATLAB 来源:djl 作者:卓金武 2019-09-16 11:41 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

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

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

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

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

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

    文章

    4406

    浏览量

    66838
  • 生物学
    +关注

    关注

    0

    文章

    26

    浏览量

    13154
  • 数值模拟
    +关注

    关注

    0

    文章

    29

    浏览量

    9780
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    在ANSA中设置ABAQUS独立非线性分析步的方法

    搭建Abaqus有限元模型时,经常需要设置多分析步。在设置Abaqus多分析步的常用方法为在仿真分析任务中设置多个“Step”,将整个仿真任
    的头像 发表于 08-06 15:14 1051次阅读
    在ANSA中设置ABAQUS独立非线性<b class='flag-5'>分析</b>步的<b class='flag-5'>方法</b>

    使用 APx 音频分析仪测量等效连续声级

    在这篇文章中,我们将回答技术支持部门经常收到的一个问题:如何使用APx500音频分析仪测量等效连续声级Leq,T和A计权等效连续声级LAeq,T?等效连续声级在大多数环境中,环境声级随
    的头像 发表于 08-01 16:41 1186次阅读
    使用 APx 音频<b class='flag-5'>分析</b>仪测量等效<b class='flag-5'>连续</b>声级

    无刷直线直流电机非换相期间推力分析

    ,对数学模型进行了求解,推导出电流、推力的解析式:详细分析了PWM调制占空比、速度、反电动势系数对推力的影响,其中反电动势系数的分析结果对电机的设计具有重要的参考意义。最后,通过采用直
    发表于 07-09 14:22

    模型推理显存和计算量估计方法研究

    GPU、FPGA等硬件加速。通过分析硬件加速器的性能参数,可以估算模型在硬件加速下的计算量。 四、实验与分析 为了验证上述估计方法的有效性,我们选取了几个具有代表性的深度学习
    发表于 07-03 19:43

    提高SEA模型PBNR计算精度的方法及策略

    在汽车 NVH 工程领域, PBNR(Power Based Noise Reduction)分析是整车高频噪声舒适性开发中常用的方法,相比于传统的隔声量NR分析方法,PBNR
    的头像 发表于 06-30 09:30 903次阅读
    提高SEA<b class='flag-5'>模型</b>PBNR计算精度的<b class='flag-5'>方法</b>及策略

    轮毂电机电磁噪声测试方法及特性分析

    有限元模型求解径向力波,并以此为激励力求解电机外转子的受迫振动响应,利用LMS.Virtual.Lab建立轮毂电机电磁噪声边界元模型,基于正交试验原理对轮毂电机电磁保声进行仿真计算,
    发表于 06-10 13:19

    FA模型绑定Stage模型ServiceExtensionAbility介绍

    FA模型绑定Stage模型ServiceExtensionAbility 本文介绍FA模型的三种应用组件如何绑定Stage模型的Servi
    发表于 06-04 07:55

    普源示波器如何连接MATLAB实现数据采集与分析

    、高级算法应用等。本文将详细讲解普源示波器与MATLAB的连接方法、配置步骤、高级功能及实战案例,帮助用户快速搭建高效的数据采集与分析系统。   一、连接前的准备工作 在连接示波器与MATLA
    的头像 发表于 05-29 09:34 703次阅读

    KaihongOS操作系统FA模型与Stage模型介绍

    FA模型与Stage模型介绍 KaihongOS操作系统中,FA模型(Feature Ability)和Stage模型是两种不同的应用
    发表于 04-24 07:27

    IBIS模型中的Corner参数处理

    和电源完整性的影响。文章首先介绍了IBIS模型的历史演进,随后根据IBIS模型的基础架构详细讨论Corner在不同模型组件中的应用,最后介绍
    的头像 发表于 04-23 16:10 993次阅读
    IBIS<b class='flag-5'>模型</b>中的Corner参数处理

    MATLAB电机仿真精华50例【干货】

    、调整特性分析,发电机突然短路,直流电机机械特性、转矩特性、起动、调速与制动的仿真实例。3、异步电机内容包括三相异步电机的机械特性、αβ0系统异步电机仿真模型、dq0系统异步电机仿真模型、各种起动
    发表于 04-01 16:23

    直流电机控制方法Matlab仿真研究

    针对无刷直流电机的控制方法进行了深入研究 。根据无刷直流电机实际物理模型建立相应的数学模型,电机使用双闭环进行控制 。根据电机的实际工作特点,使用模糊自适应 PID 算法替代常规 PID 算法建立
    发表于 03-27 12:15

    MATLAB中的simulink中仿真速度过慢,状态量数值很小可以忽略,怎么忽略较小数值,加快仿真进度呢?

    由于目前我使用MATLAB中的Simscape Multibody插件进行仿真测试,载入物理模型后,使用PID搭建了初步的控制器。进行计算时,只能使用变步长的模式去求解,而且其计算步长特别小(大概为
    发表于 02-23 23:08

    如何在MATLAB中使用DeepSeek模型

    在 DeepSeek-R1(https://github.com/deepseek-ai/DeepSeek-R1) AI 模型横空出世后,人们几乎就立马开始询问如何在 MATLAB 中使用这些模型
    的头像 发表于 02-13 09:20 4063次阅读
    如何在<b class='flag-5'>MATLAB</b>中使用DeepSeek<b class='flag-5'>模型</b>

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

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