




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、數(shù)值分析大作業(yè)(高斯列主元消去法求解線性方程組)課程名稱:數(shù)值分析授課老師:宋國(guó)鄉(xiāng)指導(dǎo)導(dǎo)師:丁振國(guó)學(xué) 生:王偉偉學(xué) 號(hào):0425121523日 期:2004/11/20高斯列主元消去法解線性方程組一:?jiǎn)栴}的提出 我們都知道,高斯列主元素消去法是計(jì)算機(jī)上常用來求解線性方程組的一種直接的方法。就是在不考慮舍入誤差的情況下,經(jīng)過有限步的四則運(yùn)算可以得到線性方程組的準(zhǔn)確解的一類方法。實(shí)際運(yùn)算的時(shí)候因?yàn)橹荒苡邢扌?shù)去計(jì)算,因此只能得到近似值。在實(shí)際運(yùn)算的時(shí)候,我們很多時(shí)候也常用高斯消去法。但是高斯消去法在計(jì)算機(jī)中運(yùn)算的時(shí)候常會(huì)碰到兩個(gè)問題。1 一旦遇到某個(gè)主元等于0,消元過程便無法進(jìn)行下去。2在長(zhǎng)期使用
2、中還發(fā)現(xiàn),即使消元過程能進(jìn)行下去,但是當(dāng)某個(gè)主元的絕對(duì)值很小時(shí),求解出的結(jié)果與真實(shí)結(jié)果相差甚遠(yuǎn)。為了避免高斯消去法消元過程中出現(xiàn)的上述兩個(gè)問題,一般采用所謂的選擇主元法。其中又可以分為列選主元和全面選主元兩種方法。目前計(jì)算機(jī)上常用的按列選主元的方法。因此我在這里做的也是列選主元高斯消去法。二、算法的基本思想大家知道,如果一個(gè)線性方程組的系數(shù)矩陣是上三角矩陣時(shí),即這種方程組我們稱之為上三角方程組,它是很容易求解的。我們只要把方程組的最下面的一個(gè)方程求解出來,在把求得的解帶入倒數(shù)第二個(gè)方程,求出第二個(gè)解,依次往上回代求解。然而,現(xiàn)實(shí)中大多數(shù)線性方程組都不是上面所說的上三角方程組,所以我們有可以把不
3、是上三角的方程通過一定的算法化成上三角方程組,由此我們可以很方便地求出方程組的解。高斯消元法的目的就是把一般線性方程組簡(jiǎn)化成上三角方程組。于是高斯消元法的基本思想是:通過逐次消元將所給的線性方程組化為上三角形方程組,繼而通過回代過程求解線性方程組。三、算法的描述1、設(shè)有n元線性方程組如下:2、第一步:如果a11!=0, 令li1= ai1/a11, I= 2,3,n用(-li1)乘第一個(gè)方程加到第i個(gè)方程上,得同解方程組:a(1)11 a(1)12 . . . a(1)1n x1 b(1)1a(1)21 a(1)22 . . . a(1)2n x2 b(1)2 . . . . . . . =
4、.a(1)n-11 a(1)n-12 . . a(1)n-1n xn-1 b(1)n-1a(1)n1 a(1)n2 . . . a(1)nn xn b(1)n簡(jiǎn)記為: A(2) x = b(2)其中 a(2)ij = a(1)ij li1 * a(1)1j , I ,j = 2,3,.,n b(2)I = b(1)I li1 * b(1)1 , I = 2,3,.,n第二步:如果a(2)22 != 0,令li2= a(2)i2/a(2)22, I= 3,n依據(jù)同樣的原理,對(duì)矩陣進(jìn)行化間(省略),依次下去,直到完成!最后,得到上三角方程組: a(1)11 a(1)12 . . . a(1)1n
5、x1 b(1)10 a(1)22 . . . a(1)2n x2 b(1)2 . . . . . . . = .0 0 . . a(n-1)n-1n xn-1 b(n-1)n-10 0 . . . a(n)nn xn b(n)n簡(jiǎn)記為: A(n) x = b(n)最后從方程組的最后一個(gè)方程進(jìn)行回代求解為: Xn = b(n) / a(n)nn Xi = ( b(k)k - a(k)kjxj ) / a(k)kk以上為高斯消去法的基本過程。但是如前面我們所提到的,存在的問題。1.一旦遇到某個(gè)主元等于0,消元過程便無法進(jìn)行下去。2在長(zhǎng)期使用中還發(fā)現(xiàn),即使消元過程能進(jìn)行下去,但是當(dāng)某個(gè)主元的絕對(duì)值很
6、小時(shí),求解出的結(jié)果與真實(shí)結(jié)果相差甚遠(yuǎn)。為了避免高斯消去法消元過程中出現(xiàn)的上述兩個(gè)問題,一般采用所謂的選擇主元法。其中又可以分為列選主元和全面選主元兩種方法。目前計(jì)算機(jī)上常用的按列選主元的方法。因此我在這里做的也是列選主元高斯消去法。他的特點(diǎn)是:每次在系數(shù)矩陣中依次按列在主對(duì)角線及以下的元素中,選取絕對(duì)值最大的元素作為主元,將她調(diào)到主對(duì)角線上,然后用它消去主對(duì)角線以下的元素,最后化為同解的上三角形方程組去求解。由于列主元法相對(duì)高斯消元法來說就增加了選主元操作,其他的求解步驟是一樣的。四、程序流程圖 五、程序描述程序的名稱為:zealous.cpp1. 程序的結(jié)構(gòu)如下:程序只能最大輸入60行60列
7、的系數(shù)矩陣。2.程序要用到的函數(shù)(1、)matrix_getElement(array,n,m);此函數(shù)的作用是獲得用戶輸入的線性方程組的系數(shù)矩陣。(2、)matrix_outputElement(array,n,m);此函數(shù)的作用是顯示用戶輸入的矩陣。(3、)selectMaxElement(array,n,m,row );此函數(shù)的作用是選擇主元素,并把此時(shí)對(duì)角線上的那列元素與主元素行交換。(4、)GAUSSProcess(array, n, m, row);此函數(shù)的作用是用主元素列進(jìn)行高斯消元,把此行以后所有的行的,此列的元素變?yōu)?。(5、)GAUSSProcess_result(arra
8、y, n,m);此函數(shù)的作用是顯示經(jīng)過高斯消元后的矩陣,此時(shí)的系數(shù)矩陣為一個(gè)上下三角矩陣。(6、)GAUSSCalculate_result(array, n, m);此函數(shù)的作用是對(duì)已經(jīng)消元好的矩陣,進(jìn)行回代求解。并將結(jié)果輸出。六、程序代碼/-*高斯列消去法*#include<stdio.h>#include<math.h>#include<iostream.h>#include <iomanip.h>const int N=60;/最大const int M=61;/60列,再加上等號(hào)右邊的一列值/-輸入要計(jì)算方程組的矩陣-void matr
9、ix_getElement(double ARRAYNM,int n, int m) for(int i=0;i<n;i+)cout<<"請(qǐng)您輸入第"<<"t"<<(i+1)<<"t"<<"row:"<<endl;for(int j=0;j<m;j+)cin>>ARRAYij;return;/-/-輸出用戶剛才用戶輸入的矩陣,以便用戶檢測(cè)是否輸入正確void matrix_outputElement(double ARR
10、AYNM, int n, int m)cout<<"your have input the matrix as fllows:n"for(int i=0; i<n;i+)for(int j=0;j<m;j+)cout<<ARRAYij<< "t"<< "t"cout<<endl<<endl;/-/-選擇主元素,并把主元行與對(duì)角線上的那一行交換void selectMaxElement(double ARRAYNM,int n, int m, int l
11、ine )double max=0;double t=0;int j=0;int i=line;max=ARRAYlineline;for(i=line+1;i<n;i+)if( fabs(ARRAYiline) > fabs(max) )max=ARRAYiline;j=i;if(j>line)for(i=0;i<m;i+)t=ARRAYji;ARRAYji=ARRAYlinei;ARRAYlinei=t;/-/-用對(duì)角線上的元素消去后續(xù)行中此列的元素void GAUSSProcess(double ARRAYNM, int n, int m, int row) do
12、uble ROW1M; for(int t=0;t<(m-row);t+) ROW1t=ARRAYrowrow+t; for(int j=(row+1); j < n; j+) double ROW_CHANGEM; for(int r=0;r<(m-row);r+) double mainElement=ROW10; if( fabs(mainElement) < 1e-7) cout << "Single! press any key return.n" getchar(); return; ROW_CHANGEr=ROW1r*ARR
13、AYjrow/ROW10; for(int h=0; h<(m-row); h+) ARRAYjh+row = ARRAYjh+row-ROW_CHANGEh; /-/-用回代的方法求出線性方程組的解-void GAUSSCalculate_result(double ARRAYNM, int n, int m)double aN;an-1=ARRAYn-1m-1/ARRAYn-1n-1;for(int p=n-2; p>=0; p-)for(int q=n-1; q>p; q-)ARRAYpm-1=ARRAYpm-1 - ARRAYpq*aq;ap = ARRAYqm-1/
14、ARRAYpp;cout<<"-the final result as follows-:n"for(int e=0; e<n; e+)cout<< "x"<< e+1 << "=" << ae << endl;/-輸出經(jīng)過高斯消去法處理后得到的矩陣-void GAUSSProcess_result(double ARRAYNM, int n, int m)cout<<"您輸入的矩陣經(jīng)過高斯消去法處理后得到如下形式:n"for
15、(int i=0; i<n;i+)for(int j=0;j<m;j+)cout<<ARRAYij<<"t"<<"t"cout<<endl<<endl;/-/-main函數(shù)-void main() double arrayNM; cout<<"請(qǐng)輸入您要運(yùn)算的矩陣的大??!n" int n=0, m=0; cout<<"請(qǐng)輸入您要運(yùn)算的矩陣的行數(shù):" cin>>n; cout<<"請(qǐng)輸入您
16、要運(yùn)算的矩陣的列數(shù):" cin>>m; cout<<"您所輸入的行為:"<<n<<" "<<"您所輸入的列為:"<<m<<endl; matrix_getElement(array,n,m); /獲得矩陣的元素 matrix_outputElement(array,n,m); /顯示輸入的矩陣 for(int row=0; row<n; row+) /高斯消元法的主體 selectMaxElement(array,n,m,row ); GAUSSProcess(array, n, m, row); GAUSSProcess_result(array, n,m); /顯示消元后的矩陣 GAUSSCalculate_result(array,n,m); /回代求解并顯示解結(jié)果 cout << "This is the end!"/-七、實(shí)例本程序可以自己選擇在60個(gè)未知數(shù)的方程組,可以自己選擇線性方程組的行數(shù)和列數(shù)。例子如下:2x1x2 5x3x48;x1 3x2 6x49;2x2x3 2x45;x1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 連鎖便利店企業(yè)ESG實(shí)踐與創(chuàng)新戰(zhàn)略研究報(bào)告
- 水彩畫紙批發(fā)企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級(jí)戰(zhàn)略研究報(bào)告
- 臨時(shí)培訓(xùn)講師合同
- 二零二五年度互聯(lián)網(wǎng)公司試用期員工勞動(dòng)合同規(guī)范
- 2025年度高標(biāo)準(zhǔn)環(huán)保廠房建造委托合同范本
- 二零二五年度解除股權(quán)質(zhì)押擔(dān)保合同
- 2025年度金融衍生品投資協(xié)議合同
- 二零二五年度房屋租賃押金退還及租金減免合同
- 二零二五年度按揭房屋借款合同貸款用途規(guī)范合同
- 二零二五年度股東權(quán)益保障與公司社會(huì)責(zé)任履行協(xié)議
- 日常采購(gòu)維修合同范本
- 企業(yè)員工職務(wù)犯罪預(yù)防
- (2025春新教材)部編版七年級(jí)語文下冊(cè)全冊(cè)教案
- 5《水污染》教學(xué)設(shè)計(jì)-2023-2024學(xué)年科學(xué)六年級(jí)下冊(cè)冀人版
- 2024 河北公務(wù)員考試(筆試、省直、A類、C類)4套真題及答案
- 統(tǒng)編版歷史 選擇性必修二第12課 《水陸交通的變遷》課件(共27張)
- 幼兒園開學(xué)教職工安全教育培訓(xùn)
- 小學(xué)生雙擁活動(dòng)國(guó)防教育
- 《得勝的基督新婦》課件
- 煙囪拆除工程施工方案設(shè)計(jì)及安全措施
- 2024年執(zhí)業(yè)藥師繼續(xù)教育專業(yè)答案
評(píng)論
0/150
提交評(píng)論