第12章 MATLAB常微分方程(组)数值求解方程与方程组的数值解

上传人:资****亨 文档编号:133876532 上传时间:2020-05-31 格式:PPT 页数:32 大小:232.50KB
返回 下载 相关 举报
第12章 MATLAB常微分方程(组)数值求解方程与方程组的数值解_第1页
第1页 / 共32页
第12章 MATLAB常微分方程(组)数值求解方程与方程组的数值解_第2页
第2页 / 共32页
第12章 MATLAB常微分方程(组)数值求解方程与方程组的数值解_第3页
第3页 / 共32页
第12章 MATLAB常微分方程(组)数值求解方程与方程组的数值解_第4页
第4页 / 共32页
第12章 MATLAB常微分方程(组)数值求解方程与方程组的数值解_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《第12章 MATLAB常微分方程(组)数值求解方程与方程组的数值解》由会员分享,可在线阅读,更多相关《第12章 MATLAB常微分方程(组)数值求解方程与方程组的数值解(32页珍藏版)》请在金锄头文库上搜索。

1、2020 5 31 常微分方程 组 数值求解 吴鹏 rocwoods rocwoods MATLAB从零到进阶 2020 5 31 主要内容数值求解常微分方程 组 函数概述非刚性 刚性常微分方程问题求解隐式微分方程 组 求解微分代数方程 DAE 与延迟微分方程 DDE 求解边值问题求解 2020 5 31 第一节数值求解常微分方程 组 函数概述 2020 5 31 一 概述 第9章介绍了符号求解各类型的微分方程组 但是能够求得解析解的微分方程往往只是出现在大学课堂上 在实际应用中 绝大多数微分方程 组 无法求得解析解 这就需要利用数值方法求解 MATLAB以数值计算见长 提供了一系列数值求解微

2、分方程的函数 这些函数可以求解非刚性问题 刚性问题 隐式微分方程 微分代数方程等初值问题 也可以求解延迟微分方程 以及边值问题等 2020 5 31 二 初值问题求解函数 1 提供的函数 ode23 ode45 ode113 ode15s ode23s ode23t ode23tb 这些函数统一的调用格式如下 T Y solver odefun tspan y0 T Y solver odefun tspan y0 options sol solver odefun t0tf y0 输入参数说明 odefun表示微分方程 组 的句柄 tspan微分方程 组 的求解时间区间 有两种格式 t0 t

3、f 或者 t0 t1 tf 两者都以t0为初值点 根据tf自动选择积分步长 前者返回实际求解过程中所有求解的时间点上的解 而后者只返回设定的时间点上的解 后者对计算效率没有太大影响 但是求解大型问题时 可以减少内存存储 2020 5 31 二 初值问题求解函数 y0 微分方程 组 的初值 即所有状态变量在t0时刻的值 options结构体 通过odeset设置得到的微分优化参数 返回参数说明 T 时间点组成的列向量Y 微分方程 组 的解矩阵 每一行对应相应T的该行上时间点的微分方程 组 的解 sol 以结构体的形式返回解 2020 5 31 二 初值问题求解函数 2 函数介绍 2020 5 3

4、1 二 初值问题求解函数 2020 5 31 三 延迟问题以及边值问题求解函数 1 延迟问题 MATLAB提供了dde23和ddesd函数用来求解 前者用来求解状态变量延迟为常数的微分方程 组 后者用来求解状态变量延迟不为常数的微分方程 组 调用格式以及参数意义大部分类似ode系列求解函数 不同的是要输入延迟参数以及系统在时间小于初值时的状态函数 2 边值问题两个求解函数函数bvp4c和bvp5c 后者求解精度要比前者好 以bvpsolver表示bvp4c或者bvp5c 那么这两个函数有着统一的调用格式 solinit bvpinit x yinit params sol bvpsolver

5、odefun bcfun solinit sol bvpsolver odefun bcfun solinit options 2020 5 31 四 求解前准备工作 微分方程的形式是多种多样的 一般来说 很多高阶微分方程可以通过变量替换转化成一阶微分方程组 即可以写成下面的形式 1 称为质量矩阵 如果其非奇异的话 上式可以写成 2 将 2 式右半部分用odefun表示出来 具体表现形式可以采用匿名函数 子函数 嵌套函数 单独m文件等形式 就是ode45 ode23等常微分方程初值问题求解的输入参数odefun 如果质量矩阵奇异的话 1 称为微分代数方程组 differentialalgebr

