matlab使用教程(24)—常微分方程(ODE)求解器

news2024/10/6 22:20:13

1.常微分方程

        常微分方程 (ODE) 包含与一个自变量 t(通常称为时间)相关的因变量 y 的一个或多个导数。此处用于表示 y 关于 t 的导数的表示法对于一阶导数为 y ,对于二阶导数为 y ′′,依此类推。ODE 的阶数等于 y 在方程中出现的最高阶导数。
        例如,这是一个二阶 ODE:
y ′′ = 9 y
        在初始值问题中,从初始状态开始解算 ODE。利用初始条件 y 0 以及要在其中求得答案的时间段(t0,tf ),以迭代方式获取解。在每一步,求解器都对之前各步的结果应用一个特定算法。在第一个这样的时间步,初始条件将提供继续积分所需的必要信息。最终结果是,ODE 求解器返回一个时间步向量t = [ t 0 , t 1 , t 2 , ..., t f ] 以及在每一步对应的解 y = [y0 , y 1 , y 2 , ..., yf ]。

2.ODE 的类型

        MATLAB 中的 ODE 求解器可解算以下类型的一阶 ODE:
        • y ′ = f(t , y  )形式的显式 ODE。
        • M (t , y )y ′ = f (t , y  )形式的线性隐式 ODE,其中 M t , y 为非奇异质量矩阵。该质量矩阵可以是时间或状态依赖的矩阵,也可以是常量矩阵。线性隐式 ODE 涉及在质量矩阵中编码的一阶 y 导数的线性组合。
        线性隐式 ODE 可随时变换为显式形式 y′ = M^{-1}(t,y)f(t,y)。不过,将质量矩阵直接指定给 ODE 求解器可避免这种既不方便还可能带来大量计算开销的变换操作。
        • 如果 y′ 的某些分量缺失,则这些方程称为微分代数方程或 DAE,并且 DAE 方程组会包含一些代数变量。代数变量是导数未出现在方程中的因变量。可通过对方程求导来将 DAE 方程组重写为等效的一阶ODE 方程组,以消除代数变量。将 DAE 重写为 ODE 所需的求导次数称为微分指数。 ode15sode23t 求解器可解算微分指数为 1 的 DAE。
        • f( t , y , y ′ )= 0 形式的完全隐式 ODE。完全隐式 ODE 不能重写为显式形式,还可能包含一些代数变量。ode15i 求解器专为完全隐式问题(包括微分指数为 1 的 DAE)而设计。
        可通过使用 odeset 函数创建 options 结构体,来针对某些类型的问题为求解器提供附加信息。

3.ODE 方程组

        您可以指定需要解算的任意数量的 ODE 耦合方程,原则上,方程的数量仅受计算机可用内存的限制。如果方程组包含 n 个方程,
        则用于编写该方程组代码的函数将返回一个向量,其中包含 n 个元素,对应于 y 1 , y 2 , … , y n 值。例如,考虑以下包含两个方程的方程组
        用于编写该方程组代码的函数为
function dy = myODE(t,y)
dy(1) = y(2);
dy(2) = y(1)*y(2)-2;
end

4.高阶 ODE

        MATLAB ODE 求解器仅可解算一阶方程。您必须使用常规代换法,将高阶 ODE 重写为等效的一阶方程组
y 1 = y
y 2 = y
y 3 = y ′′
y n = y^{n-1} .
        这些代换将生成一个包含 n 个一阶方程的方程组

        例如,考虑三阶 ODE :y′′′ − y′′y + 1 = 0,并使用代换法

y 1 = y
y 2 = y
y 3 = y ′′
        生成等效的一阶方程组

        此方程组的代码则为 

function dydt = f(t,y)
 dydt(1) = y(2);
 dydt(2) = y(3);
 dydt(3) = y(1)*y(3)-1;
end

5.复数 ODE

        考虑复数 ODE 方程
y ′ = f (t , y ) ,
        其中 y = y 1 + iy 2。为解算该方程,需要将实部和虚部分解为不同的解分量,最后重新组合相应的结果。从概念上讲,这类似于
例如,如果 ODE 为 y ′ = yt + 2 i ,则可以使用函数文件来表示该方程:
function f = complexf(t,y)
f = y.*t + 2*i;
end
        然后,分解实部和虚部的代码为
function fv = imaginaryODE(t,yv)
% Construct y from the real and imaginary components
y = yv(1) + i*yv(2);
% Evaluate the function
yp = complexf(t,y);
% Return real and imaginary in separate components
fv = [real(yp); imag(yp)];
end
        在运行求解器以获取解时,初始条件 y0 也会分解为实部和虚部,以提供每个解分量的初始条件。
