3.6.2

龙格-

库塔方法

改进的欧拉法比欧拉法精度高的原因在于,它在确定平均斜率时,多取了一个点的斜

率值。这样,如果我们在[Xi,X(i+1)]上多取几个点的斜率值,然后对它们作线性组合得到平均

斜率,则有可能构造出精度更高的计算方法。这就是龙格-库塔法的基本思想。龙格-库塔

法可看作是欧拉法思想的提高,属于精度较高的单步法。

龙格-库塔法是求解常微分方程初值问题的最重要的方法之一。MATLAB中提供了几

个采用龙格-库塔法来求解常微分方程的函数,即ode23,ode45,ode113

,ode23s

,ode15s

等,其中最常用的函数是

ode23(

二三阶龙格-库塔函数)和ode45(

四五阶龙格-库塔函数),

下面分别对它们进行介绍。

1

.二三阶龙格-

库塔函数(ode23)

函数

ode23

的调用格式如下:

(1)

[T,Y]=ODE23('F',TSPAN,Y0)

输入参数中的'F'

是一个字符串,表示微分方程的形

式,也可以是

f

(x

,

y

)的M

文件。TSPAN=[T0

TFINAL]表示积分区间,Y0表示初始条件。

函数

ode23

表示在初始条件

Y0下从

T0到TFINAL

对微分方程

'(,)

yFty

=

进行积分。函数

F(T,

Y)

必须返回一列向量,两个输出参数是列向量

T

与矩阵

Y,其中向量

T

包含估计响应

的积分点,而矩阵

Y

的行数与向量

T

的长度相等。向量

T

中的积分点不是等间距的,这是

为了保持所需的相对精度,而改变了积分算法的步长。为了获得在确定点T0,T1,

"的解,

TSPAN=[T0

T1

TFINAL]

。需要注意的是:TSPAN中的点必须是单调递增或单调递减的。

(2)

[T,Y]=ODE23('F',TSPAN,Y0,OPTIONS)

其中,参数

options

为积分参数,它可由函

数ODESET

来设置。Options参数最常用的是相对误差‘RelTol’(

默认值是

1e-3)和绝对误差

‘AbsTol’(默认值是

1e-6),其他参数同上。

(3)

[T,Y]=ODE23('F',TSPAN,Y0,OPTIONS,P1,P2,…)

参数P1,P2,

…可直接输入到函数

F

中去.如

F(T,Y,FLAG,P1,P2,…)。如果参数

OPTIONS为空,则输入

OPTIONS=[

]。也可

以在

ODE文件中(可参阅

ODEFILE函数)指明参数

TSPAN、Y0和OPTIONS的值。如果参

数TSPAN

或Y0

是空,则ODE23函数通过调用ODE文件[TSPAN,

Y0,

OPTIONS]

=

