《常用算法--几种数字积分法1.doc》由会员分享,可在线阅读,更多相关《常用算法--几种数字积分法1.doc(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、4.n阶代数方程n年夜于即是5搜寻法求一个根关于n5的代数方程,不求根公式可寻,请求方程的根,平日是采纳根搜寻办法,求得方程的某一个根,而后将此根从原方程中劈去,使方程落一阶或二阶,接着求根。追求方程在根立体上的某一个根,其搜寻办法有非常多种,但年夜局部办法对重根或麋集根得方程搜寻将会掉败,上面引见一种搜寻较保险并能掉掉必定精度的搜寻办法,即牛顿下山与撒网格联合的搜寻法。此办法可求得任何方式代数方程的根,设代数方程f(z)aznazn1azann1001a1同时不掉普通性,0设方程的一个实验根为z0x0jy0当在此实验根左近存在方程的一个根,那么有zxjyz0z(xdx)j(y0dy)代入方程
2、得f(z)u(z)jv(z)222su(z)v(z)假如f(z)时,zxjy那么为方程得一个根。要害是怎么样求得实验根的增量dx,dy值,使得z向方程的某一个根趋近。这确实是应用牛顿下山法,其办法是将f(z)按泰劳级数:f(z0)f(z)f(z)f(z)(zz0)(zz)20002!f(z)0开展后取一阶项得:zz0z0dzf(z0)s(z)s(z0)依照f(z)随z变更的下落性来推断下山迭代能否胜利,假如z0zs(z)s(z)接着迭代,直到=0或那么所选择的dz是胜利的,将。为减速迭代收敛速率,平日引入一个减速因子t,实践拔取dz=dx+jdy为f(z)0zztz0tdz0f(z0)=(x0
3、tdx)j(y0tdy)拔取恰当的t值可保障s(z)s(z0),使下山胜利,4普通选初值t1,寻寻下山道路时使t减小,t=ns(z)s(z0)或tt/1.67。直到理了,转到撒网格追求下山道路,留意每求得s(z)s(z0)一次,将置t的初值。假如方程F(z)=0中有重根或麋集根时,f(z)会呈现鞍点,如今,有而s0f(z)0,而成dz溢出而使迭代掉败,为避免这种状况,而使迭代能胜利的搜寻到方程的根,采纳撒网格的办法,跳出鞍点接着迭代或使s=0或s掉掉方程的一个根。其办法如图所示,取恰当的一个模d跟角度c,使得dzd(cos(c)jsin(c),zz0dzs(z)s(z),转到牛顿下山法迭代,假
4、如0s(z)s(z),就减小0假如dz选择使得d,再寻下山道路,当的一个根。d1时,还不克不及求得下山的道路时,阐明有重根在z处,那么可以为是求得2dz盘算,d(dx)2(dy).d的初值由牛顿下山时的c的初值可选为0。2d0每次迭代入,选cc0c2d。在时,使。n4.51.67在搜寻根时,为使f(z)0有一个根在单元圆内或上,使搜寻在单元圆内的范畴内,可选对f(z)作如下变更:an0,令znaZ1pZ1pnnannii变更后f(Z1)Z1naaniZ1ni0ciaaninni1(变更后的方程,其常数项为其求得Z1在单元圆中的一个根,再来乘1,阐明方程定有一个根在单元圆内,其模小于即是p掉掉原
5、方程的一个根。1。)Qbasic子顺序SUBonwtons(a(),nasInteger,Zascomps)为保障求根精度,子顺序中所用迭代变量均采纳双精度数。5N阶方程求根子顺序通用子顺序到此引见了二阶,三阶,四阶,以及更高阶方程的求根办法,咱们就能够计划一个完好的求n阶方程的根子顺序。所以运用牛顿下山与撒网格搜寻的求根办法是完整能够替代低阶的求根公式,但因为搜追求根速率年夜年夜慢于公式求根速率,为减速求根运转速率,咱们采纳高阶方程用牛顿下山搜寻法掉掉方程的一个或两个根,使方程落阶,当落至低于5阶后,直截了当挪用公式求根子顺序,其顺序计划流程图如。6求恣意实函数的单实根。设恣意实函数f(x)
6、=0f(x)是x的非线性或线性函数,求它的单实根的办法非常多,如二分法,弦截法,优选法,插值法等,种种办法迥然不同。上面引见弦截法务实函数在给定一个区间x,minxmax中的一切单实根。这种办法求根分两步进展。第一步,推断某个小区间内能否有根存在,其道理是xb=xa+h,自变量从本来的一个初值xa向前跨出一步h,如f(xa)与f(xb)异xa,接着第果在xa,xa+h中有根存在,那么必有函数值号或f(xb)=0,这时转到第二步,否那么将一步的任务。xb第二步,以(xa,f(xa)跟(xb,f(xb)作不断线,掉掉直线方程:f(xb)f(xa)yf(xa)(xxa)xbxa以y=0时的x值x0作
7、为实验根,那么xbxax0xaf(xa),求得f(x0)=y0。f(xb)f(xa)f(x0)y0xbxa1,能够以为x0是方程假如或f(x)=0的一个根,如不满足前提,依照y0的标记使得x0xa,y0ya或x0xb,y0yb,接着第二步的操纵,直到满足前提。当xb+hxmax时,搜寻进程完毕。盘算步长选择原那么是,保障在一个步长区间内的根不克不及多于1个互异根重铲除外,否那么将形成丢根景象,这就请求h取得较小,但添加盘算时刻,因此应综合思索,对周期函数,h应小于周期的1/2。的巨细直截了当妨碍求根精度,应依照需求设定,普通可取1010-10-5,1可取操纵精度0.1。矩阵的逆矩阵A是nn阶矩
8、阵,假定det(A)不为0,那么A的逆存在。-1这里引见常用的高斯约当列主元消去法求矩阵的逆,其道理是AA=I相称于-1Em-1E1IEEmm-11AI,显然有A=C=EmE对A作初等变更的同时,对单元矩阵作异样的初等变更,当A化为单元矩阵时,原单元矩阵变-1成了A的逆矩阵,即I:AA:I在初等变更时,为避免主对角线上元素较小,形成盘算机溢出,那么选一列中最年夜的元素作为主元,并移到对角线上,将主元变为1,再将该列的别的元素酿成0。在初等变更的同时,将主元相乘可得A的行列式值det,留意每交流一次行元素,其行列式值要变号。56-1例:AA,结构(设det初值为1),求1030105601103
9、00110301056aa(第一列),主元b=a=10,交流1,2行,有行交流,det=-detb=-10112121主元归化,第一行除以1010135610消去第列别的元素,2行1行51000.11310.509b=主元=a=-9,不行交流,det=detb=902200.113第二行对角线元素归1化,消去第二列非对角元素191180113115101/31/15-1那么A=19118011/91/18由上进程,能够年到初等变更进程是:关于第I次变更,寻主元对角线及以下的最年夜元素移主元行到对角线行aij归1化消去第I列除对角线外的别的元素,即a=a-a*akikijikj多少种常用的数字积
10、分办法微分方程的数字解25数字积分法1欧拉法折线法fyf(t)y(t)y(t1)y(t0)f(t0)ht0t1htt0t1t图2-5-2图2-5-1dy设一阶微分方程yf(t,y)y(t)y00dx,y由图可知,过t点的歪率为00y0f(t,y)00假如t离t非常近,即t非常小,曲线y(t)可用切线来近似,其切线方程10yy0f(t,y)(tt)000其微分方程在t=t时,可近似表现为1y(t)y1y0f(t,y)(tt)10010反复上述近似进程,当tt时,y(t)y2yf(t,y)(t2t1)22111那么有普通近似公式y(t)yn1ynf(t,y)(tn1t)n1nnn假如令tn1tnh
11、,称为盘算步矩,那么ny(t)yn1ynf(t,y)hn(1)n1nn这确实是欧拉法数字积分的递推盘算公式。由公式可看出,只需咱们给出方程的初值t,y以及响应的步距,逐渐进展递推00就可取得微分方程的近似数字解。2h,由此,要取得高精度解,必需欧拉法的计就是非常复杂的,其盘算偏差反比于减小步距,但这使得盘算次数添加,又因为盘算机的字长无限,引入舍入偏差,因此此办法的精度进步无限,实践运用中较少采纳。h减小得过小,将2梯形法预告校订法欧拉法精度低,却给咱们一些启示,对微分方程yf(t,y)t可改写成y(t)y0f(,y)dt0当tt时,那么1t1f(t,y(t)dty(t)1y0t0今后式能够看
12、出,请求得y(t)的值,等式左边中含有未知函数,因此不克不及掉掉1y(t)的值,但假如咱们用曾经明白的函数值1y(t)来替代y(t),用稳定代替变更的函0数,即t1t1f(t,y(t)dtf(t,y(t)dt00t0t0实践上左边是一个矩形面积t1f(t,y(t)dtf(t,y(t)(tt)0010t0那么y1y0hf(t,y)000递推公式为yn1ynhf(t,yn)nn用此矩形的面积的算法,其盘算偏差是显然的欧拉法,为了进步精度,咱们能够用梯形面积来代替矩形的面积,即t112f(t,y(t)dt(ff)h001t012那么y1y0(f0f1)h01递推方式为yn1ynh(fnfn1)n21
13、或yn1ynhf(t,y)f(t,y)nnnn1n12运用上式求积分,发生了新的咨询题,即在盘算y时,要用y,而y不知,n1n1n1那么f(t,y)是未知的,要取得y,平日可用迭代办法,即在t与t之间迭n1n1n1nn1代屡次,使其盘算的y逐渐收敛于y(t),即n110n1yynhf(t,y)nnn11n10hf(t,y)f(t,y)nnnn1n1yyn212kn1k1hf(t,y)f(t,y)nnnn1n1yynk时,yk假如序列y极限存在,那么当ky(t),要保障上述极限存在,只n1n1n1要拔取h小到必定水平,就能掉掉满意。中拔取必定的满意了收敛前提,但在盘算上要迭代屡次才以为求得了精确
14、值,迭代次数越多,盘算精度越高,但盘算任务量加年夜,因此普通只迭代一次即可,那么算法写成0n1yynhf(t,y)nnn(2)10hf(t,y)f(t,y)nnnn1n1yn1yn2上式为预告校订公式。运用梯形近似进展校订求得的值,实践上此办法是将欧拉法与梯形法的联合的一种算法,盘算量比欧拉法添加了一倍。3龙格库塔法(runge-kutta)将梯形法进一步扩年夜,能够掉掉常常运用的一种算法。思索如下的微分方程:dydxyf(t,y)y(t)y00(3)设h为步长,即取t1t0h,那么y1y(t0h)2当h取值绝对小时,可运用泰勒级数将y在y处开展,而保存h项,即10tt0yy01f(fdy)h
15、2ydtyyf(t,y)h(4)10002t在盘算时,为避免求微分,咱们设y1y0(ak1ak)h122k1f(t,y0)0(5)k2f(t0bh,y0bkh)121当h非常小,在(t,y)处泰勒开展,有00ffkf(t,y)(b1hb2kh)1200ttt0yyy0将k,k代入5式得12ff2f)hy1y0(aa)f(t,y)h(ab1ab22(6)12002tyaa1121将6与4比拟,可得ab1221ab222方程中有四个未知数,那么解有无量多组,可取一个解,拔取a1a,那么有:21a1a2,b1,1b212代入(5),可得二阶龙格库塔法的盘算公式1yy0(kk)h1212kf(t,y0
16、)(7)10kf(th,ykh)20012因为在泰勒级数中只保存了h以下的项,因此称为二阶龙格库塔法,此法的截断3偏差反比于h。比拟(2)式,这组公式完整一样,其盘算任务量完整一样,从而也证3明白梯形法的截断偏差反比于h。4假如咱们请求更高的盘算精度,可保存级数的h及以下的项,其如今的截断偏差正5比于h,其公式确实是在仿真顶用得较普遍的四阶龙格库塔法,它有多种写法,其中一种为:16y1y0h(k12k22k3k)4k1f(t,y)001212(8)k2f(t0k3f(t0h,y0hk1)hk2)1212h,y0k4f(t0h,y0hk)3推导办法与二阶办法一样,但比拟费事,这里就不再推导了。采
17、纳公式7跟8,在盘算时只用到上一次的值y,而与更前的值有关,存在0这种盘算法称为一步法。在盘算中,步长h是能够变更的,其变更范畴是能够依照精度请求而定。后面的算法是以一阶一元微分方程而掉掉的,但普通零碎均是高于一阶的,依照控制道理可知,高阶零碎的模子可化成n元一次微分方程组的方式,这种模子结构为线性微分方程组:y01y02yAyBuy(t)0y0nA是一个nn阶方阵,B是一个nm阶方阵,y为n阶向量,n是零碎的阶数,m为零碎的输出个数,u为m阶输出向量,此中yifi(u(t),y)ayay2aynbu1bumimi1,2,ni11i2ini1对这种方程求解,为使顺序计划紧凑,咱们引入一个向量跟两个矩阵:1212H=0,h,h,h=h1,h2,h3,h40k11k12k13k140k21k22k23k24K=k0,k1,k2,k3,k4=V=v1,v2,v3,v4=0kn1kn2kn3kn4n51212u(t)u(t0h)u(t01h)u(t0h)11011212u(t)u(t0h)u(t0mh)u(t0h)mm0mm4由8式可得盘算矩阵k的递推公式:0kA(yhk)Bvjj1,2,3,4jjj116hhhh13yykFy0kkkk4101231316
限制150内