y0 = 1+i;
yv0 = [real(y0); imag(y0)];
tspan = [0 2];
[t,yv] = ode45(@imaginaryODE, tspan, yv0);
        获得解后,将实部和虚部分量组合到一起可获得最终结果。
y = yv(:,1) + i*yv(:,2);

6.基本求解器选择

        ode45 适用于大多数 ODE 问题,一般情况下应作为您的首选求解器。但对于精度要求更宽松或更严格的问题而言, ode23 ode78 ode89 ode113 可能比 ode45 更加高效。
        一些 ODE 问题具有较高的计算刚度或难度。术语“刚度”无法精确定义,但一般而言,当问题的某个位置存在标度差异时,就会出现刚度。例如,如果 ODE 包含的两个解分量在时间标度上差异极大,则该方程可能是刚性方程。如果非刚性求解器(例如 ode45)无法解算某个问题或解算速度极慢,则可以将该问题视为刚性问题。如果您观察到非刚性求解器的速度很慢,请尝试改用 ode15s 等刚性求解器。在使用刚性求解器时,可以通过提供 Jacobian 矩阵或其稀疏模式来提高可靠性和效率。
        下表提供了关于何时使用每种不同求解器的一般指导原则。

 

7.ODE 示例和文件摘要

        有几个示例文件可用作大多数 ODE 问题的有用起点。要运行微分方程示例应用,以便轻松浏览和运行示例,请键入
odeexamples
        要打开单独的示例文件进行编辑,请键入
edit exampleFileName.m
        要运行示例,请键入
exampleFileName
        此表包含可用的 ODE 和 DAE 示例文件及其使用的求解器和选项的列表。其中包含示例子集的链接,这些示例也已直接发布在文档中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/928363.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python爬虫实战零基础(3)——某云音乐

爬取某些云网页音乐,无需app 分析网页第二种方式批量爬取 声明:仅供参考学习,参考,若有不足,欢迎指正 你是不是遇到过这种情况,在pc端上音乐无法下载,必须下载客户端才能下载? 那么&…

采集项目和数仓项目的关系

1.介绍 采集项目和数仓项目 采集和数仓是企业数据管理平台的2个核心功能模块,相对独立,所以可以独立开发 区别 功能 采集:数据的采集和传输 数仓:数据的存储 流程 数据库->数据采集->数据仓库->可视化界面 2.数据仓库 什么是数仓? 1.名称 数据库 : database…

杰克逊霍尔央行年会倒计时!鲍威尔压轴登场,美股能否重现“厄运九分钟”?

“央行行长的达沃斯论坛”——杰克逊霍尔央行年会将于美国当地时间本周四至周六举行,主题为“全球经济的结构性变化”,来自全球主要的央行行长、财政官员、经济学家、知名学者、财经媒体等齐聚一堂,共商经济前景和货币政策。 对于这些主要货币…

shopee马来西亚站市场情况如何?卖家怎么选品?

一、shopee马来西亚市场 马来西亚是东南亚的中心地带,拥有3,278万人口,其中30岁以下的年轻人占总人口的49%。马来西亚的经济发展较好,在电商市场方面具备良好的发展潜力。在热销品类方面,母婴用品、时尚服饰、美妆保健品和家居用…

数据库-表连接的几种方式

