?? gausslinearequation.m
字號:
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)中的行號轉換為在A中的行號
if abs(mainElement)<eps
disp('列元素太小!!');
break;
elseif index>k
%列主元所在行不是當前行,將當前行與列主元所在行交換
temp=A(k,:);
A(k,:)=A(index,:);
A(index,:)=temp;
temp=b(k);
b(k)=b(index);
b(index)=temp;
end
%消元
for i=k+1:n
m(i,k)=A(i,k)/A(k,k);%A(k,k)將A(i,k)消為0所乘系數
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
%回代
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是')
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -