數(shù)值計算二分法、簡單迭代法、Newton迭代法、弦截法割線法、雙點弦法_第1頁
數(shù)值計算二分法、簡單迭代法、Newton迭代法、弦截法割線法、雙點弦法_第2頁
數(shù)值計算二分法、簡單迭代法、Newton迭代法、弦截法割線法、雙點弦法_第3頁
免費預(yù)覽已結(jié)束,剩余15頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、本科生實驗報告實驗課程數(shù)值計算方法學(xué)院名稱信息科學(xué)與技術(shù)學(xué)院專業(yè)名稱計算機科學(xué)與技術(shù)學(xué)生某某學(xué)生學(xué)號指導(dǎo)教師實驗地點實驗成績二0 一六年五月二一六年五月word實驗一非線性方程求根實驗?zāi)康模赫莆辗蔷€性方程求根的根本步驟與方法,。實驗內(nèi)容:試分別用二分法、簡單迭代法、Newt on迭代法、弦截法(割線法、 雙點弦法),求x5-3x3+x-仁0在區(qū)間-8,8上的全部實根,誤差限為10-6。要求:討論求解的全過程,對所用算法的局部收斂性,優(yōu)缺點等作分析與比 擬,第2章算法思想思想:在函數(shù)的單調(diào)有根區(qū)間內(nèi),將有根區(qū)間不斷的二分,尋找方程的解。中點 mid=(x0+x1)/22.假如f(mid)=0,如

2、此mid為方程的根,否如此比擬與兩端的符號, 假如與f(x0)異號,如此根在x0,mid之間,否如此在mid,x1之間。3并重復(fù)上述步驟,直達達到精度要求,如此mid為方程的近似解。開始讀入a,b,e+ yes輸出mid結(jié)束2.2簡單迭代法思想:迭代法是一種逐次逼近的方法,它是固定公式反復(fù)校正跟的近似值, 使之逐步準確,最后得到精度要求的結(jié)果。迭代公式f(x),迭代公式必須是收斂的。2計算 x1,x 1=f(x0).3判斷|x1-x0|是否滿足精度要求,如不滿足如此重復(fù)上述步驟4輸出x1,即為方程的近似解。f為迭代函數(shù)2.3 Newton迭代法思想:設(shè)r是“ "的根,選取|作為r的初

3、始近似值,過點滋打;農(nóng)矗做曲線U出的切線L,L的方程為1|: ,求出L與x軸交點的r _r f(珀橫坐標,稱xi為r的一次近似值。過點他bd做曲線y = /的切線,并求該切線與x軸交點的橫坐標',稱-為r的二次近似值。重復(fù)以上過程,得r的近似值序列,其中,: 稱為r的滬門 次近似值原函數(shù)的導(dǎo)數(shù)f' (x);構(gòu)造牛頓迭代公式r _T 川如2.計算'',假如f' (x0)=0,退出計算,否如此繼續(xù)向下迭代。3.假如|x1-x0|滿足精度要求,x1即為方程的近似解。開始輸入x0,ef'(x0)=0yes輸出 x1結(jié)束思想:為加速收斂,改用兩個端點都在變

4、動的弦,用差商替代牛頓迭代公式的導(dǎo)數(shù)f' (x)雙點弦法的公式2計算 x2=x1-f(x1)(x1-x0)/f(x1)-f(x0);3.判斷f(x2)是否滿足精度要求,假如沒有如此按照上述步驟繼續(xù)迭 代,否如此輸出x2.x2即為方程的近似解。開始輸入x0,x1,e輸出x2第3章測試結(jié)果與分析測試結(jié)果函數(shù)圖像分法俵 1-1, 1-2, 1-3)-16-1.3kxkkxkkxk05101611271238134914表1-1區(qū)間-12-kxkkxkkxk05101611271238134914-1表1-2區(qū)間kxkkxkkxk0714181529163101741118512613表1-3

5、結(jié)果簡單迭代法表初值kxkkxkkxk171328143915410165111761218表2-1初值-1kx1-12-1kxkkxkkxk1815291631017表2-2411185121961320714表2-3牛頓迭代法表3-1.3-2, 3-3初值-1.5 結(jié)果 x=kxkkxk142536表3-1初值-1 結(jié)果x=kx1-12-1表3-2結(jié)果 x=kxkkxk15263748表3-3雙點弦法表4-1.4-2, 4-3區(qū)間卜1.6,-1.3結(jié)果 x=kxkf(xk)kxkf(xk)15263748表4-1區(qū)間結(jié)果x= -1kxkf(xk)1234-1表4-2區(qū)間1.結(jié)果x=kxkf

6、(xk)12345表4-3從測試結(jié)果可以看出二分法和簡單迭代法的收斂速度遠大于牛頓迭代和弦截法的收斂速度。二分法和簡單迭代法的公式易于構(gòu)造和計算,牛頓迭代法雖然收斂高,但要求導(dǎo)數(shù),計算的復(fù)雜度高!雙點弦法隨稍慢于牛頓跌代法,可以用差商代替牛頓迭代法中的導(dǎo)數(shù),降低了計算的復(fù)雜度!附錄:源程序清單#in clude<iostream>#in clude<math.h>usingnamespace std;double foot =;/定義尋根步長int a=-8,b=8;double* rn=n ewdouble5; 解的區(qū)間double* r =newdouble5;/

7、方程近似解int m=0;根的個數(shù)int x_co unt;double precisi on =;精度要求函數(shù)的表達式xA5-3xA3+x-1double f(double x)return (pow(x,5)-3*pow(x,3)+x-1);void in it ()/根據(jù)函數(shù)圖像確定根的區(qū)間和迭代初值r0=-;r1=-1;r2=;rn0=-;rn1=-;rn2=;假如沒有給出區(qū)間和初值,進展逐步搜索有根區(qū)間/尋找根的區(qū)間void search()for (int i=0;i*foot-8<8;i+) if(f(i*foot-8)* f(i + 1 )* foot-8)<0)

