數(shù)值計(jì)算課程設(shè)計(jì)典型數(shù)值算法的c++語(yǔ)言程序設(shè)計(jì)_第1頁(yè)
數(shù)值計(jì)算課程設(shè)計(jì)典型數(shù)值算法的c++語(yǔ)言程序設(shè)計(jì)_第2頁(yè)
數(shù)值計(jì)算課程設(shè)計(jì)典型數(shù)值算法的c++語(yǔ)言程序設(shè)計(jì)_第3頁(yè)
數(shù)值計(jì)算課程設(shè)計(jì)典型數(shù)值算法的c++語(yǔ)言程序設(shè)計(jì)_第4頁(yè)
數(shù)值計(jì)算課程設(shè)計(jì)典型數(shù)值算法的c++語(yǔ)言程序設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩31頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、數(shù)值計(jì)算課程設(shè)計(jì)說(shuō)明書題目: 典型數(shù)值算法的C+語(yǔ)言程序設(shè)計(jì) 院 (系): 理學(xué)院 專業(yè)班級(jí): 數(shù)學(xué)1xx 學(xué) 號(hào): xxxx12010134 學(xué)生姓名: x 指導(dǎo)教師: xxxx 2014年7月 6日陜 西 科 技 大 學(xué)數(shù)值計(jì)算課程設(shè)計(jì)任務(wù)書理學(xué)院信息與計(jì)算科學(xué)/應(yīng)用數(shù)學(xué)專業(yè)信息12*/數(shù)學(xué)12* 班級(jí) 學(xué)生: xxx 題目:典型數(shù)值算法的C+語(yǔ)言程序設(shè)計(jì) 課程設(shè)計(jì)從 2014 年 5 月 26 日起到 2014 年 7 月 6 日1、課程設(shè)計(jì)的內(nèi)容和要求(包括原始數(shù)據(jù)、技術(shù)要求、工作要求等):每人需作10個(gè)算法的程序、必做6題、自選4題。對(duì)每個(gè)算法要求用C+語(yǔ)言進(jìn)行編程。必選題:1、高斯

2、列主元法解線性方程組2、牛頓法解非線性方程組3、經(jīng)典四階龍格庫(kù)塔法解一階微分方程組4、三次樣條插值算法(壓緊樣條)用C+語(yǔ)言進(jìn)行編程計(jì)算 依據(jù)計(jì)算結(jié)果,用Matlab畫圖并觀察三次樣條插值效果。5、龍貝格求積分算法6、M次多項(xiàng)式曲線擬合,據(jù)計(jì)算結(jié)果,用Matlab畫圖并觀察擬合效果。自選題:自選4道其他數(shù)值算法題目.每道題目重選次數(shù)不得超過(guò)5次.2、對(duì)課程設(shè)計(jì)成果的要求包括圖表、實(shí)物等硬件要求:2.1 提交課程設(shè)計(jì)報(bào)告按照算法要求,應(yīng)用C+語(yǔ)言設(shè)計(jì)和開(kāi)發(fā)算法程序,提交由:每個(gè)算法說(shuō)明;與算法相應(yīng)的程序設(shè)計(jì)說(shuō)明(程序中的主要變量語(yǔ)義說(shuō)明,變量的數(shù)據(jù)類型,數(shù)據(jù)在內(nèi)存中組織和存儲(chǔ)結(jié)構(gòu)說(shuō)明,各函數(shù)模塊

3、的主要流程圖,函數(shù)功能說(shuō)明,函數(shù)的形參說(shuō)明,函數(shù)的調(diào)用方法說(shuō)明);程序調(diào)試與實(shí)例運(yùn)行記錄 (包括程序調(diào)試和修改記錄、測(cè)試結(jié)論、運(yùn)行結(jié)果記錄),每個(gè)算法的源程序代碼編入附錄構(gòu)成的課程設(shè)計(jì)報(bào)告。2.2 課程設(shè)計(jì)報(bào)告版式要求目錄的要求:居中打印目錄二字,(四號(hào)黑體,段后1行),字間空一字符;章、節(jié)、小節(jié)及其開(kāi)始頁(yè)碼(字體均為小四號(hào)宋體)。節(jié)向右縮進(jìn)兩個(gè)字符,小節(jié)及以后標(biāo)題均向右縮進(jìn)四個(gè)字符。目錄中應(yīng)包含正文部分每個(gè)算法章節(jié)標(biāo)題、設(shè)計(jì)體總結(jié)、無(wú)序號(hào)的“參考文獻(xiàn)資料”,目錄的最后一項(xiàng)是“附錄”正文的要求:算法說(shuō)明論述清楚,公式符號(hào)撰寫規(guī)范,流程圖圖符規(guī)范, 計(jì)算正確,文字簡(jiǎn)練通順,插圖簡(jiǎn)潔規(guī)范,書寫整潔

