%列主元消去法解方程組ax=b,實現pa=lu
function [x,deta] =gauss(a,b)
n=length(b);[p,q]=size(a);
if p~=q||p~=n fprintf('方陣的維數不同,請重新輸!'); %檢錯
end%為提高執行速度,給l,u,x,c,d1賦初值
l=zeros(n,n);
u=zeros(n,n);
x=zeros(n,1);
c=zeros(1,n);
d1=0;
%按列選主元,並進行行交換,記錄行資訊
for i=1:n-1
max=abs(a(i,i));
m=i;
for j=i+1:n
if max
max=abs(a(j,i));
m=j;
endend
if (m~=i)
for k=i:n
c(k)=a(i,k);
a(i,k)=a(m,k);
a(m,k)=c(k);
endd1=b(i);
b(i)=b(m);
b(m)=d1;
end%進行消元計算
for k=i+1:m
for j=i+1:n
a(k,j)=a(i,j)-a(i,j)*a(i,i);
endb(k)=b(k)-b(i)*a(k,i)/a(i,i);
a(k,i)=0;
end%回代求解
x(n)=b(n)/a(n,n);
for i=n-1:-1:1
sum=0.0;
for j=i+1:n
sum=sum+a(i,j)*x(j);
endx(i)=(b(i)-sum)/a(i,i);
end%計算行列式的值
deta=1;
for k=1:n
deta=deta*a(k,k);
end%輸出pa=lu中的l,u的資訊
for i=1:n
for j=1:n
if i
u(i,j)=a(i,j);
elseif i==j
l(i,j)=1;
u(i,j)=a(k,j);
else
l(i,j)=a(i,j);
endend
endend
a=[-0.002 2 2
1 0.78125 0
3.996 5.5625 4];
b=[0.4;1.3816;7.4178];
%[l,u,x,deta]=mylu(a,b)
[x,deta]=gauss(a,b)
disp('列主元高斯消去法得到的解為:')
六.執行結果:
x =1.8167
0.0527
-0.0337
deta =
798.0666
列主元Gauss消去法 C 實現
原理 列主元素消去法是為控制捨入誤差而提出來的一種演算法,列主元素消去法計算基本上能控制捨入誤差的影響,其基本思想是 在進行第 k k 1,2,n 1 步消元時,從第k列的 akk及其以下的各元素中選取絕對值最大的元素,然後通過行變換將它交換到主元素akk的位置上,再進行消元。列主元消去法的基本思想...
Gauss列主元消去法(封裝函式)
高斯列主元消去法 封裝函式一 include include windows.h using namespace std intsolvereqguass double a,double b,int n,double eps,double x m n 賦值 for i 0 i a i n b i i...
實驗八Gauss列主元素消去法
實驗八gauss列主元素消去法 實驗目的 掌握gauss列主元素消去法求解線性方程組的過程。實驗內容 用gauss消去法求解線性方程組 先來看一下不選主元的方法 include include define n 3 void main float temp,m,x n int i,j,k,q,p f...