資源描述:
《數(shù)值與分析實驗報告》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、.數(shù)值分析實驗報告(第二章)實驗題目:分別用二分法、牛頓迭代法、割線法、史蒂芬森迭代法求方程fx=x2+1x-15=0的根x=1,觀察不同初始值下的收斂性,并給出結(jié)論。問題分析:題目有以下幾點要求:1.不同的迭代法計算根,并比較收斂性。2.選定不同的初始值,比較收斂性。實驗原理:各個迭代法簡述二分法:取有根區(qū)間[a,b]的重點x0,確定新的有根區(qū)間[a1,b1]的區(qū)間長度僅為[a,b]區(qū)間長度的一版。對壓縮了的有根區(qū)間[a1,b1]重復以上過程,又得到新的有根區(qū)間[a2,b2],其區(qū)間長度為[a1
2、,b1]的一半,如此反復,……,可得一系列有根區(qū)間,區(qū)間收斂到一個點即為根。牛頓迭代法:不動點迭代法的一種特例,具有局部二次收斂的特性。迭代格式為xn+1=xn-fxnf'xn,n=0,1,2,…割線法:是牛頓法的改進,具有超線性收斂的特性,收斂階為1.618.迭代格式為xn+1=xn-fxnfxn-fxn-1xn-xn-1,n=1,2,…史蒂芬森迭代法:采用不動點迭代進行預估校正。至少是平方收斂的。迭代格式為yn=φxnzn=φynxn+1=xn-(yn-xn)2zn-2yn+xn這里φx可采用
3、牛頓迭代法的迭代函數(shù)。實驗內(nèi)容:......1.寫出該問題的fx函數(shù)代碼如下:functionpy=f(x)symsk;y=(k^2+1)*(k-1)^5;yy=diff(y,k);py(1)=subs(y,k,x);py(2)=subs(yy,k,x);end......2.分別寫出各個迭代法的迭代函數(shù)代碼如下:二分法:functiony=dichotomie(a,b,e)i=2;m(1)=a;whileabs(a-b)>et=(a+b)/2;s1=f(a);s2=f(b);s3=f(t);if
4、s1(1)*s3(1)<=0b=t;elsea=t;endm(i)=t;i=i+1;endy=[t,i+1,m];end牛頓迭代法:functiony=NewtonIterative(x,e)i=2;en=2*e;m(1)=x;whileabs(en)>=es=f(x);t=x-s(1)/s(2);en=t-x;x=t;m(i)=t;i=i+1;endy=[x,i+1,m];end牛頓割線法:functiony=Secant(x1,x2,e)i=3;m(1)=x1,m(2)=x2;whileabs
5、(x2-x1)>=es1=f(x1);s2=f(x2);t=x2-(x2-x1)*s2(1)/(s2(1)-s1(1));x1=x2;x2=t;m(i)=t;i=i+1;end......y=[x2,i+1,m];end史蒂芬森迭代法:Functionp=StephensonIterative(x,e)i=2;m(2)=x;en=2*e;whileabs(en)>=ey=fai(x);z=fai(y);t=x-(y-x)^2/(z-2*y+x);en=t-x;x=t;m(i)=t;i=i+1;en
6、dp=[x,i+1,m];end......1.因為φx經(jīng)常被使用,故可以寫一個φx函數(shù)。代碼如下:functiony=fai(x)s=f(x);y=x-s(1)/s(2);end2.可以繪制不同的圖形來比較不同迭代法的收斂性和不同初值下的收斂性。代碼如下:clearall;%相同初始值,不同迭代法下的收斂x1=dichotomie(0,3,1e-10);x2=NewtonIterative(0,1e-10);x3=Secant(0,2,1e-10);x4=StephensonIterative(
7、0,1e-10);[x1(2),x2(2),x3(2),x4(2)]figure,subplot(2,2,1),plot(x1(3:x1(2))),title('二分法');subplot(2,2,2),plot(x2(3:x2(2))),title('牛頓迭代法');subplot(2,2,3),plot(x3(3:x3(2))),title('牛頓割線法');subplot(2,2,4),plot(x4(3:x4(2))),title('史蒂芬森迭代法');figure,subplot(2,2
8、,1),plot((x1(4:x1(2)-1)-x1(1))./(x1(3:x1(2)-2)-x1(1))),title('二分法');subplot(2,2,2),plot((x2(4:x2(2)-1)-x2(1))./(x2(3:x2(2)-2)-x2(1))),title('牛頓迭代法');......subplot(2,2,3),plot((x3(4:x3(2)-1)-x3(1))./(x3(3:x3(2)-2)-x3(1))),title('牛頓割線法');subplot