非線性方程求根問題_第1頁
非線性方程求根問題_第2頁
非線性方程求根問題_第3頁
非線性方程求根問題_第4頁
非線性方程求根問題_第5頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、. 計算機(jī)學(xué)院上機(jī)實踐報告課程名稱:數(shù)值計算方法B年級:上機(jī)實踐成績:指導(dǎo)教師:姓名:上機(jī)實踐名稱:非線性方程求根問題學(xué)號:上機(jī)實踐日期:上機(jī)實踐編號上機(jī)實踐時間:一、目的1通過本實驗,幫助加深對非線性方程求根方法的構(gòu)造過程的理解;2能將各種方法編寫為程序并上機(jī)實現(xiàn);3比較各種方法在求解同一非線性方程根時,在收斂情況上的差異。二、內(nèi)容與設(shè)計思想1用二分法求方程f(x)=x3-2x-5=0在區(qū)間2 , 3內(nèi)的根。2方程f(x)=2x3-5x2-19x+42=0在x=3.0附近有根,試寫出其三種不同的等價形式以構(gòu)成三種不同的迭代格式,再用簡單迭代法求根,觀察這三種迭代是否收斂。三、使用環(huán)境1. 硬

2、件環(huán)境微型計算機(jī)(Intel x86系列CPU)一臺2. 軟件環(huán)境Windows2000/XP操作系統(tǒng)VC+6.0或其它的開發(fā)工具。四、核心代碼及調(diào)試過程1用二分法求方程f(x)=x3-2x-5=0在區(qū)間2 , 3內(nèi)的根主要代碼:void bisect(double a,double b,int max_B) double root, ya,yb,yroot;int i,actual_B;ya=f(a);yb=f(b);if(ya*yb>0) printf("method failed!n");exit(0); for(i=1;i<=max_B;i+) root

3、=(a+b)/2;yroot=f(root); /取當(dāng)前含根區(qū)間的中點if(yroot=0) a=root;b=root;else if(yb*yroot>0) /取含根區(qū)間為a,(a+b)/2 b=root;yb=yroot;Else /取含根區(qū)間為(a+b)/2,b a=root;ya=yroot;if(fabs(b-a)<EPS) break; root=(a+b)/2; yroot=f(root); actual_B=i;printf("root=%10.6lftf(root)=%10.6etatual_B=%dn",root,yroot,actual_

4、B); 結(jié)果:2迭代格式分別為:x=2/19*x*x*x-5/19*x*x+42/19x=sqrt(2/5*x*x*x-19/5*x+42/5);x=(5/2*x*x+19/2*x-21)(1/3) 主要代碼:double g(double x)return(pow(2.0/19.0*x*x*x-5/19*x*x+42/19),1.0); /*定義迭代函數(shù)*/void iterate(double a,double b,double x0,int max_D)int k=1;double x1;while(k<=max_D)x1=g(x0); /*迭代計算*/if(x1<a)|(x

5、1>b)printf("re_select a proper initial value x0!n");exit(0);if(fabs(x1-x0)<EPS) /*迭代成功并達(dá)到精度要求*/printf("method succeed!n");printf("root=%10.6lfn",x1);break;x0=x1;k+; /*x0的值被更新,累加迭代次數(shù)*/printf("iteration times=%dn",k); /*輸出實際迭代次數(shù)*/if(k>max_D)printf("

6、;method failed!n");int main() double a=2.0,b=3.0,x0=(a+b)/2.0;int max_D=50;iterate(a,b,x0,max_D);前兩種迭代結(jié)果:第三種:輸入數(shù)據(jù)時應(yīng)注意數(shù)據(jù)的類型,否則程序會報錯。五、總結(jié)1、兩道題結(jié)果值均是7為有效數(shù)字,精度較高,計算次數(shù)較少。2、寫程序時應(yīng)注意數(shù)字的類型。六、附錄代碼:11#include<stdio.h>#include<math.h>#include<stdlib.h>#define EPS 0.000001double f(double x)

7、return(x*x*x-2*x-5);void bisect(double a,double b,int max_B)double root, ya,yb,yroot;int i,actual_B;ya=f(a);yb=f(b);if(ya*yb>0)printf("method failed!n");exit(0);for(i=1;i<=max_B;i+)root=(a+b)/2;yroot=f(root);if(yroot=0) a=root;b=root;else if(yb*yroot>0) b=root;yb=yroot;else a=root

8、;ya=yroot;if(fabs(b-a)<EPS) break;root=(a+b)/2; yroot=f(root); actual_B=i;printf("root=%10.6lftf(root)=%10.6etatual_B=%dn",root,yroot,actual_B); int main() double a=2,b=3; int max_B=50; bisect(a, b,max_B);return 0; 12#include<stdio.h>#include<math.h>#include<stdlib.h>#

9、define EPS 0.00001double g(double x)return(pow(5.0/2.0*x*x+19.0/2.0*x-21.0),1.0/3.0);void iterate(double a,double b,double x0,int max_D)int k=1;double x1;while(k<=max_D)x1=g(x0);if(x1<a)|(x1>b)printf("re_select a proper initial value x0!n");exit(0);if(fabs(x1-x0)<EPS)printf(&qu

10、ot;method succeed!n");printf("root=%10.6lfn",x1);break;x0=x1;k+;printf("iteration times=%dn",k);if(k>max_D)printf("method failed!n");int main()double a=2.0,b=4.0,x0=(a+b)/2.0;int max_D=50;iterate(a,b,x0,max_D);21#include<stdio.h>#include<math.h>#incl

11、ude<stdlib.h>#define EPS 0.00001double g(double x)return(pow(2.0/5.0*x*x*x-19.0/5.0*x+42/5),1.0/2.0);void iterate(double a,double b,double x0,int max_D)int k=1;double x1;while(k<=max_D)x1=g(x0);if(x1<a)|(x1>b)printf("re_select a proper initial value x0!n");exit(0);if(fabs(x1

12、-x0)<EPS)printf("method succeed!n");printf("root=%10.6lfn",x1);break;x0=x1;k+;printf("iteration times=%dn",k);if(k>max_D)printf("method failed!n");int main()double a=2.0,b=4.0,x0=(a+b)/2.0;int max_D=50;iterate(a,b,x0,max_D);22#include<stdio.h>#incl

13、ude<math.h>#include<stdlib.h>#define EPS 0.00001double g(double x)return(pow(2.0/19.0*x*x*x-5.0/19.0*x*x+42.0/19.0),1.0);void iterate(double a,double b,double x0,int max_D)int k=1;double x1;while(k<=max_D)x1=g(x0);if(x1<a)|(x1>b)printf("re_select a proper initial value x0!n");exit(0);if(fabs(x1-x0)<EPS)printf("method succeed!n");printf("ro

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論