6、aicequations DAEs 可以利用求解刚性微分方程的函数如ode15s ode23s等来求解 从输入形式上看 求解DAEs和求解普通的ODE很类似 主要区别是需要给微分方程求解器指定质量矩阵 隐式微分方程无法写成 1 或者 2 的形式 其求解方法本章也有讨论 2020 5 31 第二节非刚性 刚性常微分方程初值问题求解 2020 5 31 一 概述 所谓刚性 非刚性问题最直观的判别方法就是从解在某段时间区间内的变化来看 非刚性问题变化相对缓慢 而刚性问题在某段时间内会发生剧烈变化 即很短的时间内 解的变化巨大 对于刚性问题不适合用ode45来求解 如果硬要用ode45来求解的话 达到

7、指定精度所耗费的时间往往会非常长 2020 5 31 二 非刚性问题举例 问题见书中 例12 2 1 左图微分方程的解 右图平面相轨迹 2020 5 31 三 刚性问题举例 问题见书中 例12 2 2 例12 2 3 下图是 例12 2 2 不同求解器得到解的图像对比 2020 5 31 三 刚性问题举例 下图是 例12 2 3 得到解的图像 以及两个解的和的图像 2020 5 31 第三节隐式微分方程 组 求解 2020 5 31 一 概述 一些微分方程组在初始给出的时候是不容易显示的表示成上面提到的标准形式的 这时候就需要想办法表示成上述的形式 一般来说有三种思路 一种是利用solve函数

8、符号求解出高阶微分的显式表达式 一种是利用fzero fsolve函数求解状态变量的微分值 还有一种是利用MATLAB自带的ode15i函数 2020 5 31 二 利用solve函数 问题见书中 例12 3 1 下图是求解出的结果曲线 2020 5 31 三 利用fzero fsolve函数 问题见书中 例12 3 2 例12 3 3 例12 3 4 下图是 例12 3 2 结果图像 2020 5 31 三 利用fzero fsolve函数 下图是 例12 3 3 结果图像 例12 3 4 是利用ode15i求解 例12 3 3 算例 速度明显增快 结果一致 图像也是下图 2020 5 31

9、 第四节微分代数方程 DAE 与延迟微分方程 DDE 求解 2020 5 31 一 微分代数方程 DAE 举例 DAE的求解一般有三种办法 一种是变量替换法 一种是用ode15s函数还有一种是用12 3节中提到的ode15i函数 例12 4 1 是利用上述三种方法求解的普通微分代数方程 例12 4 2 是变量替换后用fsolve函数求解出每一计算节点的值 然后再调用ode45 ode23tb等函数求解 另一种方法就是直接利用ode15i函数求解 2020 5 31 一 微分代数方程 DAE 举例 例12 4 1 的结果图 2020 5 31 一 微分代数方程 DAE 举例 例12 4 2 的结

10、果图 2020 5 31 二 延迟微分方程 DDE 举例 延迟微分方程是微分方程表达式要依赖某些状态变量过去一些时刻的状态 即形如 其中 是时间延迟项 既可以是常数也可以是关于和的函数 当是常数的时候可以用dde23和ddesd来求解 另一种情况可以用ddesd求解 例12 4 3 是延迟为常数的求解示例 例12 4 4 是延迟不为常数的求解示例 2020 5 31 二 延迟微分方程 DDE 举例 例12 4 3 的结果图 2020 5 31 二 延迟微分方程 DDE 举例 例12 4 4 的结果图 2020 5 31 第五节边值问题求解 2020 5 31 一 概述 前面讨论的ode系列函数

11、只能用来求解初值问题 但是在实际中经常可以遇到一些边值问题 譬如热传导问题 初值时候的热源状态已知 一定时间后温度达到均匀 再比如弦振动问题 弦两端端点的位置是固定的 像这种知道自变量在前后两端时系统状态的问题被称为边值问题 可以使用下面方程来描述 定解条件 从中两端点0和的两个表达式中各选一个组成定界条件 MATLAB中提供了bvp4c和bvp5c求解边值问题 2020 5 31 二 求解案例 例12 5 1 是一般边值问题求解示例 例12 5 2 是非线性边值问题求解示例 例12 5 3 是带未知参数的边值问题求解示例 例12 5 1 结果图如下 2020 5 31 二 求解案例 例12 5 2 的结果图 2020 5 31 二 求解案例 例12 5 3 的结果图

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号