針對齊次方程組
解線性方程組ax=b
採用高斯列主元方法為:
k=1:n-1時
k=n時
重點理解矩陣的乘法
%高斯消元法
%列主元素消元法,主元的選擇是在對角線下方元素包括對角元元素
%注意b和解的向量都是列向量,同時矩陣的乘法就是線性方程組的表示方法
clear;
a=[1,2,1,-2;2,5,3,-2;-2,-2,3,5;1,3,2,5];
b=[-1;3;15;9];
[n,cl]=size(a);
x=zeros(n,1);
for k=1:n-1
[prime,maxk]=max(abs(a(k:n,k)));%在第k列在對角元包括對角元下面尋找主元
maxk=maxk+k-1;
if prime<=eps
disp('無解!!!');%結束
else
%換行 temp=a(k,1:cl);
a(k,1:cl)=a(maxk,1:cl);
a(maxk,1:cl)=temp;
temp1=b(k);
b(k)=b(maxk);
b(maxk)=temp1;
clear temp1,temp;
%消元分係數矩陣a和b消元,從第k+1行開始計算
b(k+1:n,1)=b(k+1:n,1)-a(k+1:n,k)/a(k,k)*b(k,1);
a(k+1:n,1:cl)=a(k+1:n,1:cl)-(a(k+1:n,k)/a(k,k))*a(k,1:cl);
endendif(k+1==n)
ifabs(a(k,k))<=eps
disp('無解!!!');
else
%回代求解
x(n,1)=b(n,1)/a(n,n);
fori=n-1:-1:1
x(i,1)=(b(i,1)-a(i,i+1:n)*x(i+1:n,1))/a(i,i);
enddisp(x);
endend
總結:
列高斯消元法本質也是消元法,因為考慮到在計算機執行演算法時如果選取的是小主元,在消元時會除以小主元而產生很高的誤差,所以在每次消元之前選取絕對值最大的主元。
計算方法 列主元高斯消去
gauss.cpp 定義控制台應用程式的入口點。實驗名稱 列主元高斯消去 實現語言 c 實驗環境 vs 2017 include stdafx.h include include include using namespace std 輸出係數矩陣 右側矩陣 void displayzengguan...
計算方法實驗(五) 高斯列主元消去法
高斯 gauss 列主元消去法 對給定的n nn階線性方程組ax bax b ax b 首先進行列主元消元過程,然後進行回代過程,最後得到解或確定該線性方程組是奇異的。如果係數矩陣的元素按絕對值在數量級方面相差很大,那麼,在進行列主元消元過程前,先把係數矩陣的元素進行行平衡 係數矩陣的每行元素和相應...
線性代數 矩陣消元 高斯消元法
能使用消元法的情況 每次消元過程中,對角線元素始終不能為0,即矩陣可逆 我們一般利用高斯消元法進行矩陣的消元。下面我們通過舉例說明 如果按照我們初中所學的解法,一般是先用第三個方程將z用y表示,然後代入到第二個方程就可以用x來表示y和z,最後代入第乙個方程就可以求得x,y,z。這個演算法的核心就是消...