matlab線性方程組求解

2021-10-23 14:59:56 字數 3626 閱讀 5520

線性方程組的求解主要有兩種方法,分別是直接法和迭代法,本節也將圍繞這兩種方法去講解一些matlab在求解線性方程組的相關知識。

一、線性方程組的直接解法

主要可以分為以下三種方法:

高斯( gauss )消去法

列主元消去法

矩陣的三角分解法

高斯( gauss )消去法是乙個經典的直接法,由它改進得到的列主元消去法,是目前計算機上求解線性方程組的標準演算法,其特點就是通過消元將一般線性方程組的求解問題轉化為三角方程組的求解問題。此外,還有矩陣的三角分解法等許多直接求解演算法 。

1、利用左除運算子的直接解法

matlab 提供了乙個左除運算子「\」 用於求解線性方程組,它使用列主元消去法,使用起來十分方便。對於線性方程組 ax=b ,可以利用左除運算子反斜槓求解,b左除以a可獲得線性方程組的數值解x。

注:這裡的a和b是矩陣形式,且a裡面的係數寫法要與未知數對應。

例、用左除運算子求解下列線性方程組 。

2、利用矩陣分解求解線性方程組

矩陣分解是設計演算法的重要技巧,是指將乙個給定的矩陣分解成若干個特殊型別矩陣的乘積 ,從而將乙個一般的矩陣計算問題轉化為幾個易求的特殊矩陣的計算問題 。通過矩陣分解方法求解線性方程組的優點是運算速度快,可以節省儲存空間 。

下面將主要去講解矩陣分解中的lu分解:

(1) lu 分解的基本思想:

矩陣的 lu分解就是將乙個n階矩陣表示為乙個下三角矩陣和乙個上三角矩陣的乘積。線性代數中已經證明,只要方陣是非奇異的,lu 分解總是可以進行的。如下圖

對於三角方程很容易求解,於是可以首先求解向量y使 ly=b,再求解 ux =y,從而達到求解線性方程組 ax=b 的目的。

(2)matlab的lu分解函式

lu 分解函式是根據列主元lu分解演算法定義的,具有較好的資料穩定性。 lu函式有兩種呼叫格式:

[l,u]= lu (a) :產生乙個上三角陣u和乙個變換形式的下三角陣l,使之滿足a=lu 。注意,這裡的矩陣a必須是方陣。

[l,u,p]= lu (a) :產生乙個上三角陣u和乙個下三角陣l以及乙個置換矩陣p,使之滿足 pa=lu 。同樣,矩陣a必須是方陣。

注:當使用第一種格式時,矩陣l往往不是乙個下三角陣,但可以通過行交換成為乙個下三角陣。

還是以上述的線性方程組為例:

>> a=[2

,1,-

5,1;

1,-5

,0,7

;0,2

,1,-

1;1,

6,-1

,-4]

;>> b=[13

,-9,

6,0]';

>>

[l,u]=lu

(a);

>> x=u\(l\b)

x =-

66.5556

25.6667

-18.7778

26.5556

>>

[l,u,p]=lu

(a);

>> x=u\(l\p*b)

x =-

66.5556

25.6667

-18.7778

26.5556

一、 線性方程組的迭代解法迭代法是一種不斷用變數的原值推出它的新值的過程,是用計算機解決問題的一種基本方法 。如下面所示

對於線性方程組ax=b,對於係數矩陣還是採取上述的矩陣分解的基本思想

求解公式為:x(k+1)=d(-1)*(l+u)*x(k)+d(-1)*b

matlab中沒有雅可比(jacobi)迭代法的內建函式,因此此種方法需要自己程式設計實現,網上也有很多的**,大家可以去了解一下,下面是網上的一段雅可比(jacobi)迭代法的**編寫

function [y,n]

=jacobi

(a,b,x0,ep)

d=diag

(diag

(a));l=

-tril

(a,-1)

;u=-triu

(a,1);

b=d\(l+u)

;f=d\b;

y=b*x0+f;n=1

;while

norm

(y-x0)

>=ep

x0=y;

y=b*x0+f;

n=n+1;

end

其中,a是係數陣,b是方程組右邊的常數,x0是迭代的初始值,ep是精度,在matlab 中將這段**寫入乙個function,呼叫結果如下(以下面的方程組為例):

可以看出兩種方法算出來的結果,很是接近。

當然,除了此方法,還有很多的迭代方法去求解線性方程組,常見的有高斯- - 賽德爾( gauss- - serdel )迭代法,附上鏈結(

本節內容就到這裡結束了,下節將推出非線性方程的求解,敬請期待!

關於matlab的學習:

MATLAB 線性方程組求解

clc,clear all close all 高斯消去法 a 2 3 4 3 5 2 4 3 30 線性方程組的係數矩陣 b 6 5 32 線性方程組的右端列向量 m,n size a 測量係數矩陣的維數 if m n fprint 線性方程組的係數矩陣非方陣 break end fprintf ...

MATLAB線性方程組求解

對於一般的,有唯一解的線性方程組,我們可以轉換成矩陣的形式 a x bax b ax b 則可以用矩陣運算求解x,即x a b 求解齊次線性方程組基礎解系的函式是null z null a 表示返回矩陣a的基礎解系組成的矩陣。z還滿足ztz i z null a,r 得出的z不滿足ztz i,但得出...

SVD求解線性方程組

對於任一給定的矩陣am n boldsymbol am n 都存在這樣的分解 a u dv t boldsymbol boldsymbol boldsymbol boldsymbol t a udvt 這裡 u boldsymbol u是乙個 m m m times m m m 的正交矩陣,d bo...