
欧拉法改进欧拉法斐波那契法原理及流程图.doc
9页1欧拉法求微分方程方法说明欧拉(Euler)法是解常微分方程初值问题 (4.1) 最简朴的数值方法,其具体做法是,将区间[a,b]进行N等分:,步长.并将式(4.1)写成等价的积分形式(4.2)再对式(4.2)右端积分用矩形公式计算,则有, (4.3)在式(4.3)右端取,舍去余项则得,作为的近似值在式(4.3)右端取,舍去余项,则得作为的近似值.一般地,在式(4.3)右端取舍去余项,则得(4.4)作为的近似值.式(4.4)为欧拉法计算公式.我们知道微分方程的解是平面上的一族积分曲线,这族曲线中过点的积分曲线就是初值问题式(4.1)的解.欧拉法的几何意义是,过点引斜率为的积分曲线的切线,此切线与直线的交点为,再过点引认为斜率的切线与直线的交点为,依此类推,从出发,作认为斜率的切线,此切线与直线交点为.于是便得到过点的一条折线,见图4.1.过的积分曲线则用此折线来代替.因此,这种方法亦称折线法. 图4.1 例:用欧拉法求微分方程欧拉法流程图如下:x0+h=>x1y0+h*f(x0,y0)=>y1n=1输出x1,y1n=1+nx1=> x0y1=> y0结束n=N ?读入x0,y0,b,h开始计算N=fix((b-x0)/h)欧拉法程序如下:clear; clc; x1=0;x2=1;h=0.1;x0=0;y0=1;N=(x2-x1)/h;%要计算的次数x(1)=x0;y(1)=y0;for n=1:N x(n+1)=x(n)+h; y(n+1)=y(n)+h*(y(n)-2*x(n)/y(n));endX=xY=y2 改善欧拉法求微分方程方法说明 由于欧拉法采用矩形公式计算积分产生较大截断误差.改善欧拉法(又称改善折线法)是采用梯形公式来计算式(4.3)右端积分,则有 (5.1)在式(5.1)右端取,舍去余项,则得将作为的近似值.在式(5.1)右端再取,舍去余项,则得将作为的近似值.一般地,在式(5.1)右端取,舍去余项.则得(5.2)将作为的近似值.式(5.2)为改善欧拉法计算公式.流程图如下:例:用改善欧拉法求微分方程改善欧拉法程序如下:clear; clc; x1=0;x2=1;h=0.1;x0=0;y0=1;p(1)=0;N=(x2-x1)/h;x(1)=x0;y(1)=y0;for n=1:N x(n+1)=x(n)+h; y(n+1)=y(n)+h*(y(n)-2*x(n)/y(n)); p(n+1)=y(n)+h*(y(n+1)-2*x(n)/y(n+1)); y(n+1)=(y(n+1)+p(n+1))/2;endX=xY=y3斐波那契法求极值方法说明斐波那契法原理类似于黄金分割法,只是搜索区间的缩短率不再采用黄金分割数0.618。
如图7.1所示,只要在[a,b]内取两点x1,x2,并计算出f(x1),f(x2),通过比较,可将区间[a,b]缩短为[a,x2]或[x1,b]由于新的区间内包含一个已经计算过函数值的点,所以再从其中取一个试点,又可将这个新区间再缩短一次,不断地反复这个过程,直至最终的区间长度缩短到满足预先给定的精确度为止图7.1 现在的问题是,如何选取试点,在保证同样精确度的情况下使得计算f(x)函数值的次数最少?在计算函数值的次数一定的情况下,最初区间与最终区间的长度之比可作为取点方式优劣的一个标准计算n次函数值,如何取点使最终区间最小?或者最终区间长度为1,计算n次函数值,初始区间最多为多长?为此,引入Fibonacci数列: 表7.1系 所以当试点个数n拟定之后,最初的两个试点分别选为:显然x1,x2关于区间[a,b]对称,即有x1-a=b-x2,如图7.2所示图7.2。