4、。文中圖、表按制圖要求繪制,程序調(diào)試和運(yùn)行情況記錄詳實(shí)。打印版面要求:A4紙,頁(yè)邊距:上2cm,下2cmcm、右2cm;字體:正文宋體、小四號(hào);行距:固定值20;頁(yè)眉1.5cm ,頁(yè)腳1.75cm;頁(yè)碼位于頁(yè)腳居中打印;奇數(shù)頁(yè)頁(yè)眉“數(shù)值計(jì)算課程設(shè)計(jì)”,偶數(shù)頁(yè)頁(yè)眉“具體算法名稱”,頁(yè)眉宋體小5號(hào);段落及層次要求:每節(jié)標(biāo)題以四號(hào)黑體左起打?。ǘ吻岸魏蟾?.5行),節(jié)下為小節(jié),以小四號(hào)黑體左起打?。ǘ吻岸魏蟾?.5行)。換行后以小四號(hào)宋體打印正文。章、節(jié)、小節(jié)編號(hào)分別以1、1.1、1.1.1格式依次標(biāo)出,空一字符后接各部分的標(biāo)題。每一章的標(biāo)題都應(yīng)出現(xiàn)在本章首頁(yè)的第一行上。當(dāng)課程設(shè)計(jì)報(bào)告結(jié)構(gòu)復(fù)雜,小節(jié)

5、以下的標(biāo)題,左起頂格書寫,編號(hào)依次用(1)、(2)或1)、2)順序表示。字體為小四號(hào)宋體。對(duì)條文內(nèi)容采用分行并敘時(shí),其編號(hào)用(a)、(b)或a)、b)順序表示,如果編號(hào)及其后內(nèi)容新起一個(gè)段落,則編號(hào)前空兩個(gè)中文字符。曲線圖表要求:所有曲線、圖表、線路圖、流程圖、程序框圖、示意圖等不準(zhǔn)徒手畫,必須按國(guó)家規(guī)定標(biāo)準(zhǔn)或工程要求繪制(應(yīng)采用計(jì)算機(jī)繪圖)。課程設(shè)計(jì)說(shuō)明書(報(bào)告)中圖表、公式要求如下:(a)圖:圖的名稱采用中文,中文字體為五號(hào)宋體,圖名在圖片下面。引用圖應(yīng)在圖題右上角標(biāo)出文獻(xiàn)來(lái)源。圖號(hào)以章為單位順序編號(hào)。格式為:圖1-1,空一字符后接圖名,比如第1章第5個(gè)圖是關(guān)于高斯列主元法解方程組算法圖,

6、圖的下方的圖號(hào)圖名應(yīng)為:圖1-5 高斯列主元法解方程組算法圖。(b)表格:表的名稱及表內(nèi)文字采用中文,中文字體為五號(hào)宋體,表名在表格上面。表號(hào)以章為單位順序編號(hào),表內(nèi)必須按規(guī)定的符號(hào)標(biāo)注單位。格式為:表1-1,空一字符后接表格名稱。(c)公式:公式書寫應(yīng)在文中另起一行,居中排列。公式序號(hào)按章順序編號(hào)。字體為五號(hào)宋體,序號(hào)靠頁(yè)面右側(cè)。格式為:(1-1)。設(shè)計(jì)體會(huì)及今后的改進(jìn)意見(jiàn):設(shè)計(jì)總結(jié)要寫出算法理解,編程經(jīng)驗(yàn)等技術(shù)性、學(xué)術(shù)性總結(jié);體會(huì)要簡(jiǎn)潔、真實(shí)、深刻,切忌空話、大話,客套話和矯揉造作之詞。改進(jìn)意見(jiàn)要合理、中肯。參考文獻(xiàn)的要求:另起一頁(yè),居中打印參考文獻(xiàn)四字(四號(hào)黑體,段前段后1行),字間空一

