




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、計算方法實驗題目:班級:學號:目錄計算方法實驗仁1實驗目的3.2實驗步驟3.2.1環(huán)境配置:3.2.2添加頭文件3.2.3主要模塊3.3代碼4.3.1主程序部分4.3.2多項式方程部分4.3.3核心算法部分8.3.4數(shù)據(jù)結(jié)構部分1.24運行結(jié)果144.1列主元高斯消去法運行結(jié)果 144.2LU三角分解法運行結(jié)果 154.3雅克比迭代法運行結(jié)果 16邊界情況調(diào)試165總結(jié)1.8輸入輸出18列主元高斯消元法1.8雅克比迭代法186參考資料181實驗目的1. 通過編程加深對列主元高斯消去法、LU三角分解法和雅克比迭代法等求解多 項式方程方法的理解2. 觀察上述三種方法的計算穩(wěn)定性和求解精度并比較各種
2、方法利弊2實驗步驟2.1環(huán)境配置:VS2013, C+控制臺程序2.2添加頭文件#i nclude "stdio.h"#i nclude "stdlib.h"#include "stdafx.h"#in clude<iostream>2.3主要模塊程序一共分成三層,最底層是數(shù)據(jù)結(jié)構部分,負責存儲數(shù)據(jù),第二層是交互 部分,即多項式方程部分,負責輸入輸出獲得數(shù)據(jù),最上層是核心的算法部分, 負責處理已獲得的數(shù)據(jù)。具體功能如下:數(shù)據(jù)結(jié)構部分數(shù)據(jù)結(jié)構部分是整個程序的最底層,負責存儲部分。因數(shù)組作為數(shù)據(jù)元素插 入和刪除操作較少,而順序
3、表空間利用率大且查看方便,故此程序選用二維 順序表保存系數(shù)。數(shù)據(jù)結(jié)構文件中寫的是有關其的所有基本操作以供其他文 件調(diào)用。多項式方程部分多項式方程部分是程序的第二層,容是有關方程組的所有函數(shù)、構建方程、 輸出方程等等,同時在此文件中獲得方程系數(shù)并儲存,同時此文件還負責顯 示菜單部分。算法部分此文件負責核心算法,處于整個程序最上層部分,負責列主元高斯消去法、LU三角分解法和雅克比迭代法的具體實現(xiàn)過程。 通過調(diào)用方程文件的函數(shù), 將獲得的數(shù)據(jù)進行處理運算,可以得到結(jié)果返回給方程主函數(shù)和輸出的第二總結(jié):主函數(shù)負責獲取方程系數(shù)并顯示,算法和方程作為后臺程序,順序表 作為存儲手段。3代碼3.1主程序部分/
4、 Solutionoflinearquations.cpp :定義控制臺應用程序的入口點。/#include "stdio.h"#i nclude "stdlib.h"#include "stdafx.h"#i nclude "sque ncelist.h"#i nclude "equati on .h"#in clude "algorithm.h"#in clude<iostream>int _tmain(int argc, _TCHAR* argv)while
5、 (Exflag)GetEquatio n(); ShowMe nu();return 0;3.2多項式方程部分方程部分頭文件#ifndef _EQUATION_H#defi ne _EQUATION_H #include "stdio.h"#i nclude "stdlib.h" #in clude "sque ncelist.h" extern int Xnumbers; extern int Fnumber; extern int Exflag;extern datacoa *A;void GetEquation(void);v
6、oid ShowMenu(void);void printfunction(datacoa *A);void printresx(datacoa *A);void Tip(void);#endif方程部分CPP文件#include "stdafx.h"#include "equation.h"#include "math.h"#include "algorithm.h"#include "stdio.h"#include "stdlib.h"#include<iostr
7、eam>#include <iomanip> using namespace std; / 全局變量 int Xnumbers = 0; int Fnumber = 0; int Exflag = 1; datacoa *A;/ 多項式函數(shù)系數(shù) / void GetEquation(void)int i, j,flag=1;float x;A = InitStruct();while (flag)cout << "方程未知量和解總個數(shù): " << endl; cin >> Xnumbers;cout << &
8、quot;方程個數(shù): " << endl;cin >> Fnumber;cout << "輸入方程系數(shù) ,輸入00結(jié)束(如輸入 2 1 5 或者2 1 5 3 4 1 00 "<< endl;cout << "00):" << endl;cin >> x;while (x != 00)for (i = 1; i <= Fnumber; i+)for (j = 1; j <= Xnumbers; j+)if (!Insert(A, x, i, j)ex
9、it(0); cin >> x;j = 1;printfunction(A);if (Xnumbers = Fnumber+1)flag = 0;elsecout << "方程可能無解 " << endl;A->m = 0;A->n = 0;/ 顯示交互 / void ShowMenu(void)int x;cout << "選擇求解方程根的方法: " << endl;cout << "1.列主元高斯消去法 " << endl;cout &
10、lt;< "2.三角分解法 " << endl;cout << "3.迭代法 " << endl;cin >> x;switch (x)case 1:ColumnGaussmethod(A);Tip(); break;case 2:LUmethod(A);Tip();break;case 3:ISODATAmethod(A);Tip();break;default:break;/ 打印輸出函數(shù) /void printfunction(datacoa *A)int i,j;cout << &
11、quot;矩陣=" << endl;for (i = 1; i <= A->m; i+)for (j = 1; j <= A->n; j+)cout <<setw(12)<< A->dataij;cout << endl;/ 打印結(jié)果 /void printresx(datacoa *A)int i;for (i = 1; i <= A->m; i+)cout << "X" << i << "=" << se
12、tw(12) << A->dataiXnumbers+1; cout << endl;/ 返回提示 /void Tip(void)int flag;cout << "輸入 000 退出 ,其余返回: " << endl; cin >> flag;if (flag = 000)Exflag = 0;3.3 核心算法部分算法部分頭文件 #ifndef _ALGORITHM_H #define _ALGORITHM_H#include "stdio.h"#include "stdlib
13、.h"#include "stdafx.h" int Judge(double x1, double x0, double e); void ColumnGaussmethod(datacoa *A); void LUmethod(datacoa *A);void ISODATAmethod(datacoa *A); #endif算法部分CPP文件#include "algorithm.h"#include "stdafx.h"#include "squencelist.h"#include "
14、equation.h"誤差判別 /#define max 100 /inline int Judge(double x1, double x0, double e) if (e = 0)return 0;if (x1 = 0)if (fabs(x0) < e)return 1;else return 0;if (x0 = 0)if (fabs(x1) < e)return 1;else return 0;if (fabs(x1 - x0) < e)return 1;else return 0;/ 列主元高斯消元法 / void ColumnGaussmethod(d
15、atacoa *A)cout << "/列主元高斯消元法 /" << endl;int i, j, i2, flagc, k, j2;float temp, res;for (i = 1; i < Fnumber; i+)flagc = i;for (i2 = i + 1; i2 <= Fnumber; i2+)if (fabs(A->datai2i)>(fabs(A->dataflagci) flagc = i2;if (flagc != i)for (k = i; k <= Xnumbers; k+)temp
16、= A->dataik;A->dataik = A->dataflagck; A->dataflagck = temp;for (i2 = i + 1; i2 <= Fnumber; i2+)temp = A->datai2i/A->dataii;for (j2 = i; j2 <= Xnumbers; j2+) A->datai2j2 = A->datai2j2 - temp*A->dataij2;for (i = Fnumber; i >= 1; i-)for (j = Fnumber; j >= i + 1;
17、j-) A->dataiXnumbers = A->dataiXnumbers A->dataij*A->datajXnumbers + 1;res = A->dataiXnumbers / A->dataii; Insert(A, res, i, Xnumbers+1);printresx(A);/ 直接三角分解法 / void LUmethod(datacoa *A)datacoa *L, *U;int i, j, k,q;float temp=0.0;L = InitStruct();U = InitStruct();for (i = 1; i <
18、;= Fnumber; i+)for (j = 1; j <= Xnumbers; j+)Insert(L, 0, i, j);Insert(U, 0, i, j);for (j = 1; j <= Xnumbers; j+)Insert(U, A->data1j, 1, j);for (i = 2; i <= Fnumber; i+)Insert(L, A->datai1 / A->data11, i, 1);for (k = 2; k <= Fnumber; k+)for (j = k; j <= Xnumbers; j+)for (q =
19、1; q < k; q+)temp = temp + L->datakq * U->dataqj;Insert(U, A->datakj - temp, k, j);temp = 0;for (i = k + 1; i <= Fnumber; i+)for (q = 1; q < k; q+)temp = temp + L->dataiq * U->dataqk;temp = A->dataik - temp;Insert(L, temp / U->datakk, i, k);temp = 0;Insert(U, U->data
20、FnumberXnumbers / U->dataFnumberXnumbers - 1, Fnumber, Xnumbers + 1);for (k = Fnumber - 1; k >= 1; k-)for (q = k + 1; q < Xnumbers; q+)temp = temp + U->datakq * U->dataqXnumbers + 1;temp = U->datakXnumbers - temp;Insert(U, temp / U->datakk, k, Xnumbers + 1); temp = 0; printresx(
21、U);/ 迭代法 /void ISODATAmethod(datacoa *A)int i=1, j, k=0;float x0 = 0, x1 = 1, temp = 0;for (i = 1; i <= Fnumber; i+)Insert(A, 0, i, Xnumbers + 1);while (1)for (i = 1; i <= Fnumber; i+)for (j = 1; j <= Fnumber; j+)if (j = i)continue;temp = temp + A->dataij * A->datajXnumbers + 1;temp =
22、 A->dataiXnumbers - temp;temp = temp / A->dataii;Insert(A, A->dataiXnumbers + 1, i, Xnumbers + 2);Insert(A, temp, i, Xnumbers + 1); temp = 0;k+;for (i = 1; i <= Fnumber; i+)temp = temp + fabs(A->dataiXnumbers + 1 - A->dataiXnumbers 2);if (temp < 0.000001) | k > max)break;temp
23、 = 0;DeleteLie(A, Xnumbers + 2);printfunction(A); cout << endl; printresx(A);cout << k << endl;3.4 數(shù)據(jù)結(jié)構部分數(shù)據(jù)結(jié)構頭文件 #ifndef _SQUENCELIST_H #define _SQUENCELIST_H#include "stdio.h"#include "stdlib.h"#include "stdafx.h" #include<iostream> using namesp
24、ace std;#define maxsize 1024*sequenlist*/ typedef float datatype;typedef structdatatype datamaxsizemaxsize; int m, n;datacoa;datacoa *InitStruct();int Length(datacoa*);int Insert(datacoa*, datatype, int ,int); void DeleteLie(datacoa*L, int j); void DeleteLine(datacoa*L, int i);#endif數(shù)據(jù)結(jié)構CPP文件#includ
25、e "stdafx.h"#include "squencelist.h"據(jù)結(jié)構部分/數(shù)/sequenlist/ datacoa *InitStruct()datacoa*L = (datacoa*)malloc(sizeof(datacoa);L->m = 0;L->n = 0;return L;/ datacoa*L = new datacoa;int Length(datacoa*L)return L->m*L->n;int Insert(datacoa*L, datatype x, int i,int j)int k;if
26、(L->m >= maxsize - 1) | (L->n >= maxsize - 1)cout << "表已滿 " << endl;return 0;for (k = L->n; k >= j; k-)L->dataik + 1 = L->dataik;L->dataij = x;if (i > L->m)L->m+;if (j > L->n)L->n+;return 1;void DeleteLie(datacoa*L,int j)int k,i;if (
27、j<1) | (j>L->n)cout << "非法刪除位置 " << endl;for (i = 1; i <= L->m; i+)for (k = j; k <= L->n; k+)L->dataij = L->dataij + 1; L->n-; void DeleteL in e(datacoa*L, int i)int k,j;if (i<1) II (i>L->m)cout << "非法刪除位置"<< endl;for (j = 1; j <= L->n; j+)for (k = i; k <= L->m; k+) L->dataij = L->datai+1j;L->m-;4運行結(jié)果4.1列主元高斯消去法運行結(jié)果5H匸:vi nd owssyste m32c md .e<e諭入方程系數(shù)輸入。醛束(如輸入2 1 S3 4 1或者Z 15 3 4L7?:L.93 :
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 海南省昌江民族中學人教版新課標八年級地理上冊第二章第二節(jié)氣候教學設計
- 機場跑道維護與使用管理規(guī)范
- 實施城市防洪堤壩布局科學規(guī)劃
- 2024年投資咨詢工程師前沿技術試題及答案
- 專業(yè)展覽服務企業(yè)展位設計與展示技術應用
- 2024秋七年級英語上冊 Unit 2 This is my sister Period 4 Section B (2a-Self Check)教學實錄(新版)人教新目標版
- 辨認方向-東南、西南、東北、西北(教學設計)-2024-2025學年三年級上冊數(shù)學西師大版
- 2024年第四季度光伏組件運輸防靜電包裝驗收標準合同
- 2024銀行從業(yè)資格考試基礎鞏固試題及答案
- 高爾夫球運動技術指南
- 先兆流產(chǎn)課件-課件
- 2022年北京市公務員錄用考試《行測》真題及答案解析
- DB11T 1028-2021 民用建筑節(jié)能門窗工程技術標準
- 院前急救課件教學課件
- 刑事案件會見筆錄(偵查階段)
- 2023年四川綿陽中考滿分作文《照亮》
- 麥肯錫和波士頓解決問題方法和創(chuàng)造價值技巧
- 慢性肺源性心臟病的護理(內(nèi)科護理學第七版)
- 二 《“友邦驚詫”論》(同步練習)解析版
- 2023年婚檢培訓試題
- 病例匯報課件(完整版)
評論
0/150
提交評論