F([

],[

],

'init

')来获得

ODE23函数没有被提供的自变量值。如果获得的自变量表示空,则函

数ODE23会忽略,此时为

ODE23('F')。

(4)

[T,Y,TE,YE,IE]=ODE23('F',TSPAN,Y0,OPTIONS)

此时要求在参数

options

中的事

件属性设为'on'

,ODE文件必须被标记,以便

P(T,Y,'events')

能返回合适的信息,详细可参

阅函数

ODEFILE。输出参数中的

TE是一个列向量,矩阵

YE的行与列向量

TE中元素相

对应,向量

IE

表示解的索引。

2

.四五阶龙格-

库塔函数(ode45)

函数

ode45

的调用格式同

ode23

相同,其差别在于内部算法不同。如果'F'

为向量函数,

则ode23

和ode45

也可用来解微分方程组。

【例3.47

分别用二三阶龙格-库塔法和四五阶龙格-库塔法解常微分方程的初值问题:

解:先将微分方程写成自定义函数

exam2fun.m

function

f=exam2fun

(x,y)

f=-y-x*y.^2;

f=f(:);

然后在命令窗口输入以下语句:

>>

[x1,y1]=ode23('exam2fun',[0:0.1:1],1)

x1

=

0

0.1000

0.2000

0.3000

0.4000

0.5000

0.6000

0.7000

0.8000

0.9000

1.0000

y1

=

1.0000

0.9006

0.8046

0.7144

0.6314

0.5563

0.4892

0.4296

0.3772

0.3312

0.2910

>>

[x2,y2]=ode45('exam2fun',[0:0.1:1],1)

x2

=

0

0.1000

0.2000

0.3000

0.4000

0.5000

0.6000

0.7000

0.8000

0.9000

1.0000

y2

=

1.0000

0.9006

0.8046

0.7144

0.6315

0.5563

0.4892

0.4296

0.3772

0.3312

0.2910

温馨提示:答案为网友推荐,仅供参考

matlab中ode的用法,关于matlab 的ode45用法相关推荐

  1. matlab 如何axis,在matlab中axis是什么意思,matlab中axis的用法

    在matlab中axis是什么意思轴在matlab中是什么意思,matlab中的Axis是指在绘图中通常使用axis函数来设置坐标值的范围,在matlab的命令窗口中输入doc轴或help轴即可获得该 ...

  2. matlab中的timer模块,[转载]Matlab中Timer的使用

    Matlab中Timer的使用 鉴于Matlab中缺乏多线程机制,使用Timer无疑是一个很重要的工具,Matlab中Timer是一个Java对象. (1)Timer 的定义 t=timer(); 设 ...

  3. m 文件 dll matlab 中调用_如何在matlab中调用python程序

    现在python很火,很多代码都是python写的,如果你和我一样,习惯了使用matlab,还想在matlab中调用Python的代码,应该怎么办呢?其中一条思路:首先在matlab中调用系统脚本命令 ...

  4. matlab中m文件是什么,MATLAB中M文件的使用

    运行方法: 使用matlab的时候,可以在"Command Window"内直接书写matlab代码,也可以将代码保存到M文件中,然后运行该文件.使用matlab主界面菜单&quo ...

  5. 在MATLAB中使用数学符号,在matlab中怎么输入特殊符号 function在MATLAB中怎么用

    导航:网站首页 > 在matlab中怎么输入特殊符号 function在MATLAB中怎么用 在matlab中怎么输入特殊符号 function在MATLAB中怎么用 相关问题: 匿名网友: 一 ...

  6. matlab中ode指令,[转载]MATLAB中ODE的使用

    ode23 解非刚性微分方程,低精度,使用Runge-Kutta法的二三阶算法.ode45 解非刚性微分方程,中等精度,使用Runge-Kutta法的四五阶算法.ode113 解非刚性微分方程,变精度 ...

  7. matlab中ode指令,matlab中ode5函数编写.doc

    matlab中ode5函数编写 function varargout = ode45(ode,tspan,y0,options,varargin) %ODE45 Solve non-stiff dif ...

  8. matlab中用于小数取整的函数的用法

    matlab中小数取整的函数大约有四个:floor.ceil.round.fix 若 A = [-2.0, -1.9, -1.55, -1.45, -1.1, 1.0, 1.1, 1.45, 1.55 ...

  9. matlab中cell是什么意思,matlab中cell的用法

    cell是matlab中的一种数据类型,用大括号定义,括号里可以是任意类型的数据或矩阵. 关于cell的创建: 1.跟一般创建举证一样,直接使用C = {A B D E}这种形式,不过这里把" ...

最新文章

  1. 没有添加跳新增,添加之后跳修改
  2. LeetCode 973. K Closest Points to Origin--TopK 问题--最小堆--C++,Python解法
  3. 如何从 900 万张图片中对 600 类照片进行分类? | 技术头条
  4. c# char unsigned_dll 中含有unsigned char数组,被C#调用 -
  5. python递归函数讲解_Python递归函数实例讲解
  6. pythonfor循环案例教程_python开发之for循环操作实例详解,pythonfor实例详解
  7. 分布式实时计算—实时数据质量如何保障?
  8. JAVA WEB篇2——Servlet
  9. python双向链表
  10. jQuery EasyUI API 中文文档 - 组合表格(ComboGrid)
  11. 花三分钟给女票写一个爬虫,做一回模范男友!
  12. Fingerprint has already been taken
  13. 大一学生《web课程设计》用DIV+CSS技术设计的个人网页(网页制作课作业)
  14. MySQL每天定时12点弹出黑窗口
  15. UML --Package
  16. 名帖116 文徵明 小楷《离骚经》
  17. Abp 构造注入服务接口后运行报错 Host terminated unexpectedly!
  18. 将xlsx内容转成json
  19. 渗透测试实践指南:必知必会的工具与方法学习笔记(二)——扫描
  20. 氢能源燃料电池行业汇总

热门文章

  1. 创建阿里云ecs实例Linux系统教程-Unirech阿里云代充
  2. 电源线的噪声共模干扰和差模干扰优化设计
  3. 【QT项目】简易五子棋游戏(人机对战)— 完整源码
  4. 详解 Samaritan——饿了么最新开源的透明代理
  5. c#上位机plc通讯读位
  6. UE4动画重定向与动画蒙太奇(播放动画)
  7. 中国剩余定理(孙子定理)(模板)
  8. vc++实现内核级进程保护
  9. 浅读C Primer Plus——C语起源
  10. Teiid 基于数据联邦的集成方案