版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、計算方法實驗報告1 【課題名稱】用列主元高斯消去法和列主元三角分解法解線性方程【目的和意義】高斯消去法是一個古老的求解線性方程組的方法,但由它改進得到的選主元的高斯消去法則是目前計算機上常用的解低階稠密矩陣方程組的有效方法。用高斯消去法解線性方程組的基本思想時用矩陣行的初等變換將系數(shù)矩陣A約化為具有簡單形式的矩陣(上三角矩陣、單位矩陣等),而三角形方程組則可以直接回帶求解用高斯消去法解線性方程組(其中ARn×n)的計算量為:乘除法運算步驟為,加減運算步驟為。相比之下,傳統(tǒng)的克萊姆法則則較為繁瑣,如求解20階線性方程組,克萊姆法則大約要次乘法,而用高斯消去法只需要3060次乘除法。在高
2、斯消去法運算的過程中,如果出現(xiàn)abs(A(i,i)等于零或過小的情況,則會導(dǎo)致矩陣元素數(shù)量級嚴(yán)重增長和舍入誤差的擴散,使得最后的計算結(jié)果不可靠,所以目前計算機上常用的解低階稠密矩陣方程的快速有效的方法時列主元高斯消去法,從而使計算結(jié)果更加精確。2、列主元三角分解法高斯消去法的消去過程,實質(zhì)上是將A分解為兩個三角矩陣的乘積A=LU,并求解Ly=b的過程。回帶過程就是求解上三角方程組Ux=y。所以在實際的運算中,矩陣L和U可以直接計算出,而不需要任何中間步驟,從而在計算過程中將高斯消去法的步驟進行了進一步的簡略,大大提高了運算速度,這就是三角分解法采用選主元的方式與列主元高斯消去法一樣,也是為了避
3、免除數(shù)過小,從而保證了計算的精確度【計算公式】1、 列主元高斯消去法設(shè)有線性方程組Ax=b,其中設(shè)A為非奇異矩陣。方程組的增廣矩陣為 第1步(k=1):首先在A的第一列中選取絕對值最大的元素,作為第一步的主元素: 然后交換(A,b)的第1行與第l行元素,再進行消元計算。 設(shè)列主元素消去法已經(jīng)完成第1步到第k-1步的按列選主元,交換兩行,消元計算得到與原方程組等價的方程組 A(k)x=b(k) 第k步計算如下: 對于k=1,2,n-1 (1)按列選主元:即確定t使 (2)如果tk,則交換A,b第t行與第k行元素。 (3)消元計算 消元乘數(shù)mik滿足: (4)回代求解2、 列主元三角分解法對方程組
4、的增廣矩陣 經(jīng)過k-1步分解后,可變成如下形式:第k步分解,為了避免用絕對值很小的數(shù)作除數(shù),引進量,于是有=。如果 ,則將矩陣的第t行與第k行元素互換,將(i,j)位置的新元素仍記為或,然后再做第k步分解,這時【列主元高斯消去法程序流程圖】【列主元高斯消去法Matlab主程序】function x=gauss1(A,b,c) %列主元法高斯消去法解線性方程Ax=bif (length(A)=length(b) %判斷輸入的方程組是否有誤 disp('輸入方程有誤!') return;enddisp('原方程為AX=b:') %顯示方程組Abdisp('-
5、')n=length(A);for k=1:n-1 %找列主元 p,q=max(abs(A(k:n,k); %找出第k列中的最大值,其下標(biāo)為p,q q=q+k-1; %q在A(k:n,k)中的行號轉(zhuǎn)換為在A中的行號 if abs(p)<c disp('列元素太小,det(A)0'); break; elseif q>ktemp1=A(k,:); %列主元所在行不是當(dāng)前行,將當(dāng)前行與列主A(k,:)=A(q,:); 元所在行交換(包括b) A(q,:)=temp1; temp2=b(k,:); b(k,:)=b(q,:); b(q,:)=temp2;end %
6、消元 for i=k+1:n m(i,k)=A(i,k)/A(k,k); %A(k,k)將A(i,k)消為0所乘系數(shù) A(i,k:n)=A(i,k:n)-m(i,k)*A(k,k:n); %第i行消元處理 b(i)=b(i)-m(i,k)*b(k); %b消元處理 endenddisp('消元后所得到的上三角陣是') A %顯示消元后的系數(shù)矩陣b(n)=b(n)/A(n,n); %回代求解for i=n-1:-1:1 b(i)=(b(i)-sum(A(i,i+1:n)*b(i+1:n)/A(i,i);endclear x;disp('AX=b的解x是')x=b;
7、【調(diào)用函數(shù)解題】【列主元三角分解法程序流程圖】【列主元三角分解法Matlab主程序】自己編的程序:function x=PLU(A,b,eps) %定義函數(shù)列主元三角分解法函數(shù)if (length(A)=length(b) %判斷輸入的方程組是否有誤 disp('輸入方程有誤!') return;enddisp('原方程為AX=b:') %顯示方程組Abdisp('-')n=length(A);A=A b; %將A與b合并,得到增廣矩陣for r=1:n if r=1 for i=1:n c d=max(abs(A(:,1); %選取最大列向量,
8、并做行交換 if c<=eps %最大值小于e,主元太小,程序結(jié)束 break; else end d=d+1-1; p=A(1,:); A(1,:)=A(d,:); A(d,:)=p; A(1,i)=A(1,i); end A(1,2:n)=A(1,2:n); A(2:n,1)=A(2:n,1)/A(1,1); %求u(1,i) else u(r,r)=A(r,r)-A(r,1:r-1)*A(1:r-1,r); %按照方程求取u(r,i) if abs(u(r,r)<=eps %如果u(r,r)小于e,則交換行 p=A(r,:); A(r,:)=A(r+1,:); A(r+1,:
9、)=p; else end for i=r:n A(r,i)=A(r,i)-A(r,1:r-1)*A(1:r-1,i); %根據(jù)公式求解,并把結(jié)果存在矩陣A中 end for i=r+1:nA(i,r)=(A(i,r)-A(i,1:r-1)*A(1:r-1,r)/A(r,r); %根據(jù)公式求解,并把結(jié)果存在矩陣A中 end endend y(1)=A(1,n+1); for i=2:n h=0; for k=1:i-1 h=h+A(i,k)*y(k); end y(i)=A(i,n+1)-h; %根據(jù)公式求解y(i) end x(n)=y(n)/A(n,n); for i=n-1:-1:1 h
10、=0; for k=i+1:n h=h+A(i,k)*x(k); end x(i)=(y(i)-h)/A(i,i); %根據(jù)公式求解x(i) end Adisp('AX=b的解x是')x=x' %輸出方程的解可直接得到P,L,U并解出方程解的的程序(查閱資料得子函數(shù)PLU1,其作用是將矩陣A分解成L乘以U的形式。PLU2為調(diào)用PLU1解題的程序,是自己編的)().function l,u,p=PLU1(A) %定義子函數(shù),其功能為列主元三角分解系數(shù)矩陣A m,n=size(A); %判斷系數(shù)矩陣是否為方陣 if m=n error('矩陣不是方陣') r
11、eturn end if det(A)=0 %判斷系數(shù)矩陣能否被三角分解 error('矩陣不能被三角分解') end u=A;p=eye(m);l=eye(m); %將系數(shù)矩陣三角分解,分別求出P,L,U for i=1:m for j=i:m t(j)=u(j,i); for k=1:i-1 t(j)=t(j)-u(j,k)*u(k,i); end end a=i;b=abs(t(i); for j=i+1:m if b<abs(t(j) b=abs(t(j); a=j; end end if a=i for j=1:m c=u(i,j); u(i,j)=u(a,j)
12、; u(a,j)=c; end for j=1:m c=p(i,j); p(i,j)=p(a,j); p(a,j)=c; end c=t(a); t(a)=t(i); t(i)=c; end u(i,i)=t(i); for j=i+1:m u(j,i)=t(j)/t(i); end for j=i+1:m for k=1:i-1 u(i,j)=u(i,j)-u(i,k)*u(k,j); end end end l=tril(u,-1)+eye(m); u=triu(u,0)().function x=PLU2(A,b) %定義列主元三角分解法的函數(shù)l,u,p=PLU1(A) %調(diào)用PLU分解系數(shù)矩陣A m=length(A); %由于A左乘p,故b也要左乘pv=b;for q=1:m b(q)=sum(p(q,1:m)*v(1:m,1);end b(1)=b(1) %求解方程Ly=b for i=2:1:m b(i)=(b(i)-sum(l(i,1:i-1)*b(1:i-1);endb(m)=b(m)/u(m,m); %求解方程Ux=yfor i=m-1:-1:1 b(i)=(b(i)-sum(u(i,i+1:m)*b(i+1:m)/u(i,i);endclear x;disp('AX=b的解x是')x=b;【調(diào)用函數(shù)解題】【編程疑難】這是第一次用matlab編
溫馨提示
- 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. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度曹瑞與張麗離婚協(xié)議中公司股權(quán)分割及轉(zhuǎn)讓協(xié)議3篇
- 2024美食盛宴商業(yè)合作伙伴合同版B版
- 2025年度漁業(yè)資源承包與可持續(xù)發(fā)展合同4篇
- 2025年度體育場館食堂承包合同范本3篇
- 2025年度生物科技研發(fā)公司部分股權(quán)出售合同3篇
- 2025年度智慧社區(qū)建設(shè)承包合同股東內(nèi)部經(jīng)營協(xié)議4篇
- 2025年度潯購F000353632生鮮產(chǎn)品展示冰柜采購合同3篇
- 2025年度水產(chǎn)養(yǎng)殖蟲害綜合防控技術(shù)合同4篇
- 職業(yè)教育培訓(xùn)需求分析課件
- 2025年幼兒園食堂承包及幼兒營養(yǎng)餐服務(wù)合同4篇
- 火災(zāi)安全教育觀后感
- 農(nóng)村自建房屋安全協(xié)議書
- 快速康復(fù)在骨科護理中的應(yīng)用
- 國民經(jīng)濟行業(yè)分類和代碼表(電子版)
- ICU患者外出檢查的護理
- 公司收購設(shè)備合同范例
- 廣東省潮州市2023-2024學(xué)年高二上學(xué)期語文期末考試試卷(含答案)
- 2024年光伏發(fā)電項目EPC總包合同
- 子女放棄房產(chǎn)繼承協(xié)議書
- 氧化還原反應(yīng)配平專項訓(xùn)練
- 試卷(完整版)python考試復(fù)習(xí)題庫復(fù)習(xí)知識點試卷試題
評論
0/150
提交評論