1. 程式人生 > >MATLAB第十一課:線性迴歸方程式與線性系統

MATLAB第十一課:線性迴歸方程式與線性系統

目標:

  1. 線性方程
  2. 線性系統

一、線性方程

Linear Equation:

給定一個線性方程的例子:

把線性方程寫成矩陣的形式。

通常,我們求解線性方程時,A和b是已知的,x是未知的。

Solving Linear Equations:

Successive elimination (through factorization) :逐次消去(通過因式分解)

Gaussian Elimination:高斯消去

例子:給定一個線性方程式,寫成增廣矩陣。然後將係數部分化簡成單位矩陣。得到的b部分的值,就是方程式的解。

Gaussian Elimination – rref():使用MATLAB求解

 

>> A = [1 2 1;2 6 1;1 1 4];
>> b = [2; 7; 3];
>> R = rref([A b])

R =

     1     0     0    -3
     0     1     0     2
     0     0     1     1

使用matlab的內嵌函式rref()求解出最終的矩陣形式,可以看到x=-3,y=2,z=1.

LU Factorization:LU分解

假設我們想要求解:

將矩陣A分解為2個三角矩陣:

問題就成為:

最後的求解方法:

  1. Solve ?−1? = ? to obtain ? 
  2. Then solve ?? = ?

Lower and Upper Triangular Matrices :上下三角矩陣

上三角矩陣:

下三角矩陣:

How to Obtain ? and ??

矩陣L和U是通過一系列左乘獲得的。即

LU Factorization Example:

LU Factorization – lu():使用MATLAB求解LU分解

>> A = [1 1 1;2 3 5;4 6 8];
>> [L, U, P] = lu(A);
>> L

L =

    1.0000         0         0
    0.2500    1.0000         0
    0.5000         0    1.0000

>> U

U =

    4.0000    6.0000    8.0000
         0   -0.5000   -1.0000
         0         0    1.0000

>> P

P =

     0     0     1
     1     0     0
     0     1     0

接下來:運用上邊的方法,寫出式子,求出x

Matrix Left Division: \ or mldivide():

求解一個線性方程使用因式分解:這種方法是經過多個步驟的,但是使用起來是最簡單的方法。

>> A = [1 2 1;2 6 1;1 1 4]; 
>> b = [2; 7; 3]; 
>> x = A\b

x =

   -3.0000
    2.0000
    1.0000

矩陣分解函式:

Cramer的(逆)方法:

給定一個矩陣:

假設存在逆矩陣  如下式:

得出變數x為:

Inverse Matrix:

對於一個矩陣A,他的逆矩陣求解方法為:

det(A)為矩陣A的行列式,計算方法為:

逆矩陣的性質:

Solving Equations Using Cramer’s Method:

求解x

>> A = [1 2 1;2 6 1;1 1 4];
>> b = [2; 7; 3];
>> x = inv(A)*b

x =

   -3.0000
    2.0000
    1.0000

Singular(奇異的):奇異矩陣沒有逆矩陣。當行列式為0或者約等於0時,我們就說矩陣的狀況不是很好。不存在逆矩陣。

對矩陣進行檢查:

>> A = [ 1 2 3; 2 4.0001 6; 9 8 7];  cond(A) 

ans =

   4.3483e+05

>> B = [ 1 2 3; 2 5 6; 9 8 7]; cond(B)

ans =

   45.5623

可以看出B矩陣的情況更好些。

二、線性系統

Linear System

給定一個線性方程:

Eigenvalues and Eigenvectors(特徵值和特徵矩陣):

Interpretation of Eigenvalues and Eigenvectors(特徵值和特徵向量的求解):

Solving Eigenvalues and Eigenvectors :

使用matlab函式求解特徵值和特徵向量:eig()

>> [v,d]=eig([2 -12;1 -5])

v =

    0.9701    0.9487
    0.2425    0.3162


d =

    -1     0

Matrix Exponential(矩陣的指數): expm()   ?

一個典型的線性時不變系統通常被表述為:

A = [0 -6 -1; 6 2 -16; -5 20 -10]; 
x0 = [1 1 1]';  X = []; 
for t = 0:.01:1 
    X = [X expm(t*A)*x0]; 
end
plot3(X(1,:),X(2,:),X(3,:),'-o'); 
xlabel('x_1');  ylabel('x_2'); zlabel('x_3');  
grid on;  
axis tight square