7、字符;另起一行,按論文中參考文獻(xiàn)出現(xiàn)的先后順序用阿拉伯?dāng)?shù)字連續(xù)編號(hào)(參考文獻(xiàn)應(yīng)在正文中注出);參考文獻(xiàn)中每條項(xiàng)目應(yīng)齊全(字體均為小四號(hào)宋體)。(格式:編號(hào)作者.論文或著作名稱.期刊名或出版社.出版時(shí)間)。(期刊應(yīng)注明第幾期、起止頁(yè)數(shù)(包括論著)。參考文獻(xiàn)中條目要符合科技文獻(xiàn)引用文獻(xiàn)條目書寫的國(guó)家標(biāo)準(zhǔn)規(guī)范。2.3 設(shè)計(jì)報(bào)告裝訂順序與規(guī)范封面數(shù)值計(jì)算課程設(shè)計(jì)任務(wù)書目錄數(shù)值計(jì)算課程設(shè)計(jì)報(bào)告正文設(shè)計(jì)體會(huì)及今后的改進(jìn)意見(jiàn)參考文獻(xiàn)(無(wú)需加目錄序號(hào))附錄(無(wú)需加目錄序號(hào))左邊緣裝訂3、課程設(shè)計(jì)工作進(jìn)度計(jì)劃:時(shí)間設(shè)計(jì)任務(wù)及要求第19周編寫和調(diào)試程序并按要求撰寫設(shè)計(jì)報(bào)告 目 錄TOC o 1-3 h u HYP

8、ERLINK l _Toc14545 1高斯列主元法解線性方程組 PAGEREF _Toc14545 1 HYPERLINK l _Toc21098 PAGEREF _Toc21098 1 HYPERLINK l _Toc32497 PAGEREF _Toc32497 1 HYPERLINK l _Toc16531 PAGEREF _Toc16531 1 HYPERLINK l _Toc19579 2牛頓法解非線性方程組 PAGEREF _Toc19579 2 HYPERLINK l _Toc783 PAGEREF _Toc783 2 HYPERLINK l _Toc10840 2.1算例:

9、PAGEREF _Toc10840 3 HYPERLINK l _Toc1433 2.2程序代碼 PAGEREF _Toc1433 5 HYPERLINK l _Toc10740 3經(jīng)典四階龍格庫(kù)塔法解一階微分方程組 PAGEREF _Toc10740 9 HYPERLINK l _Toc24123 PAGEREF _Toc24123 9 HYPERLINK l _Toc21069 3.2算例 PAGEREF _Toc21069 10 HYPERLINK l _Toc9365 3.3程序代碼 PAGEREF _Toc9365 10 HYPERLINK l _Toc16055 4三次樣條插值算法

10、(壓緊樣條) PAGEREF _Toc16055 12 HYPERLINK l _Toc10256 PAGEREF _Toc10256 12 HYPERLINK l _Toc17591 4.2算例 PAGEREF _Toc17591 12 HYPERLINK l _Toc9435 4.3 C+程序代碼 PAGEREF _Toc9435 13 HYPERLINK l _Toc24980 4.4 matlab程序代碼 PAGEREF _Toc24980 16 HYPERLINK l _Toc21930 5龍貝格求積分算法 PAGEREF _Toc21930 17 HYPERLINK l _Toc3

11、0098 5.1算法說(shuō)明 PAGEREF _Toc30098 17 HYPERLINK l _Toc28812 5.2算例 PAGEREF _Toc28812 17 HYPERLINK l _Toc16888 5.3 程序代碼 PAGEREF _Toc16888 17 HYPERLINK l _Toc20309 6 M次多項(xiàng)式曲線擬合 PAGEREF _Toc20309 18 HYPERLINK l _Toc2125 PAGEREF _Toc2125 18 HYPERLINK l _Toc18539 PAGEREF _Toc18539 19 HYPERLINK l _Toc23663 PAGE

12、REF _Toc23663 19 HYPERLINK l _Toc8957 7拉格朗日插值解多項(xiàng)式 PAGEREF _Toc8957 22 HYPERLINK l _Toc2161 PAGEREF _Toc2161 22 HYPERLINK l _Toc10731 PAGEREF _Toc10731 22 HYPERLINK l _Toc6247 PAGEREF _Toc6247 23 HYPERLINK l _Toc15078 8二分法求解非線性方程 PAGEREF _Toc15078 24 HYPERLINK l _Toc5508 8.1算法說(shuō)明 PAGEREF _Toc5508 24 H

13、YPERLINK l _Toc23437 8.1算例 PAGEREF _Toc23437 24 HYPERLINK l _Toc29495 8.2程序代碼 PAGEREF _Toc29495 24 HYPERLINK l _Toc27805 9 不動(dòng)點(diǎn)迭代 PAGEREF _Toc27805 26 HYPERLINK l _Toc1581 PAGEREF _Toc1581 26 HYPERLINK l _Toc4968 9.2算例 PAGEREF _Toc4968 26 HYPERLINK l _Toc23648 PAGEREF _Toc23648 26 HYPERLINK l _Toc297

14、42 10復(fù)化梯形求積分公式 PAGEREF _Toc29742 27 HYPERLINK l _Toc18073 PAGEREF _Toc18073 27 HYPERLINK l _Toc27657 PAGEREF _Toc27657 28 HYPERLINK l _Toc10002 PAGEREF _Toc10002 28 HYPERLINK l _Toc12183 11設(shè)計(jì)體會(huì) PAGEREF _Toc12183 29 HYPERLINK l _Toc30236 參 考 文 獻(xiàn) PAGEREF _Toc30236 301高斯列主元法解線性方程組將線性方程組做成增廣矩陣,對(duì)增廣矩陣進(jìn)行行變

15、換。對(duì)第1列元素,在第i行及以下的元素中選取絕對(duì)值最大的元素,將該元素最大的行與第i行交換,然后采用高斯消元法將新得到的消去第i行以下的元素。一次進(jìn)行直到。從而得到上三角矩陣。再對(duì)得到的上三角矩陣進(jìn)行回代操作,即可以得到方程組的解。課本99頁(yè)例3.16,求解方程組的解運(yùn)行結(jié)果如圖1-1所示。圖1-1#include#includeusing namespace std;const N=20;float aNN;int m;int main()int i,j;int c,k,n,p,r;float xN,lNN,s,d;coutm;coutendl;cout請(qǐng)按順序輸入增廣矩陣a:endl;fo

16、r(i=0;im;i+)for(j=0;jaij;for(i=0;im;i+) for(j=i;jfabs(aii)?j:i; /*找列最大元素*/for(n=0;nm+1;n+) s=ain; ain=acn; acn=s; /*將列最大數(shù)防在對(duì)角線上*/for(p=0;pm+1;p+)coutaipt;coutendl;for(k=i+1;km;k+) lki=aki/aii; for(r=i;r=0;i-) d=0;for(j=i+1;jm;j+)d=d+aij*xj;xi=(aim-d)/aii; /*求解*/cout該方程組的解為:endl;for(i=0;im;i+)coutxi=

17、xit; /system(pause); return 0; 2牛頓法解非線性方程組設(shè)已知,第一步計(jì)算函數(shù)第二步計(jì)算雅可比矩陣第三步求線性方程組的解。第四步計(jì)算下一點(diǎn)重復(fù)以上過(guò)程。2.1算例:設(shè)有非線性方程組(課本137頁(yè)例3.32)設(shè)初始值,用牛頓法計(jì)算。解:迭代3次后的近似解向量為1.9068,0.311219;具體運(yùn)行結(jié)果如圖2-1,2-2,2-3所示。 圖2-1圖2-2圖2-1#include#include#define N 2 /非線性方程組中方程的個(gè)數(shù)、未知量的個(gè)數(shù)#define Epsilon 0.0001 /差向量的上限#define Max 100 /最大迭代次數(shù)using

18、 namespace std;const int N2=2*N;int main()void ff(float xxN,float yyN); /計(jì)算向量函數(shù)的因變量向量yyNvoid ffyakebi(float xxN,float yyNN);/計(jì)算雅可比矩陣yyNNvoid inv_yakebi(float yyNN,float invNN);/計(jì)算雅可比矩陣的逆矩陣invvoid newton(float x0N,float invNN,float y0N,float x1N);/由近似解向量x0求近似解向量x1float x0N=2.0,0.25,y0N,yakebiNN,invya

19、kebiNN,x1N,errornorm;int i,iter=0;cout初始近似解向量:endl;for(i=0;ix0i;for(i=0;iN;i+)coutx0i ;coutendl;coutendl;doiter=iter+1;cout第iter次迭代開(kāi)始endl;ff(x0,y0);ffyakebi(x0,yakebi);inv_yakebi(yakebi,invyakebi);newton(x0,invyakebi,y0,x1);errornorm=0;for(i=0;iN;i+)errornorm=errornorm+fabs(x1i);if(errornormEpsilon)

20、 break;for(i=0;iN;i+)x0i=x1i;while(iterMax);return 0;void ff(float xxN,float yyN)float x,y;int i;x=xx0;y=yy1;yy0=x*x-2*x-y+0.5;yy1=x*x+4*y*y-4;cout向量函數(shù)的因變量向量是:endl;for(i=0;iN;i+)coutyyi ;coutendl;coutendl;void ffyakebi(float xxN,float yyNN)float x,y;int i,j;x=xx0;y=xx1;yy00=2*x-2;yy01=-1;yy10=2*x;yy

21、11=8*y;cout雅可比矩陣是:endl;for(i=0;iN;i+)for(j=0;jN;j+)coutyyij ;coutendl;coutendl;void inv_yakebi(float yyNN,float invNN)float augNN2,L;int i,j,k;cout開(kāi)始計(jì)算雅可比矩陣的逆矩陣:endl;for(i=0;iN;i+)for(j=0;jN;j+)augij=yyij;for(j=N;jN2;j+)if(j=i+N)augij=1;elseaugij=0;for(i=0;iN;i+)for(j=0;jN2;j+)coutaugij ;coutendl;co

22、utendl;for(i=0;iN;i+)for(k=i+1;kN;k+)L=-augki/augii;for(j=1;jN2;j+)augkj=augkj+L*augij;for(i=0;iN;i+)for(j=0;jN2;j+)coutaugij ;coutendl;cout0;i-)for(k=i-1;k=0;k-)L=-augki/augii;for(j=N2-1;j=0;j-)augkj=augkj+L*augij;for(i=0;iN;i+)for(j=0;jN2;j+)coutaugij ;coutendl;cout=0;i-)for(j=N2-1;j=0;j-)augij=au

23、gij/augii;for(i=0;iN;i+)for(j=0;jN2;j+)coutaugij ;coutendl;for(j=N;jN2;j+)invij-N=augij;coutendl;cout雅可比矩陣的逆矩陣是:endl;for(i=0;iN;i+)for(j=0;jN;j+)coutinvij ;coutendl;coutendl;void newton(float x0N,float invNN,float y0N,float x1N)int i,j;float sum=0;for(i=0;iN;i+)sum=0;for(j=0;jN;j+)sum=sum+invij*y0j;

24、x1i=x0i-sum;cout近似解向量:endl;for(i=0;iN;i+)coutx1i ;coutendl;coutendl;3經(jīng)典四階龍格庫(kù)塔法解一階微分方程組4階龍格-庫(kù)塔方法(RK4)可模擬N=4的泰勒方法的精度。這種算法可以描述為,自初始點(diǎn)開(kāi)始,利用下面的計(jì)算方法生成近似序列3.2算例:用4階龍格-庫(kù)塔方法計(jì)算區(qū)間0.0,0.2上式(3)的數(shù)值解,采用10個(gè)子區(qū)間,步長(zhǎng)h=0.02。(課本400頁(yè)例9.15)求解運(yùn)行結(jié)果如圖3-1所示。初值圖3-1#include#includeusing namespace std;void LG(double (*f)(double t,

25、double x,double y),double (*g)(double t,double x,double y),double chuzhi3,double resu3,double h)double f1,f2,f3,f4,g1,g2,g3,g4,t0,x0,y0,x1,y1;t0=chuzhi0;x0=chuzhi1;y0=chuzhi2;f1=f(t0,x0,y0);g1=g(t0,x0,y0);f2=f(t0+h/2,x0+h*f1/2,y0+h*g1/2);g2=g(t0+h/2,x0+h*f1/2,y0+h*g1/2);f3=f(t0+h/2,x0+h*f2/2,y0+h*g2

26、/2);g3=g(t0+h/2,x0+h*f2/2,y0+h*g2/2);f4=f(t0+h,x0+h*f3,y0+h*g3);g4=f(t0+h,x0+h*f3,y0+h*g3);x1=x0+h*(f1+2*f2+2*f3+f4)/6;y1=y0+h*(g1+2*g2+2*g3+g4)/6;resu0=t0+h;resu1=x1;resu2=y1;int main()double f(double t,double x,double y);double g(double t,double x,double y);double chuzhi3,resu3;double a,b,S;double

