根據線性代數中求解方程組的基本知識,首先應判斷係數矩陣的秩是否和增廣矩陣的秩相等,若不等,則無解;若有解,根據秩和未知量個數的關係,判斷是唯一解還是無窮多解;若為無窮多解,其通解為齊次方程組的通解加非齊次方程組的特解。
求非齊次線性方程組ax=b
的特解,可直接使用命令a\b
,求解齊次線性方程組的通解,可以使用函式null
或rref
來實現。
命令含義
b = null(a,'r')
求係數矩陣為a的齊次線性方程組ax=0的基礎解系,結果為有理數,b的列向量即基礎解系的列向量
z = null(a)
求出ax=0的基礎解系後,將基礎解系的向量正交單位化,儲存在z中
c = rref(a)
求出矩陣a的行最簡形矩陣(reduced row echelon form)
例使用matlab求解方程組 ⎧⎩function
[s_h, s_p] = solvels
(a,b)
% 輸入引數a:係數矩陣
% 輸入引數b:ax=b的常數項列向量b
% s_h:齊次線性方程組的基礎解系
% s_p:非齊次線性方程組的特解
ifsize(a,1) ~= length(b) %size(a,1)求矩陣的行數
error('輸入資料錯誤,請重新輸入!');
return;
else
b = [a,b]; %增廣矩陣
rank_a = rank(a); %求係數矩陣的秩
rank_b = rank(b); %求增廣矩陣的秩
if rank_a ~= rank_b %無解情況
disp('線性方程組無解!');
s_h = ;
s_p = ;
else
if rank_b == size(a,2) %若增廣矩陣的秩 = 未知量個數
%size(a,2)求矩陣的列數,相當於length(a)
disp('線性方程組有唯一解!');
s_p = a\b; %求唯一解
s_h = ;
else
disp('線性方程組有無窮解!');
s_h = null(a,'r');%求出齊次方程組的基礎解系
s_p = a\b; %求非齊次方程組的特解
endend
end
⎨x1+
2x2−
2x3+
3x4=
22x1
+4x2
−3x3
+4x4
=55x
1+10x
2−8x
3+11x
4=12
執行結果a=[1
2 -2
3; 2 4 -3 4; 5 10 -8 11];
b=[2
512]';format rat;
[s_h, s_p]=solvels(a,b)
該線性方程組有無窮多解,通解為 x=線性方程組有無窮解!
s_h =
-21 1 0
0 2
0 1
s_p =
0
7/4
0
-1/2
k1⎛⎝
⎜⎜⎜−
2100
⎞⎠⎟⎟
⎟+k2
⎛⎝⎜⎜
⎜102
1⎞⎠⎟
⎟⎟+⎛
⎝⎜⎜⎜
07/4
0−1/
2⎞⎠⎟
⎟⎟,k
1,k2
∈r
求解非齊次線性方程組演算法
1.非齊次線性方程組有解的條件 如下非齊次線性方程組 由係數矩陣和常數列向量構成的增廣矩陣如下 無解情況 唯一解情況 無窮解情況 2.高斯消元法求解 步驟 1 消元法 通過矩陣的初等變換,將增廣矩陣變換為上三角矩陣 2 回代法 採用回代法求解上三角矩陣對應的非齊次線性方程組,即從第n個方程開始求解,...
齊次線性方程組和非齊次線性方程組
定義齊次線性方程組 等式右側常數項全部為0 非齊次線性方程組 等式右側常數項不全部為0 2.齊次方程組的求解 將係數矩陣化為行階梯形矩陣,記全為0的行數量為r n r a 則非零行的首非零元所在列對應的就是約束變數,其餘變數即為自由變數。將後r個自由變數未知數,每次只有乙個取值為1 其餘為0 然後每...
齊次線性方程組和非齊次線性方程組
1 常數項不同 齊次線性方程組的常數項全部為零,非齊次方程組的常數項不全為零。2 表示式不同 齊次線性方程組表示式 ax 0 非齊次方程組程度常數項不全為零 ax b。齊次線性方程組求解步驟 1 對係數矩陣a進行初等行變換,將其化為行階梯形矩陣 2 若r a r n 未知量的個數 則原方程組僅有零解...