資源描述:
《高斯列主消元數(shù)值分析實(shí)驗(yàn)報(bào)告》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫(kù)。
1、數(shù)值分析實(shí)驗(yàn)報(bào)告之高斯列主消元法一、實(shí)驗(yàn)?zāi)康模呵宄咚沽兄髟シㄅc高斯主元素消去法的區(qū)別,以及它提出的必要性;掌握高斯列主元消去法的原理及推導(dǎo)過程,會(huì)用其解簡(jiǎn)單的線性方程組。二、實(shí)驗(yàn)內(nèi)容:用高斯列主元消去法解方程組=三、實(shí)驗(yàn)原理:在采用高斯消去法解方程組時(shí),小主元可能產(chǎn)生麻煩,即用其做除數(shù),會(huì)導(dǎo)致其他元素?cái)?shù)量級(jí)的嚴(yán)重增長(zhǎng)和舍入誤差的擴(kuò)散,最終使得計(jì)算的解不可靠。故應(yīng)避免采用絕對(duì)值小的主元素。在消元之前,選擇一個(gè)絕對(duì)值最大的元素作為主元,用其做除數(shù)來進(jìn)行消元,這樣就具有較好的數(shù)值穩(wěn)定性。這就是選主元消去法。下面詳細(xì)
2、說明列主元素消去法。第一步:在Ax=b即的系數(shù)矩陣的第一列元素中選擇一個(gè)絕對(duì)值最大的元素,不妨設(shè)為。對(duì)調(diào)和及和(j=1,2,……,n,1≤l≤n)。以作為新的進(jìn)行消元(消去對(duì)調(diào)后的第2~n個(gè)方程中的)。第k步:(1≤k≤n-1)設(shè)第k-1步消元過程完成,得到,檢查中第k列的后n-k+1個(gè)元素,,…,,從中選出絕對(duì)值最大者,不妨設(shè)是,稱它為第k列主元素。若p=k,則取做除數(shù)直接進(jìn)行消元。若p≠k,則將第p個(gè)方程與第k個(gè)方程對(duì)調(diào),使成為新的,然后以其作為除數(shù)進(jìn)行消元,繼續(xù)這一過程,直至得到等價(jià)的三角形方程組,下一階段的
3、回代過程不變。四、程序流程圖:輸入系數(shù)矩陣a,常數(shù)項(xiàng)b及ndet←1k=0調(diào)用選列主元子程序i=k+1←/(乘數(shù))j=k+1j=0det←det。輸出b及det結(jié)束開始否k++是是否i++是否j++否是j++是否i--回代過程消元過程選列主元的子程序流程圖:有主程序轉(zhuǎn)來d←,p←ki=k+1
4、aik
5、>
6、d
7、d←aik,p←ii8、t返回主程序是否選列主元否輸出失敗,det=0結(jié)束是否返回主程序是否j++i++五、程序代碼#include"stdio.h"#include"math.h"#definen3voidChooseMain(doublea[n][n],doubleb[n],intk,double*det){//選列主元intp=k;doubled=a[k][k],t;for(inti=k+1;ifabs(d)){d=a[i][k];p=i;}}if(d==0){det=0;print
9、f("
10、a
11、=0");}else{if(p==k)return;else{for(intj=k;j12、n;i++){m=a[i][k]/a[k][k];//求乘數(shù)a[i][k]=m;for(intj=k+1;j13、n");printf("a[i][j]b[i]");for(inti=0;i14、
15、%.4f",b[i]);}b[n-1]=b[n-1]/a[n-1][n-1];//求出了x3for(i=n-2;i>=0;i--){doubles=0;for(intj=i+1;j16、]-s)/a[i][i];//求出xi}det=a[n-1][n-1]*det;printf("--------------------------------------------------");printf("方程組的解為:x1x2x3");for(i=0;i