MATLAB線性方程組求解

2021-09-10 01:51:28 字數 2640 閱讀 4370

對於一般的,有唯一解的線性方程組,我們可以轉換成矩陣的形式:

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,但得出的矩陣元素多為整數,顧一般都帶引數r。

非齊次線性方程組在求出基礎解析後還要求乙個特解。對於矩陣形式的非齊次線性方程組ax=

bax=b

ax=b

特解x0

x_0x0

​的求法為x0=pinv(a)*b;其中函式pinv的意思是偽逆矩陣。

例如求解線性方程組:

由輸出結果可知方程的解為

x =k

1[−6

210]

+k2[

−420

1]+[

13/7746/77

−1/11

−40/77

](k1

,k2∈

r)x=k_1 \begin -6\\2\\1\\0\\ \end +k_2 \begin -4\\2\\0\\1\\ \end +\begin 13/77\\46/77\\-1/11\\-40/77\\ \end \quad (k_1,k_2 ∈r)

x=k1​⎣

⎢⎢⎡​

−621

0​⎦⎥

⎥⎤​+

k2​⎣

⎢⎢⎡​

−420

1​⎦⎥

⎥⎤​+

⎣⎢⎢⎡

​13/

7746

/77−

1/11

−40/

77​⎦

⎥⎥⎤​

(k1​

,k2​

∈r) =r

ref(

a)r=rref(a)

r=rref

(a)我們可以用線性代數知識,編寫乙個函式,給入矩陣a和b,給出方程的解,函式自動判斷是有唯一解還是無窮解。

先搭建出函式的框架

function varargout = zjx_solvebygauss(varargin)

%zjx_solvebygauss 用高斯消元法解線性方程組

% a是係數矩陣,b是常熟矩陣。varargin=;如果b為0,則不輸入b

% varargout=[s flag],s給出結果

% flag為0無解;1唯一解;2齊次通解;3非齊次通解

a=cell2mat(varargin(1));

alie=length(a);asum=numel(a);ahang=asum/alie;

if(nargin==2)

b=cell2mat(varargin(2));

else

b(ahang,1)=0;

endb=a; b(:,alie+1)=b;

varargout(1)=;

if(nargout==2)

varargout(2)=;

endend

現在完成了基本框架的構建,其中varargout等含義參見函式部分的內容。現在我們已經得到了矩陣a、b,a的行數ahang,a的列數alie,增廣矩陣b。現在在中間的空格位置進行運算。

程式設計

ar=rank(a); br=rank(b);

b=rref(b);

if (ar

測試同樣求之前的方程組通解

如圖,帶方程b則s最後一列是特解,不帶b則沒有特解。日後我們可以直接呼叫這個函式方便求解。而且比較結果我們發現,這樣求出來的特解形式要簡單一些。

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線性方程組求解

線性方程組的求解主要有兩種方法,分別是直接法和迭代法,本節也將圍繞這兩種方法去講解一些matlab在求解線性方程組的相關知識。一 線性方程組的直接解法 主要可以分為以下三種方法 高斯 gauss 消去法 列主元消去法 矩陣的三角分解法 高斯 gauss 消去法是乙個經典的直接法,由它改進得到的列主元...

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...