27、 t,step;int i;coutchuzhi0chuzhi1chuzhi2;coutab;coutstep;S=(b-a)/step;coutchuzhi0setw(10)chuzhi1setw(10)chuzhi2endl;for(i=0;istep;i+)LG(f,g,chuzhi,resu,S);coutresu0setw(10)resu1setw(10)resu2endl;chuzhi0=resu0;chuzhi1=resu1;chuzhi2=resu2;return 0;double f(double t,double x,double y)double dx;dx=x+2*y;

28、return(dx);double g(double t,double x,double y)double dy;dy=3*x+2*y;return(dy);4三次樣條插值算法(壓緊樣條)表5-1 三次樣條插值算法說(shuō)明表策略描述包含和的方程(i)三次緊壓樣條,確定,(如果導(dǎo)數(shù)已知,這是“最佳選擇”)(ii)natural三次樣條(一條“松弛曲線”),(iii)外掛到端點(diǎn)(iv) 是靠近端點(diǎn)的常量,(v)在每個(gè)端點(diǎn)處指定,求三次緊壓樣條曲線,以經(jīng)過(guò)點(diǎn)(0,0),(1,0.5),(2,2.0)和(3,1.5),且一階導(dǎo)數(shù)的邊界條件為S(3)=-1。(課本222頁(yè)例5.7)求解運(yùn)行結(jié)果界面如下:圖4