8、rnm=i*foot -8;m+;/=二分法= double Dichotomy (double a,double b)double mid =0;int i = 0;while (fabs(b-a)>precision)mid =(a+b)/2;if (f (a)*f(mid)<=0) b=mid;/判斷與端點函數(shù)值得符號else a=mid;cout<<mid<<e ndl;rx_count+= mid ;return mid ;返回最終結(jié)果/=簡單迭代法=II構(gòu)造迭代公式double fitera (double x)double result=0;d

9、ouble xx=3* pow(x,3)-x+1;if (xx<=0)xx=-xx;return pow (xx ,/)*(- 1);elsereturn pow (xx,/);/簡單迭代double itera (double x0)cout<<x0<<e ndl;double x1 =fitera (x0);while (fabs(x1-x0)>precision)x0=x1;x1=fitera(x0);/沒有到達精度要求繼續(xù)迭代cout<<x1<<e ndl;return x1;/返回最終結(jié)果/=牛頓迭代法=/計算函數(shù)的一階導(dǎo)數(shù)

10、fderivatives double xdouble fderivatives (double x)return 5* pow(x,4)-9*(x,2)+1;/構(gòu)造牛頓迭代公式 newto nitera(double x)double n ewt on itera (double x)if (fderivatives (x)=0)return -1;/假如導(dǎo)數(shù)為 0 如此停止迭代elsereturn x-(f(x)/fderivatives (x);/牛頓迭代double newton (double x0) double x1 =n ewt on itera(xO); while (fab

11、s(x1-x0)>precision) x0=x1;if (newtonitera (x0)=-1 )break ; x1 = newt on itera (x0); cout<<x1<<e ndl;return x1;/返回最終結(jié)果/繼續(xù)迭代/=雙點弦法迭代=/構(gòu)造弦截法的迭代公式double twopointchord_f (double xO,double x1) return x1-(f(x1 )/(f(x1 )-f(xO)*( x1-x0);/雙點弦法迭代double twopointchord (double x0,double x1)double x

12、3 =twopointchord_f (x0,x1); cout<<x3<<e ndl;while (fabs(f(x3)> precision)cout<<"f(x3)" <<f(x3)<<endl; x0=x1;x仁 x3;x3=twopointchord_f (x0,x1);/ cout<<x3<<e ndl;cout<<f(x3)<< en dl;return x3;/返回最終結(jié)果/測試void main()/輸出x3的函數(shù)值/沒有到達精度要求繼續(xù)迭代i

13、ni t();/初始化區(qū)間和迭代初值/*測試代碼輸出每次的迭代結(jié)果和最終結(jié)果cout<<"二分法"<<e ndl;for(int i =0;i<3;i+)double result=0;cout<<"有根區(qū)間為"<<rni<<""<<rni+foot<<""<<endl;result=Dichotomy(rni,rni+foot);/ 將區(qū)間端點帶入公式cout<<"求得近似解為"&

14、lt;<result<<endl;cout<<"迭代法"<<e ndl;for(i =0;i<3;i+)double result=0;cout<<"有根區(qū)間為"<<rni<<""<<rni+foot<<""<<endl;double x0 =ri;取得初值result=itera(xO);/ 帶入公式cout<<"求得近似解為"<<result<

15、<endl;cout<<" 牛頓迭代"<<endl;for(i =0;i<3;i+)double result=0;cout<<"有根區(qū)間為"<<rni<<""<<rni+foot<<""<<endl;double x0 =ri;/ 取得初值result=n ewt on( x0);/ 帶入公式cout<<"求得近似解為"<<result<<endl;c

16、out<<"弦截法"<<e ndl;for(i =0;i<3;i+)double result=0;cout<<"有根區(qū)間為"<<rni<<""<<rni+foot<<""<<endl;result=twopoi ntchord(rni,rni+foot);/將區(qū)間端點帶入公式cout<<"求得近似解為"<<result<<endl;/*在這次實驗中,通過編程將二分法、簡單迭代法、Newt on迭代法、弦截法(割線法、雙點弦法)以代

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論