文章目录 1. 数据库表连接方式简介2. 内连接(INNER JOIN)3. 左外连接(LEFT JOIN)4. 右外连接(RIGHT JOIN)5. 全连接(FULL OUTER JOIN)6. 交叉连接(CROSS JOIN&#xff09…

vue组件的使用

一、首先要穿件组件构造器对象,或者导入组件 1..在本部分注册组件其中组件为子组件 2.在本部分注册组件 二、而后注册组件 1.在本部分注册组件其中组件为子组件 2.在本部分注册组件 三、 接着,使用组件。 1.在本部分注册组件其中组件为子组件 其中v-i…

帮助中心应该用什么工具做?

在线帮助中心是指一个位于互联网上的资源平台,提供给用户获取产品或服务相关信息、解决问题以及获取技术支持的渠道。它通常包含了组织化的知识库、常见问题解答(FAQ)、操作指南、教程视频、用户手册等内容。在线帮助中心的主要目标是为用户提…

M1 Pro 利用docker 搭建pytho2的开发环境,以vscode连接开发为例

使用 M1 Pro (不支持python2的安装)开发,需要使用 Python 2.7 的环境,在使用 pyenv 安装 Python 2 时遇到了各种奇怪的问题。最终,我决定使用 Docker 搭建开发环境,并使用 VS Code 连接到本地容器。以下是详…

run control for NI-RT

1.carsim运行配置 ①为选择车辆模型运行的平台; ② NIRT 平台(transfer to NI-RT target); ③是选择车辆模型的配置文件(包含NI 实时机连接配置及车辆输入输出接口配置) 2.配置文件设置 选择模型传输方式“…

Discuz!论坛发帖标题字数限制80字符可以修改吗?修改发帖标题字数的方法

Discuz!论坛发帖标题字数限制80字符修改方法 1.数据库修改2.修改JS验证字符数文件3.修改模板中写死的字符限制数4.修改函数验证文件5.修改语言包文件6.更新缓存 Discuz X3.4论坛网站帖子标题字数限制80字符,当我们想使用长标题的时候就得一删再删,实在是…

编写Dockerfile制作Web应用系统nginx镜像

文章目录 题目要求:一、创建文档,编写Dockerfile文件可以将harbor仓库去启动先起来 二、运行Dockerfile,构建nginx镜像三、推送导私有仓库,也就是我们的harbor仓库 题目要求: 编写Dockerfile制作Web应用系统nginx镜像…

高效公文校对与文字处理:走进自然语言技术的新时代

在数字化时代的浪潮中,无论是政府材料、新闻稿、还是发言稿,高质量的文字内容成为了信息传递的核心。为了确保内容的专业性和准确性,公文校对和文字处理技术的进步成为了不可或缺的关键。本文将深入探讨自然语言处理技术如何为公文校对和文字…

卷轴模式:适用于多种电商场景的商业营销模式

当绿色消费成为行业趋势,合理消费成为人们的共识时,电商平台应该如何发展?如何创新?如何走得更远? 随着电商行业的变化,新时代的到来必然会产生新的模式,人们的消费观念不断变化。近年来&#…

VBA命令及语法列表之在代码:在字符串中添加新行

【分享成果,随喜正能量】烦恼本无根,不捡自然无。外面没有别人,只有你自己,一切烦恼都源于内耗。与其在内耗中耗费时间,不如用行动来提升自我,成就强大的人生。。 我给VBA下的定义:VBA是个人小…

机器学习实战之模型的解释性:Scikit-Learn的SHAP和LIME库

概要 机器学习模型的“黑箱”困境 机器学习模型的崛起让我们惊叹不已!不论是预测房价、识别图片中的猫狗,还是推荐给你喜欢的音乐,这些模型都表现得非常出色。但是,有没有想过,这些模型到底是如何做出这些决策的呢&a…

跨境独立站引流怎么做?必看的高转化教学

熟悉跨境外贸的小伙伴应该清楚,不同于国内消费者习惯于在购物平台消费,国外买家大多喜欢登录品牌独立网站(独立站)进行购物。这也是许多跨境小伙伴入局独立站的原因之一。 但是,即使你拥有一个精美的网站,如果没有足够的流量它也…

CRUD啥也不会的高狗剩

xml resultType MyBatis查询结果resultType返回值类型详细介绍_留兰香丶的博客-CSDN博客 Mapper Service List<Map<String,String>>遍历方法 List&#xff1c;Map&#xff1c;String, String&#xff1e;&#xff1e;遍历的方法_list<map<string,string&…

分班查询工具,快速查询学生分班情况

学校的分班和分组工作对于学生来说非常重要。它有助于促进学生之间的交流和合作&#xff0c;提高他们的学习效果。通过分班和分组&#xff0c;学校可以根据学生的兴趣、能力和性格等因素&#xff0c;将他们合理地安排到不同的班级和小组中。 这样一来&#xff0c;学生们可以与志…

Netty-01-快速掌握Java NIO

文章目录 一、从传统I/O到Java NIO二、NIO 三大组件1. Channel&#xff08;通道&#xff09;1.1. FileChannel1.1.1. 获取 FileChannel1.1.2. FileChannel 读取 文件1.1.3. FileChannel写⽂件1.1.4. 通道之前传输数据-transferFrom1.1.5. 通道之前传输数据-transferTo 1.2. Soc…

MQTT Windows 安装及开机自启

一&#xff1a;搭建服务 下载地址&#xff1a; https://www.emqx.io/zh/downloads?osWindows 使用指南&#xff1a; https://www.emqx.io/docs/zh/v5.1/getting-started/getting-started.html#%E5%90%AF%E5%8A%A8-emqx 下载解压&#xff1a; 以管理员打开CMD&#xff0c;进…