列主元消去法和LU分解法(C語言)_第1頁
列主元消去法和LU分解法(C語言)_第2頁
列主元消去法和LU分解法(C語言)_第3頁
列主元消去法和LU分解法(C語言)_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡介

1、(1)列主元素消去法求解線性方程:#include<iostream>#include<cmath>#define N 20using namespace std;void load();float aNN;int m;int main()int i,j;int c,k,n,p,r;float xN,lNN,s,d;cout<<"下面請輸入未知數(shù)的個數(shù)m="cin>>m;cout<<endl;cout<<"請按順序輸入增廣矩陣a:"<<endl;load();for(i=

2、0;i<m;i+) for(j=i;j<m;j+) c=(fabs(aji)>fabs(aii)?j:i; /*找列最大元素*/for(n=0;n<m+1;n+) s=ain; ain=acn; acn=s; /*將列最大數(shù)防在對角線上*/for(p=0;p<m+1;p+)cout<<aip<<"t"cout<<endl;for(k=i+1;k<m;k+) lki=aki/aii; for(r=i;r<m+1;r+) /*化成三角陣*/ akr=akr-lki*air; xm-1=am-1m/am

3、-1m-1;for(i=m-2;i>=0;i-) d=0;for(j=i+1;j<m;j+)d=d+aij*xj;xi=(aim-d)/aii; /*求解*/cout<<"該方程組的解為:"<<endl;for(i=0;i<m;i+)cout<<"x"<<i<<"="<<xi<<"t" /system("pause");return 0;void load()int i,j;for(i=0;i&

4、lt;m;i+)for(j=0;j<m+1;j+)cin>>aij;運行結(jié)果:下面請輸入未知數(shù)的個數(shù)m=3請按順序輸入增廣矩陣a:1 2 3 45 1 0 84 6 9 24 6 9 20 -6.5 -11.25 5.50 -1.86265e-008 -0.115385 3.92308該方程組的解為:x0=-9.99999 x1=58 x2=-34 Press any key to continue總結(jié):列主元素消去法的目的是為了防止減去一個較小的數(shù)時大數(shù)淹沒小數(shù),而使結(jié)果產(chǎn)生較大誤差,本程序關(guān)鍵在每次消元時找到相應(yīng)列中的最大項,然后交換兩行位置,在進行計算。(2)LU分解法

5、求解線性方程:#include<stdio.h>void solve(float l100,float u100,float b,float x,int n)int i,j;float t,s1,s2;float y100;for(i=1;i<=n;i+) /* 第一次回代過程開始 */ s1=0; for(j=1;j<i;j+) t=-lij; s1=s1+t*yj; yi=(bi+s1)/lii; for(i=n;i>=1;i-) /* 第二次回代過程開始 */ s2=0; for(j=n;j>i;j-) t=-uij; s2=s2+t*xj; xi=(

6、yi+s2)/uii; void main()float a100100,l100100,u100100,x100,b100;int i,j,n,r,k;float s1,s2;for(i=1;i<=99;i+)/*將所有的數(shù)組置零,同時將L矩陣的對角值設(shè)為1*/ for(j=1;j<=99;j+) lij=0,uij=0; if(j=i) lij=1; printf ("input n:n");/*輸入方程組的個數(shù)*/scanf("%d",&n);printf ("input array A:n");/*讀取原矩

7、陣A*/for(i=1;i<=n;i+) for(j=1;j<=n;j+) scanf("%f",&aij);printf ("input array B:n");/*讀取列矩陣B*/for(i=1;i<=n;i+) scanf("%f",&bi);for(r=1;r<=n;r+)/*求解矩陣L和U*/for(i=r;i<=n;i+) s1=0; for(k=1;k<=r-1;k+)s1=s1+lrk*uki;uri=ari-s1; for(i=r+1;i<=n;i+)s2=0

8、; for(k=1;k<=r-1;k+)s2=s2+lik*ukr;lir=(air-s2)/urr;printf("array L:n");/*輸出矩陣L*/for(i=1;i<=n;i+) for(j=1;j<=n;j+) printf("%7.3f ",lij); printf("n");printf("array U:n");/*輸出矩陣U*/for(i=1;i<=n;i+) for(j=1;j<=n;j+) printf("%7.3f ",uij); printf("n");solve(l,u,b,x,n);printf("解為:n");for(i=1;i<=n;i+)printf("x%d=%fn",i,xi);運行結(jié)果:input n:3input array A:2 2 34 7 7-2 4 5input array B:3 1 -7array L: 1.000 0.000 0.000 2.000 1.000 0.000 -1.000 2.000 1.000array U: 2.000 2

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論