多智能体系统仿真学习笔记:(一)ODE 您所在的位置:网站首页 matlab的ode23 多智能体系统仿真学习笔记:(一)ODE

多智能体系统仿真学习笔记:(一)ODE

#多智能体系统仿真学习笔记:(一)ODE| 来源: 网络整理| 查看: 265

多智能体系统仿真学习笔记:(一)ODE (一)ODE的一般形式Ⅰ.常微分方程 (ODE)Ⅱ.ODE方程组Ⅲ.高阶ODEⅣ.复数ODE (二)Matlab中的ODEⅠ.Matlab中可求解的ODEⅡ.求解器的选择Ⅲ.使用方法(以ode45为例) (三)ODE使用示例Ⅰ.简单示例Ⅱ.复杂示例

(一)ODE的一般形式 Ⅰ.常微分方程 (ODE)

常微分方程 (ODE) 包含与一个自变量 t(通常称为时间)相关的因变量 y 的一个或多个导数。此处用于表示 y 相对于 t 的导数的表示法对于一阶导数为 y′,对于二阶导数为 y′′,依此类推。

ODE 的阶数即y 在方程中出现的最高阶导数。

Ⅱ.ODE方程组

ODE的主要描述方式,用以对复杂系统进行表示,形如 y ˙ = f ( t , y ) \dot y = f(t,y) y˙​=f(t,y) 其中, y = ( y 1 , y 2 , … , y n ) T y=(y_1,y_2,\dots,y_n)^T y=(y1​,y2​,…,yn​)T. 例如 { y 1 = y 2 y 2 = y 1 y 2 − 2 \left\{ \begin{aligned} y_1 & =y_2 \\ y_2 & =y_1y_2-2 \end{aligned} \right. {y1​y2​​=y2​=y1​y2​−2​

Ⅲ.高阶ODE

高阶 ODE 可通过常规代换法重写为等效的一阶方程组 y 1 = y ˙ y 2 = y ¨ … y n = y ( n − 1 ) \begin{aligned} y_1 & =\dot y \\ y_2 & =\ddot y\\ &\dots \\ y_n & = y ^{(n-1)} \end{aligned} y1​y2​yn​​=y˙​=y¨​…=y(n−1)​ 通过代换,我们可以得到一个新的方程组 y ˙ 1 = y y ˙ 2 = y ¨ … y ˙ n = y ( n − 1 ) \begin{aligned} \dot y_1 & =y \\ \dot y_2 & =\ddot y\\ &\dots \\ \dot y_n & = y ^{(n-1)} \end{aligned} y˙​1​y˙​2​y˙​n​​=y=y¨​…=y(n−1)​

Ⅳ.复数ODE

考虑复数 ODE 方程 y ˙ = f ( t , y )   , \dot y=f(t,y) , y˙​=f(t,y) , 其中 y = y 1 + i y 2 y=y_1+iy_2 y=y1​+iy2​。 为解算该方程,需要将实部和虚部分解为不同的解分量,最后重新组合相应的结果。从概念上讲,这类似于 y v = [ R e a l ( y ) , I m a g ( y ) ] f v = [ R e a l ( f ( t , y ) ) , I m a g ( f ( t , y ) ) ]   \begin{aligned} y_v & =[Real(y) ,Imag(y)] \\ f_v & =[Real(f(t,y)) ,Imag(f(t,y))] \ \end{aligned} yv​fv​​=[Real(y),Imag(y)]=[Real(f(t,y)),Imag(f(t,y))] ​

(二)Matlab中的ODE Ⅰ.Matlab中可求解的ODE

Matlab 中的 ODE 求解器可解算以下类型的一阶 ODE:

显式线性ODE: y ˙ = f ( t , y ) \dot y=f(t,y) y˙​=f(t,y);

线性隐式 ODE: M ( t , y ) y ˙ = f ( t , y ) M(t,y) \dot y=f(t,y) M(t,y)y˙​=f(t,y) – M(t,y) 为非奇异质量矩阵,该质量矩阵可能为时间或状态相关的矩阵,也可能为常量矩阵。 –线性隐式 ODE 可随时变换为显式形式

完全隐式 ODE: f ( t , y , y ˙ ) = 0 f(t,y,\dot y)=0 f(t,y,y˙​)=0 –该方程 不能重写为显式形式,还可能包含一些代数变量。 –ode15i 求解器专为完全隐式问题(包括微分指数为 1 的 DAE)而设计。

微分代数方程或 DAE –DAE 方程组会包含一些代数变量。代数变量是导数未出现在方程中的因变量。可通过对方程求导来将 DAE 方程组重写为等效的一阶 ODE 方程组,以消除代数变量。将 DAE 重写为 ODE 所需的求导次数称为微分指数。 –ode15s 和 ode23t 求解器可解算微分指数为 1 的 DAE。

Ⅱ.求解器的选择

ode45 适用于大多数 ODE 问题,一般情况下应作为首选求解器。但对于精度要求更宽松或更严格的问题而言,ode23 和 ode113 可能比 ode45 更加高效。 下表提供了关于何时使用每种不同求解器的一般指导原则。

求解器问题类型精度ode45非刚性中ode23非刚性低ode113非刚性低到高ode15s刚性低到中ode23s刚性低ode15i完全隐式低 Ⅲ.使用方法(以ode45为例)

A.语法

[t,y] = ode45(odefun,tspan,y0) [t,y] = ode45(odefun,tspan,y0,options) [t,y,te,ye,ie] = ode45(odefun,tspan,y0,options) sol = ode45(___)

B.参数说明 输出:

t:返回的时间;y:返回的状态值, y 中的每一行都与列向量 t 中返回的值相对应;te:求解事件函数何处为零时,事件的时间。;ye:求解事件函数何处为零时,事件发生的解;ie:求解事件函数何处为零时,触发的事件的索引。

输入:

odefun:给定的ode方程;tspan:求解的时间范围;y0:所求解的状态的初值;options:使用 odeset 函数创建的参数所定义的积分设置。例如,使用 AbsTol 和 RelTol 选项指定绝对误差容限和相对误差容限,或者使用 Mass 选项提供质量矩阵。 (三)ODE使用示例 Ⅰ.简单示例

解算ODE y ˙ = 2 t \begin{aligned} \dot y& =2t \end{aligned} y˙​​=2t​ 使用时间区间 [0,5] 和初始条件 y0 = 0。

tspan = [0 5]; y0 = 0; [t,y] = ode45(@(t,y) 2*t, tspan, y0);

绘图。

plot(t,y,'-o')

结果如下: 在这里插入图片描述

Ⅱ.复杂示例

Matlab有几个示例文件可用作大多数 ODE 问题的有用参考。要运行微分方程示例应用,以便轻松浏览和运行示例,请键入

odeexamples;

要打开单独的示例文件进行编辑,请键入

edit exampleFileName.m

要运行示例,请键入

exampleFileName

多智能体系统相关几个实例

名称求解器说明ballodeode23简单事件位置 - 弹球batonodeode45短棒的位置移动orbitodeode45高级事件位置 - 限制性三体问题

主要参考资料来源: Mathworks官方帮助中心 求解器的选择:https://ww2.mathworks.cn/help/matlab/math/choose-an-ode-solver.html#bu22m6i-1** ode45介绍:https://ww2.mathworks.cn/help/matlab/ref/ode45.html



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有