計算方法筆記 列高斯消元法解線性方程組

2021-08-08 19:50:26 字數 1209 閱讀 4034

針對齊次方程組

解線性方程組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。這個演算法的核心就是消...