29、-1 三次樣條插值算法(壓緊樣條)Matlab作圖如圖4-2所示。 圖4-24.3 C+程序代碼#include#includeusing namespace std;const int max = 50;float xmax, ymax, hmax;float cmax, amax, fxymmax;float f(int x1, int x2, int x3) float a=(yx3-yx2)/(xx3-xx2); float b=(yx2-yx1)/(xx2-xx1); return (a-b)/(xx3-xx1); /求差分void cal_m(int n)/用追趕法求解出彎矩向量M

30、 float Bmax; B0 = c0 / 2; for(int i = 1; i n; i+) Bi = ci / (2 - ai*Bi-1); fxym0 = fxym0 / 2; for(i = 1; i = 0; i-) fxymi = fxymi - Bi*fxymi+1;void printout(int n);int main() int n,i; char ch; do coutn; for(i = 0; i = n; i+) coutPlease put in Xixi; coutPlease put in Yiyi; for(i = 0; i n; i+) /求步長(zhǎng) hi

31、 = xi+1 - xi; coutt; switch(t) case 1:cout輸入 Y0 Ynf0f1; c0 = 1; an = 1; fxym0 = 6*(y1 - y0) / (x1 - x0) - f0) / h0; fxymn = 6*(f1 - (yn - yn-1) / (xn - xn-1) / hn-1; break; case 2:cout輸入 Y0 Ynf0f1; c0 = an = 0; fxym0 = 2*f0; fxymn = 2*f1; break; default:cout不可用n;/待定 ; for(i = 1; i n; i+) fxymi = 6 *

32、 f(i-1, i, i+1); for(i = 1; i n; i+) ai = hi-1 / (hi + hi-1); ci = 1 - ai; an = hn-1 / (hn-1 + hn); cal_m(n); coutn輸出三次樣條插值函數(shù):n; printout(n); coutch; while(ch = y | ch = Y); return 0;void printout(int n)coutsetprecision(6); for(int i = 0; i n; i+)couti+1: xi , xi+1nt;coutSi+1 0) cout-t*(x - xi+1)3;

