MATLAB求解非齊次線性方程組

2021-08-01 02:26:26 字數 2029 閱讀 7057

根據線性代數中求解方程組的基本知識,首先應判斷係數矩陣的秩是否和增廣矩陣的秩相等,若不等,則無解;若有解,根據秩和未知量個數的關係,判斷是唯一解還是無窮多解;若為無窮多解,其通解為齊次方程組的通解加非齊次方程組的特解。

求非齊次線性方程組ax=b的特解,可直接使用命令a\b,求解齊次線性方程組的通解,可以使用函式nullrref來實現。

命令含義

b = null(a,'r')求係數矩陣為a的齊次線性方程組ax=0的基礎解系,結果為有理數,b的列向量即基礎解系的列向量

z = null(a)求出ax=0的基礎解系後,將基礎解系的向量正交單位化,儲存在z中

c = rref(a)求出矩陣a的行最簡形矩陣(reduced row echelon form)

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

使用matlab求解方程組 ⎧⎩

⎨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)

執行結果

線性方程組有無窮解!

s_h =

-21 1 0

0 2

0 1

s_p =

0

7/4

0

-1/2

該線性方程組有無窮多解,通解為 x=

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 未知量的個數 則原方程組僅有零解...