本次讨论取材于中南大学《科学计算与matlab语言》内容为常微分方程数值解法

  • 常微分方程数值求解的一般概念
  • 常微分方程数值求解函数
  • 刚性问题

常微分方程数值求解的一般概念

求解常微分方程初值问题就是寻找函数y(t)使之满足如下方程:

所谓其数值解法,就是求y(t)在离散结点t0处的函数近似值y0的方法

  • 单步法:在计算Yn+1时只用到前一步的Yn,因此在有了初值之后就可以逐步往下计算,其代表是龙格–库塔(Runge-Kutta)法.
  • 多步法:在计算Yn+1时,除了用到前一步的值Yn之外,还要用到Yn-p(p=1,2,…,k,k>0)的值,即前面的k步,其代表就是亚当斯(Adams)法。

常微分方程的求解函数

函数调用格式为:

[t,y]=solver(filename,tspan,y0,option)

其中,t和y分别给出时间向量和相应的数值解;solver为求常微分方程数值解的函数;filename是定义f(t,y)的函数名,该函数必须返回一个列向量;tspan形式为[t0,tf],表示求解区间;y0是初始状态向量;Option是可选参数,用于设置求解属性.

常微分方程数值求解函数的统一命名格式:

odennxx

其中ode是Ordinary Differential Equation的缩写,是常微分方程的意思;nn是数字,代表所用方法的阶数;xx是字母,用于标注方法的专门特征。

>> f=@(t,y) (y^2-t-2)/4/(t+1);
>> [t,y]=ode23(f,[0,10],2);
>> y1=sqrt(t+1)+1;
>> plot(t,y,'b:',t,y1,'r');
>>


例2 已知一个二阶线性系统的微分方程为:

取a=2,绘制系统的时间响应曲线和相平面图。
令x2=x,x1=x’,则得到系统的状态方程:

f=@(t,x) [-2,0;0,1]*[x(2);x(1)];
[t,x]=ode45(f,[0,20],[1,0]);
subplot(2,2,1);plot(t,x(:,2));
subplot(2,2,2);plot(x(:,2),x(:,1));

刚性问题

有一类常微分方程,其解的分量有的变化很快,有的变化很慢,且相差悬殊,这就是所谓的刚性问题(Stiff)
例3 假如点燃一个火柴,火焰球迅速增大直至某个临界体积,然后,维持这一体积不变,其原因是火焰球内部燃烧耗费的氧气和从球表面所或氧气达到平衡。

主要观看λ值得大小,是否会真正影响问题模型!

>> lamda=0.01;
>> f=@(t,y) y^2-y^3;
>> tic;[t,y]=ode45(f,[0,2/lamda],lamda);toc
Elapsed time is 0.034000 seconds.
>> disp(['ode45计算的点数' num2str(length(t))]);
ode45计算的点数157
>>

时间已过0.034000秒
ode45计算的点数157

>> lamda=1e-5;
>> f=@(t,y) y^2-y^3;
>> tic;[t,y]=ode45(f,[0,2/lamda],lamda);toc
Elapsed time is 5.690000 seconds.
>> disp(['ode45计算的点数' num2str(length(t))]);
ode45计算的点数120565
>>

不同的λ值,式子所用的秒数不同,问题瞬间变成刚性,直接换用ode15s,再去计算!直接秒出答案!

>> tic;[t,y]=ode15s(f,[0,2/lamda],lamda);toc
Elapsed time is 0.348000 seconds.
>> disp(['ode15s计算的点数' num2str(length(t))]);
ode15s计算的点数98
>>


>> f=@(t,x) [-8/3*x(1)+x(2)*x(3);-10*x(2)+10*x(3);-x(2)*x(1)+28*x(2)-x(3)];>> [t,x]=ode45(f,[0,50],[0,0,10^(-10)]);>> plot(t,x)

