2021-05-12 14:32:11
MATLAB利用LU分解法求解線性方程組
當矩陣(方陣)A為行列式不為0的矩陣時,也就是說方陣A是可逆矩陣的,那麼A為非奇異矩陣。對於非奇異矩陣A可以進行LU分解,即把A分解為一個變換形式的下三角矩陣L(進行了行變換)和一個上三角矩陣U,使得A=L*U。同時得到線性方程組的解為X=U(Lb),其中b為線性方程組等號右邊的常數構成的列向量。本文將演示MATLAB利用LU分解法求解線性方程組的方法。
1
第一,下圖是要求解的線性方程組,參考了王正林等《MATLAB科學計算》有關內容。
2
第二,啟動MATLAB,新建指令碼,輸入如下程式碼:
close all; clear all; clc
% MATLAB利用LU分解法求解線性方程組
% A是線性方程組等號左邊係數構成的矩陣
% b是線性方程組等號右邊常數構成的矩陣
format compact
A = [1.5 3 -0.8 4;2 0 9 10;-7 4.8 -0.6 1;14 12.3 -4 5];
b = [4 0 1 -2]';
[L,U] = lu(A)
X = U(Lb)
3
第三,儲存和執行上述程式碼。得到線性方程組的解如下:
X =
-0.3721
-0.8291
-1.5336
1.4547
4
第四,其中lu分解法得到了一個變換形式的下三角矩陣L(進行了行變換)和一個上三角矩陣U如下:
L =
0.1071 0.1536 0.0031 1.0000
0.1429 -0.1605 1.0000 0
-0.5000 1.0000 0 0
1.0000 0 0 0
U =
14.0000 12.3000 -4.0000 5.0000
0 10.9500 -2.6000 3.5000
0 0 9.1542 9.8474
0 0 0 2.8965
5
第五,對變換形式的下三角矩陣L(進行了行變換)和上三角矩陣U進行驗證,即L*U是否等於A,在命令視窗輸入L*U,回車得到如下結果,可以見A=LU。這裡需要注意的是L*U,而不是L.*U,.*表示的矩陣每一項元素相乘,*表示矩陣相乘。
6
第六,對解進行驗證,在命令列視窗輸入A*X,回車得到如下結果,可見A*X=b,即結果正確,說明LU分解法求解線性方程組的方法是有效的。
相關文章