33、else cout-t*(x - xi+1 0) cout + t*(x - xi)3; else cout - t*(x - xi)3; cout 0) cout- t*(x - xi+1); else cout- -t*(x - xi+1 0) cout + t*(x - xi); else cout - -t*(x - xi); coutendl; coutendl;4.4 matlab程序代碼x1=0:0.01:1;y1=0.06*(x1 - 1).3 + 0.42*(x1 - 0).3 - 0.06*(x1 - 1) + 0.08*(x1 - 0);x2=1:0.01:2;y2=-0

34、.42*(x2 - 2).3 - 0.62*(x2 - 1).3 - 0.08*(x2 - 2) + 2.62*(x2 - 1);x3=2:0.01:3;y3=0.62*(x3 - 3).3 + 0.06*(x3 - 2).3 - 2.62*(x3 - 3) + 1.44*(x3 - 2);X=0 1 2 3;Y=0 0.5 2 1.5;plot(x1,y1,x2,y2,x3,y3,X,Y,*)gtext(S1)gtext(S2)gtext(S3)5龍貝格求積分算法生成的逼近表,并以為最終解來(lái)逼近積分逼近存在于一個(gè)特別的下三角矩陣中,第0列元素用基于個(gè)a,b子區(qū)間的連續(xù)梯形方法計(jì)算,然后利用龍

