版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、計算方法實驗班級:學(xué)號:姓名:計算方法與實習(xí)實驗報告目錄 TOC o 1-5 h z HYPERLINK l bookmark0 o Current Document 計算方法實驗1. HYPERLINK l bookmark4 o Current Document 1實驗?zāi)康?. HYPERLINK l bookmark6 o Current Document 2實驗步驟3. HYPERLINK l bookmark8 o Current Document 環(huán)境配置:3. HYPERLINK l bookmark10 o Current Document 添加頭文件3. HYPERLINK
2、l bookmark12 o Current Document 主要模塊3. HYPERLINK l bookmark14 o Current Document 3代碼4. HYPERLINK l bookmark16 o Current Document 主程序部分4.多項式方程部分4.核心算法部分8.數(shù)據(jù)結(jié)構(gòu)部分1.3 HYPERLINK l bookmark37 o Current Document 4運行結(jié)果19 HYPERLINK l bookmark39 o Current Document 拉格朗日插值法運行結(jié)果 1.9 HYPERLINK l bookmark41 o Curr
3、ent Document 牛頓插值法運行結(jié)果 20 HYPERLINK l bookmark43 o Current Document 多項式擬合運行結(jié)果20 HYPERLINK l bookmark45 o Current Document 5總結(jié)21. HYPERLINK l bookmark47 o Current Document 日插值法21 HYPERLINK l bookmark49 o Current Document 值法2.1 HYPERLINK l bookmark51 o Current Document 擬合21 HYPERLINK l bookmark53 o Cu
4、rrent Document 6參考資料22計算方法與實習(xí)實驗報告1實驗?zāi)康?通過編程對拉格朗日插值法、牛頓插值法以及多項式擬合數(shù)據(jù)的理解.觀察上述方法的計算穩(wěn)定性和求解精度并比較各種方法利弊2實驗步驟環(huán)境配置:VS2013, C+控制臺程序添加頭文件#include stdio.h#include stdlib.h#include stdafx.h主要模塊程序一共分成三層,最底層是數(shù)據(jù)結(jié)構(gòu)部分,負(fù)責(zé)存儲數(shù)據(jù),第二層是交互 部分,即多項式方程部分,負(fù)責(zé)輸入輸出獲得數(shù)據(jù),最上層是核心的算法部分, 負(fù)責(zé)處理已獲得的數(shù)據(jù)。具體功能如下:數(shù)據(jù)結(jié)構(gòu)部分?jǐn)?shù)據(jù)結(jié)構(gòu)部分是整個程序的最底層,負(fù)責(zé)存儲部分。因方程
5、系數(shù)作為數(shù)據(jù)元 素插入和刪除操作較少,而順序表空間利用率大且查看方便,故此程序選用 順序表保存系數(shù)。數(shù)據(jù)結(jié)構(gòu)文件中寫的是有關(guān)順序表的所有基本操作以供其 他文件調(diào)用。本次實驗使用列主元高斯消元法作為求解方程組的方法,所以 也用了二維順序表存儲數(shù)組。綜上,數(shù)據(jù)結(jié)構(gòu)部分文件是前兩個試驗的文件 內(nèi)容和,稍作修改。常系數(shù)微分方程部分多項式方程部分是程序的第二層,內(nèi)容主要是常系數(shù)微分方程導(dǎo)數(shù)的計算和 顯示菜單部分。算法部分算法部分分為兩個文件,一個是插值部分,一個是擬合部分。插值部分文件負(fù)責(zé)有關(guān)插值的核心算法,處于整個程序最上層部分,負(fù)責(zé)拉 格朗日插值法和牛頓插值法的具體實現(xiàn)過程。調(diào)用方程文件的函數(shù),將獲
6、得 的數(shù)據(jù)進行處理運算,將結(jié)果返回給方程主函數(shù)和輸出的第二層。每種方法 有兩個函數(shù),一個為僅僅實現(xiàn)一次插值的算法,另一個是和方程部分聯(lián)系的計算方法與實習(xí)實驗報告函數(shù),負(fù)責(zé)交互中想實現(xiàn)的整體的算法。擬合部分文件主要負(fù)責(zé)多項式擬合的算法實現(xiàn),因為要用到列主元高斯消去 法所以也將此部分算法移入其中。主函數(shù)負(fù)責(zé)獲取方程系數(shù)并顯示,算法和方程作為后臺程序,順序表作為存儲手 段。3代碼主程序部分/ Interpolationandfitting.cpp :定義控制臺應(yīng)用程序的入口點。/#include stdafx.h#includeequation.h#include stdafx.hint _tmai
7、n(intargc, _TCHAR* argv口)一一GetEquation();while (Exflag)ShowMenu();return 0;多項式方程部分方程部分頭文件#ifndef _EQUATION_H#define _EQUATION_H#include squencelist.h#include stdio.h#include stdlib.hextern intNumberx;計算方法與實習(xí)實驗報告extern intExflag;extern sequenlist *B;extern sequenlist *D;extern sequenlist *L;void GetE
8、quation(void);void ShowMenu(void);void printres(sequenlist *A);void printfunction2(datacoa *A);void printfunctionf(datacoa *A); void Tip(void);#endif方程部分CP淺件#include stdafx.h#include equation.h#include math.h#include alfitting.h#include alinterpolation.h#include squencelist.h#include stdio.h#include
9、#include /全局變量intNumberx=0;intExflag = 1;sequenlist *B;sequenlist *D;sequenlist *L;/獲得給定數(shù)據(jù) /void GetEquation(void)(int j = 0;datatype x = 0;B = InitList();D = InitList();cout 輸入給定數(shù)據(jù)的個數(shù):Numberx;計算方法與實習(xí)實驗報告cout “從小到大輸入x,輸入00結(jié)束(如y=xA2+2x+1輸入1 2 1 00): x;while (x != 00)(for (j = 1; j x;)cin.clear();cout
10、 輸入 f(x),輸入 00 結(jié)束(如 y=xA2+2x+1 輸入 1 2 1 00) : x;while (x != 00)(for (j = 1; j x;)printres(B);printres(D);)/顯示交互 /void ShowMenu(void)(int c1, c2;cout 選擇插值白方法:endl;cout 1.拉格朗日插值法endl;cout 2.牛頓插值法endl;cout 3.直接擬合endl;cout 0.退出 c1;switch (c1)(case 0:Tip();break;Langmethod();break;Newtonmethod();6計算方法與實習(xí)
11、實驗報告break;break;default:break;)cout 選擇擬合方式:endl;cout 1多項式擬合endl;cout 2.返回插值endl;cout 0.退出 c2;switch (c2)case 0:Tip();break;Fpolynomial();Tip();break;break;default:break;)/打印結(jié)果 /void printres(sequenlist *A)inti;for (i = 1; ilast; i+) coutsetw(12) datai;) coutendl;)/打印輸出矩陣 /void printfunction2(datacoa
12、 *A)inti, j;cout 矩陣=endl;for (i = 1; im; i+)計算方法與實習(xí)實驗報告(for (j = 1; j n; j+)(coutsetw(12) dataij;) coutendl;)/ 打印輸出函數(shù) /void printfunctionf(datacoa *A) (inti = 1;cout f=;coutdataiA-n;for (i = 2; im; i+)(if (A-dataiA-n 0)coutdataiA-n * xA i - 1;else cout + dataiA-n * xA i - 1; ) coutendl;)/返回提示 /void
13、Tip(void) (int flag;cout 輸入000退出,其余返回: flag;if (flag = 000)Exflag = 0;)3.3核心算法部分插值部分頭文件#ifndef _ALINTERPOLATION_H#define _ALINTERPOLATION_H#include stdio.h#include stdlib.hvoid Langmethod(void);datatype Langarange(sequenlist *X, sequenlist *F, datatype x);8計算方法與實習(xí)實驗報告datatype Newtoninterpolation(seq
14、uenlist *X, sequenlist *F, datatype x); void Newtonmethod(void);#endif插值部分CP淺件#include alinterpolation.h#include stdafx.h#include squencelist.h#include equation.h#include math.h/ 拉格朗日插值 /datatype Langarange(sequenlist *X, sequenlist *F, datatype x) inti, j;datatype temp = 0;L = InitList();for (i = 1
15、; idatai, i);for (j = 1; j datai = L-datai * (x - X-dataj) / (X-datai - X-dataj); temp = temp + L-datai;return temp;void Langmethod(void)inti;datatype x, f;cout 請輸入插值點: x;f = Langarange(B, D, x);i = Findi(B, x);Insert(B, x, i);Insert(D, f, i);計算方法與實習(xí)實驗報告printres(B);printres(D);)/牛頓多項式插值 /datatype Ne
16、wtoninterpolation(sequenlist *X, sequenlist *F, datatype x) (inti, j, k;datacoa *FX;datatype temp1 = 0, temp2 = 0, Nn = 0;double temp = 1;FX = InitStruct();for (i = 1; idatai, i, 1);InsertA2(FX, F-datai, i, 2);)for (j = 3; j = Numberx + 1; j+)(for (i = 1; idatai + 1j - 1 - FX-dataij - 1;temp2 = FX-d
17、atai + j - 21 - FX-datai1;InsertA2(FX, temp1 / temp2, i, j);)Nn = FX-data12;for (j = 3; j = Numberx + 1; j+)(for (k = 1; k datak1);Nn = Nn + temp*FX-data1j;temp = 1;)return Nn;)void Newtonmethod(void)(inti;datatype x, f;cout 請輸入插值點: x;f = Newtoninterpolation(B, D, x);i = Findi(B, x);Insert(B, x, i);
18、10計算方法與實習(xí)實驗報告Insert(D, f, i); printres(B); printres(D);擬合部分頭文件#ifndef _ALFITTING_H#define _ALFITTING_H#include stdio.h#include stdlib.hvoid ColumnGaussmethod(datacoa *A, intXnumbers);void Fpolynomial(void);#endif擬合部分CP淺件#include alfitting.h#include stdafx.h#include squencelist.h#include equation.h#i
19、nclude math.h/列主元高斯消元法 /void ColumnGaussmethod(datacoa *A, intXnumbers) inti, j, i2, flagc, k, j2;intFnumber = Xnumbers - 1;datatype temp, res;for (i = 1; iFnumber; i+) flagc = i;for (i2 = i + 1; i2 datai2i)(fabs(A-dataflagci)flagc = i2;if (flagc != i)for (k = i; k dataik;A-dataik = A-dataflagck;A-d
20、ataflagck = temp;11計算方法與實習(xí)實驗報告for (i2 = i + 1; i2 datai2i / A-dataii;for (j2 = i; j2 datai2j2 = A-datai2j2 - temp*A-dataij2;for (i = Fnumber; i= 1; i-)(for (j = Fnumber; j = i + 1; j-)A-dataiXnumbers = A-dataiXnumbers - A-dataij * A-datajXnumbers + 1;res = A-dataiXnumbers / A-dataii;InsertA2(A, res,
21、 i, Xnumbers + 1);/ 多項式擬合 /void Fpolynomial(void)(intXnumbers;inti, j, k;datatype s = 0, t = 0;datacoa *A;A = InitStruct();cout 請輸入擬合次數(shù):Xnumbers;for (i = 1; i= Xnumbers + 1; i+)(for (j = 1; j = Xnumbers + 1; j+)(for (k = 1; k last; k+)s = s + pow(B-datak, j + i - 2);InsertA2(A, s, i, j);s = 0;for (k
22、 = 1; k last; k+)t = t + pow(B-datak, i - 1)*D-datak;InsertA2(A, t, i, Xnumbers + 2);t = 0;ColumnGaussmethod(A, A-n);12計算方法與實習(xí)實驗報告printfunctionf(A);)3.4數(shù)據(jù)結(jié)構(gòu)部分?jǐn)?shù)據(jù)結(jié)構(gòu)頭文件#ifndef _SQUENCELIST_H#define _SQUENCELIST_H#include stdio.h#include stdlib.h#include stdafx.h#include using namespace std;#define maxs
23、ize 1024 /*sequenlist*/typedef double datatype;typedef structdatatype datamaxsizemaxsize;int m, n;datacoa;typedef structdatatype datamaxsize;int last;sequenlist;sequenlist *InitList();int Length(sequenlist*);int Insert(sequenlist*, datatype, int);int Delete(sequenlist*, int);int Locate(sequenlist*,
24、datatype);void del_node(sequenlist*, datatype);void PrintList(sequenlist*);int Compare_L(sequenlist*, sequenlist*);int Findi(sequenlist*L, datatype x);13計算方法與實習(xí)實驗報告void Invert(sequenlist*);datacoa *InitStruct();int InsertA2(datacoa*, datatype, int, int);void DeleteLie(datacoa*L, int j);void DeleteLi
25、ne(datacoa*L, int i);/*linklist*/typedef char linkdatatype;typedef struct node linkdatatype data;struct node*next;linklist;linklist* CreateListF();#endif數(shù)據(jù)結(jié)構(gòu)CP淺件#include stdafx.h#include squencelist.h/數(shù) 據(jù) 結(jié) 構(gòu) 部 分/sequenlist/sequenlist *InitList() sequenlist*L = (sequenlist*)malloc(sizeof(sequenlist)
26、;L-last = 0;return L;/ sequenlist*L = new sequenlist;int Length(sequenlist*L) return L-last;intInsert(sequenlist*L, datatype x, inti)int j;if (L-last = maxsize - 1)14計算方法與實習(xí)實驗報告(cout 表已滿last; j = i; j-)L-dataj + 1 = L-dataj;L-datai = x;L-last+;return 1;)intDelete(sequenlist*L, inti)(int j;if (iL-las
27、t)(cout 非法刪除位置endl;return 0;)for (j = i; j last; j+)L-dataj = L-dataj + 1;L-last-;return 1;)intLocate(sequenlist*L, datatype x)(inti = 1;while (ilast)(if (L-datai != x)i+;else return i;)return 0;)/*順序表中刪除所有元素為x的結(jié)點*/ void del_node(sequenlist*L, datatype x) (.inti = Locate(L, x); while (i != 0)15計算方法與
28、實習(xí)實驗報告(if (!Delete(L, i)break;i = Locate(L, x);)void PrintList(sequenlist*L)(inti = 1;for (i = 1; ilast; i+) coutdatai ;coutlast;m = B-last;while (j = n) & (j dataj = B-dataj)i = 0;if (A-dataj dataj)(i = -1;break;)if (A-dataj B-dataj)(i = 1;break;) j+;)if (i != 0)return i;else(if (m n)i = 1;if (n m)
29、i = -1;if (m = n)i = 0;return i;16計算方法與實習(xí)實驗報告)int Findi(sequenlist*L,datatype x)(inti;for (i = 1; ilast; i+) if (L-dataix)break;return i;)void Invert(sequenlist*L)(inti;datatype temp;for (i = 1; ilast / 2; i+)(temp = L-datai;L-datai = L-dataL-last + 1 - i;L-dataL-last + 1 - i = temp;)/ARRAY/datacoa
30、*InitStruct()(datacoa*L = (datacoa*)malloc(sizeof(datacoa);L-m = 0;L-n = 0;return L;/ datacoa*L = new datacoa;)int InsertA2(datacoa*L, datatype x, inti, int j)(int k;if (L-m = maxsize - 1) | (L-n = maxsize - 1)(cout 表已滿n; k = j; k-)L-dataik + 1 = L-dataik;L-dataij = x;if (i L-m)L-m+;if (j L-n)L-n+;r
31、eturn 1;)void DeleteLie(datacoa*L, int j)int k, i;if (jL-n)cout 非法刪除位置endl;)for (i = 1; im; i+)for (k = j; k n; k+) L-dataij = L-dataij + 1;)L-n-;)void DeleteLine(datacoa*L, inti)int k, j;if(iL-m)cout 非法刪除位置endl;)for (j = 1; j n; j+)for (k = i; k m; k+) L-dataij = L-datai + 1j;)L-m-;)/linklist/ linklist* CreateListF()18計算方法與實習(xí)實驗報告linklist *head, *p;char ch;head = (linklist*)malloc(sizeof(linklist);head-next = NULL;cinch;while (ch != n)p = (linklist*)malloc(sizeof(linklist);p-data = ch;p-next = head-
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度學(xué)校教師學(xué)生國際交流與合作聘用合同3篇
- 二零二五年度信息技術(shù)產(chǎn)品軟件售后服務(wù)合同書模板2篇
- 2025年度個人法律咨詢委托書范本4篇
- 二零二五年度廚房電氣設(shè)備安裝與維護承包協(xié)議4篇
- 2025版實習(xí)合同模板:實習(xí)期間解約與補償3篇
- 二零二五版舊機動車交易車輛售后配件供應(yīng)合同3篇
- 2025版實習(xí)期員工勞動合同-實習(xí)期間合同解除與續(xù)簽3篇
- 二零二五年度商業(yè)寫字樓租賃合同樣本
- 二零二五年度外語翻譯公司兼職外教資源合作與管理合同
- 2025版投資框架協(xié)議模板下載與投資法律法規(guī)咨詢3篇
- 反騷擾政策程序
- 運動技能學(xué)習(xí)與控制課件第十一章運動技能的練習(xí)
- 射頻在疼痛治療中的應(yīng)用
- 四年級數(shù)學(xué)豎式計算100道文檔
- “新零售”模式下生鮮電商的營銷策略研究-以盒馬鮮生為例
- 項痹病辨證施護
- 職業(yè)安全健康工作總結(jié)(2篇)
- 懷化市數(shù)字經(jīng)濟產(chǎn)業(yè)發(fā)展概況及未來投資可行性研究報告
- 07FD02 防空地下室電氣設(shè)備安裝
- 教師高中化學(xué)大單元教學(xué)培訓(xùn)心得體會
- 彈簧分離問題經(jīng)典題目
評論
0/150
提交評論