1.2龙格-库塔方法1.2.1泰勒方法设(1)的解y(x)充分光滑,xk+=x+h,利用泰勒展开有y(p+1)(R) hp+Iy(P"(x)hP +y(x*+1)= y(x)+ y(x)h+..X<5<Xk+Ip!(p+ 1)!yearv(p"hp若取yk+i=y+yh+..(0<k<n),就有hp+k+(p+1))p!因此,Taylor方法p阶方法。显式Euler方法是一阶Taylor方法。二阶Taylor方法为y=αh?Yk+I =ye+hf(xk,)+[f(x,ye)+f(x,y)f,(x,yk))2k=0,1,.,n-1b-这里采用了等步长,6x=a+kh,k=0,l,..,n.n1.2.2龙格-库塔方法的一般形式梯形方法和改进Euler方法,不需要计算f(x,y)的偏导数,也达到了二阶收敛。这启示我们,可以用f(x,)在一些点上值的线性组合来构造高阶单步法。这一类方法称为Runge-Kutta方法,用R个f值的Runge-Kutta方法,称为R级Runge-Kutta方法。一般显式R级Runge-Kutta方法为yk+=y+hd(xyk,h)其中25p(xk,yz,h)=Eck,,k =f(xxye),k, =f(x+a,h,ye+hb,k,),r=2,..,Rr=l5=其中的c.ab.均为独立常数。若取k,=f(x+a,h,yx+hbrk,),r=1,,R而且s≥r的b,不全零,对应的Runge-Kutta方法是隐式RX级Runge-Kutta方法。3
3 1.2 龙格-库塔方法 1.2.1 泰勒方法 设(1)的解 y(x)充分光滑, xk+1 = xk + h ,利用泰勒展开有 ( ) ( 1) 1 1 () () ( ) ( ) '( ) , ! ( 1)! p p k k p p k kk yx y yx yx y x h h h p p ξ + + + = + ++ + + " k < k < k+1 x ξ x 若取 (0 ) ! 1 ' ( ) 1 y h k n p y y y h p p k+ = k + k +"+ k ≤ < ,就有 1 ( 1) ( ) 1 ( 1)! + + + + = p p k h p y ξ k τ 因此,Taylor 方法 p 阶方法。 显式 Euler 方法是一阶 Taylor 方法。二阶 Taylor 方法为 0 2 1 ( , ) [ ( , ) ( , ) ( , )] 2 0,1, , 1 k k k k xk k k k yk k y h y y hf x y f x y f x y f x y k n α + ⎧ = ⎪ ⎪ ⎨ =+ + + ⎪ ⎪ = − ⎩ " 这里采用了等步长, , x a kh,k 0,1, ,n. n b a h k = + = " − = 1.2.2 龙格-库塔方法的一般形式 梯形方法和改进 Euler 方法,不需要计算 f (x, y) 的偏导数,也达到了二阶收 敛。这启示我们,可以用 f (x, y) 在一些点上值的线性组合来构造高阶单步法。 这一类方法称为 Runge-Kutta 方法,用 R 个 f 值的 Runge-Kutta 方法,称为 R 级 Runge-Kutta 方法。 一般显式 R 级 Runge-Kutta 方法为 ) ( , , yk +1 = yk + hφ xk yk h 其中 1 ( , ,) R k k rr r ϕ x y h ck = = ∑ , 1 (, ) k k k fx y = ,k f x a h y h b k r R r s r k r k rs s ( , ), 2, , 1 1 = + + ∑ = " − = 其中的 r ar brs c , , 均为独立常数。 若取 k f x a h y h b k r R R s r k r k rs s ( , ), 1, , 1 = + + ∑ = " = 而且s ≥ r 的brs不全零,对应的 Runge-Kutta 方法是隐式 R X 级 Runge-Kutta 方法
1.2.3常用低阶龙格-库塔方法一级显式Runge-Kutta方法为yk+=y+hc,k,当c,=1时为一阶方法,就是显式Runge-Kutta方法。一级显式Runge-Kutta方法是唯一的。考虑二级显式Runge-Kutta方法Yk+1 = yk +h(c,k, +c,k,)k, = f(xk,yr),kz=f(x+azh,yk+bakh)用f,f,f,等分别表示它们在(x,y)的值,有k,=f,hk,=f+ahf,+b,ffh+-(af+2ab2fmf+b2f2)+O(h3)2!=y+(c+c)fh+h(aCJ+b2C2ff,)与Taylor方法对照,要求C +C =11ac=21b2iC22!,得到常用的二阶Runge-Kutta公式:若取c,=0,C,=1,a,=b212Yk+I = yr+k,k =hf(xx,ye)h1k =hf(x+s+2=k)显式二级二阶Runge-Kutta方法不唯一。若取C=C2=a,=bs=1,对应计算公式为hr[f(x,y)+f(x+h,y+hf(xy)Yk+I = yh +这就是改进Euler方法。在显式三级Runge-Kutta方法中,待定参数共八个:C,C2,C3,a2,a,b21,b31,b32 A
4 1.2.3 常用低阶龙格-库塔方法 一级显式 Runge-Kutta 方法为 yk+1 =yk +hc1k1,当 时为一阶方法,就是显 c1 =1 式 Runge-Kutta 方法。一级显式 Runge-Kutta 方法是唯一的。 考虑二级显式 Runge-Kutta 方法 ( ), 1 1 1 2 2 y y h c k c k k+ = k + + ( , ), 1 k k k = f x y ( , ) k2 = f xk + a2h yk + b21k1h 用 , , x y f f f 等分别表示它们在( , ) k k x y 的值,有 k = f 1 , ( 2 ) 2! 2 2 2 21 21 2 2 2 2 2 21 a f a b f f b f f h k = f + a hf x + b ff yh + xx + xy + yy ( ) 3 + O h 2 1 2 2 2 21 2 () ( ) k xy =++ + + y c c fh h a c f b c ff 与 Taylor 方法对照,要求 1 2 2 2 21 2 1 1 2 1 2 c c a c b c ⎧ ⎪ + = ⎪ ⎪ ⎨ = ⎪ ⎪ = ⎪ ⎩ 若取 , 2 1 0, 1, c1 = c2 = a2 = b21 = 得到常用的二阶 Runge-Kutta 公式: 1 2 1 2 1 (, ) 1 (, ) 2 2 k k k k k k y yk k hf x y h k hf x y k + ⎧ ⎪ = + ⎪ ⎨ = ⎪ ⎪ = ++ ⎩ 显式二级二阶 Runge-Kutta 方法不唯一。 若取 , 1, 2 1 c1 = c2 = a2 = b21 = 对应计算公式为 [ ] ( , ) ( , ( , )) 2 k 1 k k k k k k k f x y f x h y hf x y h y + = y + + + + 这就是改进 Euler 方法。 在显式三级 Runge-Kutta 方法中,待定参数共八个: 1 2 3 2 3 21 31 32 c ,c ,c ,a ,a ,b ,b ,b
一个常用显式三级三阶方法是:Y+= yx+=(k +4k +kg)6k =hf(x,y)h[=(++)2[k, =hf(xx +h, yx-k +2k.)对于四级显式Runge-Kutta方法,类似的推导可以建立四阶方法。显式四阶四级Runge-Kutta方法不唯隹一,一个重要的代表是经典Runge-Kutta方法:1Jk1=yk+=(k+2k,+2k,+ka)6k,=hf(xk,yr)hk=hf(x++)2h5=h(++)k,=hf(x+h,y+k,)5
5 一个常用显式三级三阶方法是: 1 1 23 1 2 1 3 12 1 (4 ) 6 (, ) 1 (, ) 2 2 ( , 2) k k k k k k k k y y k kk k hf x y h k hf x y k k hf x h y k k + ⎧ =+ + + ⎪ ⎪ ⎪ = ⎨ ⎪ = ++ ⎪ ⎪ ⎩ = + −+ 对于四级显式 Runge-Kutta 方法,类似的推导可以建立四阶方法。显式四阶 四级 Runge-Kutta 方法不唯一,一个重要的代表是经典 Runge-Kutta 方法: 1 1 2 34 1 2 1 3 2 4 3 1 (22 ) 6 (, ) 1 (, ) 2 2 1 (, ) 2 2 (, ) k k k k k k k k k k y y k k kk k hf x y h k hf x y k h k hf x y k k hf x h y k + ⎧ =+ + + + ⎪ ⎪ ⎪ = ⎪⎪ ⎨ = ++ ⎪ ⎪ = ++ ⎪ ⎪ ⎪ = ++ ⎩
2MATLAB简介MATLAB是矩阵实验室(MatrixLaboratory)之意。除具备卓越的数值计算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时控制等功能。MATLAB的基本数据单位是矩阵,它的指令表达式与数学,工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完相同的事情简捷得多.当前流行的MATLAB5.3/Simulink3.0包括拥有数百个内部函数的主包和三十几种工具包(Toolbox).工具包又可以分为功能性工具包和学科工具包.功能工具包用来扩充MATLAB的符号计算,可视化建模仿真,文字处理及实时控制等功能学科工具包是专业性比较强的工具包控制工具包,信号处理工具包,通信工具包等都属于此类2.1MATLAB的主要特点(1)语言简洁紧凑,使用方便灵活,库函数极其丰富。MATLAB程序书写形式自由,利用起丰富的库函数避开繁杂的子程序编程任务,压缩了一切不必要的编程工作(2)运算符丰富。由于MATLAB是用C语言编写的,MATLAB提供了和C语言几乎一样多的运算符,灵活使用MATLAB的运算符将使程序变得极为简短。(3)MATLAB既具有结构化的控制语句(如for循环,while循环,break语句和if语句),又有面向对象编程的特性。(4)程序限制不严格,程序设计自由度大。例如,在MATLAB里,用户无需对矩阵预定义就可使用。(5)程序的可移植性很好,基本上不做修改就可以在各种型号的计算机和操作系统上运行。(6)MATLAB的图形功能强大。在FORTRAN和C语言里,绘图都很不容易,但在MATLAB里,数据的可视化非常简单。MATLAB还具有较强的编辑图形界面的能力。(7)功能强大的工具箱是MATLAB的另一特色。MATLAB包含两个部分:核心部分和各种可选的工具箱。核心部分中有数百个核心内部函数。其工具箱又分为两类:功能性工具箱和学科性工具箱。功能性工具箱主要用来扩充其符号计算功能,图示建模仿真功能,文字处理功能以及与硬件实时交互功能(8)源程序的开放性。开放性也许是MATLAB最受人们欢迎的特点。除内部函数以外,所有MATLAB的核心文件和工具箱文件都是可读可改的源文件,用户可通过对源文件的修改以及加入自已的文件构成新的工具箱。(9)MATLAB的缺点是,它和其他高级程序相比,程序的执行速度较慢。由于MATLAB的程序不用编译等预处理,也不生成可执行文件,程序为解释执行,所以速度较慢。2.2MATLAB操作桌面简介2.2.1启动MATLAB启动MATLAB有多种方法:方法一:点击桌面上的快捷方式或matlabl文件夹下的快捷方式图标。方法二:点击matlablbinlwin32文件夹下的matlab.exe。6
6 2 MATLAB 简介 MATLAB 是矩阵实验室(Matrix Laboratory)之意。除具备卓越的数值计 算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时 控制等功能。 MATLAB 的基本数据单位是矩阵,它的指令表达式与数学,工程中常用的形 式十分相似,故用 MATLAB 来解算问题要比用 C,FORTRAN 等语言完相同的事情 简捷得多.当前流行的MATLAB 5.3/Simulink 3.0包括拥有数百个内部函数的主包 和三十几种工具包(Toolbox).工具包又可以分为功能性工具包和学科工具包.功能 工具包用来扩充 MATLAB 的符号计算,可视化建模仿真,文字处理及实时控制等 功能.学科工具包是专业性比较强的工具包,控制工具包,信号处理工具包,通信工 具包等都属于此类. 2.1 MATLAB 的主要特点 (1)语言简洁紧凑,使用方便灵活,库函数极其丰富。MATLAB 程序书写形 式自由,利用起丰富的库函数避开繁杂的子程序编程任务,压缩了一切不必要的 编程工作 (2)运算符丰富。由于 MATLAB 是用 C 语言编写的,MATLAB 提供了和 C 语言几乎一样多的运算符,灵活使用 MATLAB 的运算符将使程序变得极为简短。 (3)MATLAB 既具有结构化的控制语句(如 for 循环,while 循环,break 语 句和 if 语句),又有面向对象编程的特性。 (4)程序限制不严格,程序设计自由度大。例如,在 MATLAB 里,用户无需 对矩阵预定义就可使用。 (5)程序的可移植性很好,基本上不做修改就可以在各种型号的计算机和操 作系统上运行。 (6)MATLAB 的图形功能强大。在 FORTRAN 和 C 语言里,绘图都很不容易, 但在 MATLAB 里,数据的可视化非常简单。MATLAB 还具有较强的编辑图形界 面的能力。 (7)功能强大的工具箱是 MATLAB 的另一特色。MATLAB 包含两个部分: 核心部分和各种可选的工具箱。核心部分中有数百个核心内部函数。其工具箱又 分为两类:功能性工具箱和学科性工具箱。功能性工具箱主要用来扩充其符号计 算功能,图示建模仿真功能,文字处理功能以及与硬件实时交互功能 (8)源程序的开放性。开放性也许是 MATLAB 最受人们欢迎的特点。除内部 函数以外,所有 MATLAB 的核心文件和工具箱文件都是可读可改的源文件,用 户可通过对源文件的修改以及加入自己的文件构成新的工具箱。 (9)MATLAB 的缺点是,它和其他高级程序相比,程序的执行速度较慢。由 于 MATLAB 的程序不用编译等预处理,也不生成可执行文件,程序为解释执行, 所以速度较慢。 2.2 MATLAB 操作桌面简介 2.2.1 启动 MATLAB 启动 MATLAB 有多种方法:方法一:点击桌面上的快捷方式或 matlab\文件 夹下的快捷方式图标。方法二:点击 matlab\bin\win32 文件夹下的 matlab.exe
这两种方法的当前目录不同。优先选用方法一。可见到如下交互界面(见图1):AATLARDD区EileEdit Yie YehWindow Help%?curert DirectoryMATLABBpsp1workO区Comme nd WindowWoreped国区Using Toolbow Path CacheType"helptoolbox.pathgach-"for.nHaneSizeBytes classTo get started, select "maTLAB Help'from the Help nenThe lement type "nanemust be terninated by the natchine end-tagCouldnotparseB:MATLAB6p5pltoolborlrtv/tareetslosekloseklinfo57<2WorkspaceCurrent Directory口区Icet01)set 01)**0:0. 1:10:nhi=plot (a, y)#*t (h1)set(ges)5/27/06Astart图 12.2.2MATLAB的桌面平台(1)命令窗口(commandwindow)----界面见图2AMATLAE0XEileEditView Web WindowHelp电?currentDirectoryDMATLA口号Using Toolbox Path Cache.Type "help toolbox_path_eache" for more inf-To zet started select "MATLAB Help" from the Help menu.Theelement type "name"must be terminated by the matchine end-taz "</naCouldnotparseD:AMATLABBpltoolboxrtwltargetslosekloseklinfo.xmlThe element type "list" must be terminated by the matching end-tas "</liCould not parse D:mATLABBplAtoolboxltiddkltiddklinfo.xml>>IAstartReady图2点击命令窗口右上角的可以从将指令窗从操作桌面独立出来,点击指令窗中Desktop菜单下的DockCommandwindow可以使指令窗嵌入回操作桌面。(2)工作间管理窗口(WorkspaceBrowser)--见图37
7 这两种方法的当前目录不同。优先选用方法一。 可见到如下交互界面(见图 1): 图 1 2.2.2 MATLAB 的桌面平台 (1)命令窗口(command window)-界面见图 2 图 2 点击命令窗口右上角的 可以从将指令窗从操作桌面独立出来,点击指令 窗中 Desktop 菜单下的 Dock Command window 可以使指令窗嵌入回操作桌面。 (2)工作间管理窗口(Workspace Browser)-见图 3