35、貝格公式計(jì)算。當(dāng)時(shí),第行的元素為當(dāng)時(shí),程序在第行結(jié)束。用龍貝格求積公式計(jì)算的值,運(yùn)行結(jié)果如圖5-1所示。圖5-15.3 程序代碼#include#include#includeusing namespace std;#define f(x) (sin(x) /列舉函數(shù)#define N 20 /區(qū)間等分?jǐn)?shù)#define MAX 10 /最大迭代次數(shù)#define a 0 /所求積分的上下限#define b 1#define epsilon 0.0001 /精度double Romberg(double aa,double bb,long int n)int i;double sum,h=(b

36、b-aa)/n;sum=0;for(i=1;in;i+)sum=sum+f(aa+i*h);sum=sum+(f(aa)+f(bb)/2;return (h*sum);void main()int i;long int n=N,m=0;double T2MAX+1;T10=Romberg(a,b,n);n=n*2;for(m=1;mMAX;m+)for(i=0;i=m;i+)T0i=T1i;T10=Romberg(a,b,n);n=n*2;for(i=1;i=m;i+)T1i=T1i-1+(T1i-1-T0i-1)/(pow(2,2*m)-1);if(T0m-1-T1m)epsilon)cou

37、tT=T1mendl;return;6 M次多項(xiàng)式曲線擬合設(shè)有N個(gè)點(diǎn),橫坐標(biāo)是確定的。最小二乘拋物線的系數(shù)表示為(6-1)求解A,B和C的線性方程組為 根據(jù)4個(gè)點(diǎn)(-3,3),(0,1),(2,1)和(4,3),求解最小二乘拋物線。(課本211頁(yè)例5.6)求解結(jié)果如圖6-1所示。圖6-1#include#include#define MAX 20using namespace std;int main()int n,m,i,j,k;void inv(double XMAXMAX,int n,double EMAXMAX);double XMAX=0,YMAX=0,ZMAXMAX=0,BMAX=

