用matlab實(shí)現(xiàn)高斯列主元消去法解線性方程及LU分解

2017-03-06  by:CAE仿真在線  來(lái)源:互聯(lián)網(wǎng)

用matlab實(shí)現(xiàn)高斯列主元消去法解線性方程及LU分解


function x=gaussLinearEquation(A,b)


%高斯法解線性方程Ax=b


disp('原方程為AX=b:')


A


b


disp('------------------------')


n=length(b);


eps=10^-2;


for k=1:n-1


%找列主元


[mainElement,index]=max(abs(A(k:n,k)));


index=index+k-1;%index在A(k:n,k)中的行號(hào)轉(zhuǎn)換為在A中的行號(hào)


if abs(mainElement)<eps


disp('列元素太小!!');


break;


elseif index>k


%列主元所在行不是當(dāng)前行,將當(dāng)前行與列主元所在行交換


temp=A(k,:);


A(k,:)=A(index,:);


A(index,:)=temp;


end


%消元


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也需要處理!!


end


end


disp('消元后所得到的上三角陣是')


A


%回代


b(n)=b(n)/A(n,n);


for i=n-1:-1:1


%sum(A(i,i+1:n).*b(i+1:n)')表示已知


b(i)=(b(i)-sum(A(i,i+1:n).*b(i+1:n)'))/A(i,i);


end


clear x;


x=b;


disp('AX=b的解x是')


x


用法:


在控制臺(tái)輸入:


A=[1.003 0.333 1.504 -0.333;


-2.011 1.455 0.506 2.956;


4.329 -1.952 0.006 2.087;


5.113 -4.004 3.332 -1.112];


b=[ 3.005,5.407,0.136,3.772 ]';


執(zhí)行g(shù)aussLinearEquation(A,b);即可得到結(jié)果。


使用matlab實(shí)現(xiàn)矩陣的LU分解

function [L,U]=myLU(A)

%實(shí)現(xiàn)對(duì)矩陣A的LU分解,L為下三角矩陣

A

[n,n]=size(A);

L=zeros(n,n);

U=zeros(n,n);

for i=1:n

L(i,i)=1;

end

for k=1:n

for j=k:n

U(k,j)=A(k,j)-sum(L(k,1:k-1).*U(1:k-1,j)');


end

for i=k+1:n

L(i,k)=(A(i,k)-sum(L(i,1:k-1).*U(1:k-1,k)'))/U(k,k);

end


end

用法,在控制臺(tái)輸入

A=[1 2 3 -4;-3 -4 -12 13;2 10 0 -3;4 14 9 -13];

然后執(zhí)行[l,u]=myLU(A);

這樣得到l和u,可以通過(guò)l*u與A比較來(lái)驗(yàn)證LU分解的正確性。


注意:

[L1,U1]=lu(x)

[L2,U2,P]=lu(x)

[L3,U3,P,Q] = lu(X)

MATLAB中[L1,U1]=lu(x)的結(jié)果:L是下三角的置換矩陣即L1=p*L2,U是上三角陣。Matlab中LU分解采用高斯消元法,結(jié)果是不唯一的,只要[L1,U1]=lu(x)滿足L1*U1=x, [L2,U2,P]=lu(x)滿足L2*U2=p*x,[L3,U3,P,Q] = lu(X)滿足L3*U3= P*X*Q就行了。


開(kāi)放分享:優(yōu)質(zhì)有限元技術(shù)文章,助你自學(xué)成才

相關(guān)標(biāo)簽搜索:用matlab實(shí)現(xiàn)高斯列主元消去法解線性方程及LU分解 MatLab培訓(xùn) MatLab培訓(xùn)課程 MatLab在線視頻教程 MatLab技術(shù)學(xué)習(xí)教程 MatLab軟件教程 MatLab資料下載 MatLab代做 MatLab基礎(chǔ)知識(shí) Fluent、CFX流體分析 HFSS電磁分析 Ansys培訓(xùn) Abaqus培訓(xùn) 

編輯
在線報(bào)名:
  • 客服在線請(qǐng)直接聯(lián)系我們的客服,您也可以通過(guò)下面的方式進(jìn)行在線報(bào)名,我們會(huì)及時(shí)給您回復(fù)電話,謝謝!
驗(yàn)證碼

全國(guó)服務(wù)熱線

1358-032-9919

廣州公司:
廣州市環(huán)市中路306號(hào)金鷹大廈3800
電話:13580329919
          135-8032-9919
培訓(xùn)QQ咨詢:點(diǎn)擊咨詢 點(diǎn)擊咨詢
項(xiàng)目QQ咨詢:點(diǎn)擊咨詢
email:kf@1cae.com