[MATLAB]常微分方程数值求解(ode45 ode15s ode23 solver)相关推荐

  1. matlab常微分方程数值求解

    本节将介绍常微分方程初值问题的数值求解,主要内容分为三个部分:常微分方程数值求解的概念.求解函数及刚性问题. 一.常微分方程数值求解的一般概念 首先,凡含有参数,未知函数和未知函数导数 (或微分) 的 ...

  2. 常微分方程数值解matlab欧拉,matlab 常微分方程数值解法 源程序代码

    matlab 常微分方程数值解法 源程序代码 所属分类:其他 开发工具:matlab 文件大小:16KB 下载次数:41 上传日期:2019-02-13 11:03:29 上 传 者:XWLYF 说明 ...

  3. matlab数学实验报告西安交通大学微分方程模型高为16米,数学实验第二次作业——常微分方程数值求解...

    实验4常微分方程数值解 实验目的: 1. 练习数值积分的计算: 2. 掌握用MATLAB软件求微分方程初值问题数值解的方法: 3. 通过实例学习用微分方程模型解决简化的实际问题: 4. 了解欧拉方法和 ...

  4. 常微分方程数值求解【python】

    简述 这里只考虑最为简单的一种常微分方程 dydx=f(x,y)\frac{dy}{dx} = f(x,y)dxdy​=f(x,y) 然后这里的实例都是以下面这个方程来做展示的. dydx=y∗(1− ...

  5. 微分方程matlab源代码,matlab 常微分方程数值解法 源程序代码

    11.1 Euler方法 380 11.1.1 Euler公式的推导 380 11.1.2 Euler方法的改进 383 11.2 Runge-Kutta方法 385 11.2.1 二阶Runge-K ...

  6. matlab的数值求解实验报告,matlab计算方法实验报告5(数值积分)

    计算方法实验报告(5) 学生姓名杨贤邦学号指导教师吴明芬实验时间2014.4.16地点综合实验大楼203 实验题目数值积分方法 实验目的●利用复化梯形.辛普森公式和龙贝格数值积分公式计算定积分的 近似 ...

  7. matlab之常微分方程(ODE)求解

    问题描述:已知理想全混釜的初始进料条件,并知道各物料的动力学,求解足够长时间后全混釜中各物质的浓度 常微分方程:只包含一个自变量的微分方程是常微分方程(Ordinary differential eq ...

  8. 非线性常微分方程组 matlab,matlab常微分方程和常微分方程组求解.doc

    常微分方程和常微分方程组的求解 ? 一.实验目的: 熟悉Matlab软件中关于求解常微分方程和常微分方程组的各种命令,掌握利用Matlab软件进行常微分方程和常微分方程组的求解. ? 二.相关知识 在 ...

  9. matlab定积分上界求解,定积分问题的数值求解及Matlab实现.pdf

    定积分问题的数值求解及Matlab实现 第28卷第5期 哈 尔滨 商 业 大 学 学报 (自然科学版) Vo1.28No.5 2012年 10月 JournalofHarbinUniversityof ...

最新文章

  1. 我在北京大学,剑桥大学读的书
  2. 开源 serverless 产品原理剖析 - Kubeless 1
  3. 阿里P7跳槽后曝光薪资截图:新公司月入税后五万多,很满足!
  4. php多级审核,BOS单据多级审核需在单据头上列示多个审核人员的处理方法
  5. Oracle基础查询
  6. NLPIR/ICTCLAS 2015 分词系统使用
  7. 计算机C盘空间减少,速减C盘空间,win7只需两步可减小C盘数G空间
  8. 【IDEA】如何修改已创建的文件类型,虽然很无脑,但是也很棘手
  9. 2021清北学堂储备营Day1
  10. 王二 设计模式读书笔记
  11. Zynga的数据分析
  12. 云控系统都有那些功能?
  13. 程序猿和测试媛——组合在一起的原因
  14. 实验记录 | BWA的安装
  15. 一个扫描器搞定TCP协议所有问题
  16. 全球与中国矿物加工工程市场深度研究分析报告
  17. linux shell脚本编写 | 三角形 | 梯形 | 菱形 | 九九乘法表 | 矩形 | 超详细
  18. 图片插入word文档后清晰度降低的解决方法
  19. 双 JK 触发器 74LS112 逻辑功能。真值表_由热靴移至机侧 尼康发布全新闪灯触发器_...
  20. 服务器bat脚本删除空文件夹,windows批处理命令(1)——右键清理空文件夹

热门文章

  1. 在探索中享受童年般的乐趣 |Mixlab的故事
  2. Spring 项目启动时,打印每个bean加载时间
  3. 常见而又容易被中小企业忽视的六个网络安全漏洞
  4. TypeScript 开发环境的搭建与数据类型
  5. IBM bladecenter H刀箱BladeCenter北电交换机VLAN配置
  6. 前端之TypeScript(TS)
  7. 我写的一个 C++ 复数类
  8. 西工大机考《房地产法》大作业网考
  9. 智慧城市水质在线COD监测传感器
  10. MTK资料:在MT6735平台上如何调试SII9024A