38、0,CMAX=0;double AMAXMAX=0,BZMAXMAX=0,EMAXMAX=0;coutn;coutendl;cout請(qǐng)輸入n個(gè)點(diǎn)的X坐標(biāo)序列:;for(i=0;iXi;coutendl;cout請(qǐng)輸入n個(gè)點(diǎn)的Y坐標(biāo)序列:;for(i=0;iYi;coutendl;coutm;for(i=0;in;i+)for(k=1;k=m+1;k+)Zik-1=pow(Xi,k-1);/求Z的轉(zhuǎn)置for(i=0;in;i+)for(j=0;jm+1;j+)BZji=Zij; /計(jì)算其轉(zhuǎn)置的BF與Z的乘 for(i=0;im+1;i+)for(j=0;jm+1;j+)for(k=0;kn;k+

39、)Aij+=BZik*Zkj;/計(jì)算Z的轉(zhuǎn)置BZ與Y的乘for(i=0;im+1;i+)for(j=0;jn;j+)Bi+=BZij*Yj;/調(diào)用inv函數(shù)求解矩陣A的逆矩陣Einv(A,n,E);/計(jì)算A的逆BZ與B的乘for(i=0;im+1;i+)for(j=0;jn;j+)Ci+=Eij*Bj;coutendl;cout擬合后的m次多項(xiàng)式系數(shù)為,冪次由高到低:=0;i-)coutCit;coutendl;cout擬合后的m次多項(xiàng)式為:endl;cout=0;i-)if(i=0)cout+Ci;elsecout+Ci*xi;coutendl;return 0;void inv(doubl

40、e XMAXMAX,int n,double EMAXMAX)/求解任意可逆矩陣的逆,X為待求解矩陣,E為全零矩陣,非單位矩陣,也可以是單位矩陣int i,j,k;double temp=0;for(i=0;iMAX;i+)for(j=0;jMAX;j+)if(i=j)Eij=1;for(i=0;in-1;i+)temp=Xii;for(j=0;jn;j+)Xij=Xij/temp;Eij=Eij/temp;for(k=0;kn;k+)if(k=i)continue;temp=-Xii*Xki;for(j=0;jn;j+)Xkj=Xkj+temp*Xij;Ekj=Ekj+temp*Eij;7拉

41、格朗日插值解多項(xiàng)式給定函數(shù)四個(gè)點(diǎn)坐標(biāo)(1.1,3.887),(2.3,4.276),(3.9,4.651),(5.1,2.117),試用拉格朗日插值確定函數(shù)在x=2.101處的值。求解運(yùn)行結(jié)果界面如圖7-1所示,可知函數(shù)在點(diǎn)2.101處的值為4.14569。圖7-1#include#define N 4/插值節(jié)點(diǎn)的個(gè)數(shù)using namespace std;void main()float xN,yN,a,f=0,temp;int i,j;cout輸入插值節(jié)點(diǎn)的坐標(biāo):endl;for(i=0;ixi;cinyi;couta;for(i=0;iN;i+)temp=1;for(j=0;jN;j+)

42、if(i!=j)temp=temp*(a-xj)/(xi-xj);f=f+temp*yi;cout所求值為:fendl;8二分法求解非線性方程若要求已知函數(shù)的根(x的解),則第一步先找出一個(gè)區(qū)間a,b,使得與異號(hào),因此這個(gè)區(qū)間內(nèi)一定包含著方程的根。第二步求該區(qū)間的中點(diǎn) ,并找出的值。若與正負(fù)號(hào)相同則取m,b為新的區(qū)間, 否則取a,m,重復(fù)第二和第三步至理想精確度為止。利用二分法尋找函數(shù)在區(qū)間0,2內(nèi)的的零點(diǎn)。(課本44頁(yè)例2.7)運(yùn)行結(jié)果如圖8-1所示。圖8-1#include #include double fun(double x)return x*sin(x)-1;double dich

43、otomy(double a,double b)double c=0.0;if(fun(a)0)while(true)c=(a+b)/2;if(fun(c)0)a=c;if(fabs(a-b)eps)return (a+b)/2;else if(fun(c)=0)return c;elseb=c;if(fabs(a-b)eps)return (a+b)/2;elsecout你輸入的a和b不正確endl;return -1;int main()double a=0;double b=2;double result=dichotomy(a,b);cout求解的結(jié)果是:resultendl;return 0

溫馨提示

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

評(píng)論

0/150

提交評(píng)論