1. 程式人生 > >MATlAB數值計算功能

MATlAB數值計算功能

三. 逆矩陣及行列式(Revers and determinant of matrix)

1. 方陣的逆和行列式(Revers and determinant of square matrix)

若a是方陣,且為非奇異陣,則方程ax=I和 xa=I有相同的解X。X稱為a的逆矩陣,記做a-1,在MATLAB中用inv 函式來計算矩陣的逆。計算方陣的行列式則用det函式。

DET    Determinant.

DET(X) is the determinant of the square matrix X.

       Use COND instead of DET to test for matrix singularity.

INV    Matrix inverse.

INV(X) is the inverse of the square matrix X. A warning message is printed if X is badly scaled or nearly singular.

例:計算方陣的行列式和逆矩陣。

a=[3  -3  1;-3  5  -2;1  -2  1];

b=[14  13  5; 5  1  12;6  14  5];

d1=det(a)

x1=inv(a)

d2=det(b)

x2=inv(b)

d1 =

     1

x1 =

    1.0000    1.0000    1.0000

    1.0000    2.0000    3.0000

    1.0000    3.0000    6.0000

d2 =

       -1351

x2 =

    0.1207   -0.0037   -0.1118

   -0.0348   -0.0296    0.1058

   -0.0474    0.0873    0.0377

2. 廣義逆矩陣(偽逆)(Generalized inverse matrix)

一般非方陣無逆矩陣和行列式,方程ax=I 和xa=I至少有一個無解,這種矩陣可以求得特殊的逆矩陣,成為廣義逆矩陣(generalized inverse matrix)(或偽逆 pseudoinverse)。矩陣amn存在廣義逆矩陣xnm,使得 ax=Imn, MATLAB用pinv函式來計算廣義逆矩陣。

例:計算廣義逆矩陣。

a=[8  14; 1  3; 9  6]

x=pinv(a)

b=x*a

c=a*x

d=c*a     %d=a*x*a=a

e=x*c     %e=x*a*x=x

a =

     8    14

     1     3

     9     6

x =

   -0.0661   -0.0402    0.1743

    0.1045    0.0406   -0.0974

b =

    1.0000   -0.0000

   -0.0000    1.0000

c =

    0.9334    0.2472    0.0317

    0.2472    0.0817   -0.1177

    0.0317   -0.1177    0.9849

d =

    8.0000   14.0000

    1.0000    3.0000

    9.0000    6.0000

e =

   -0.0661   -0.0402    0.1743

0.1045    0.0406   -0.0974

PINV   Pseudoinverse.

X = PINV(A) produces a matrix X of the same dimensions as A' so that A*X*A = A, X*A*X = X and A*X and X*A are Hermitian. The computation is based on SVD(A) and any singular values less than a tolerance are treated as zero.

    The default tolerance is MAX(SIZE(A)) * NORM(A) * EPS.

PINV(A,TOL) uses the tolerance TOL instead of the default.

四. 矩陣分解(Matrix decomposition)

MATLAB求解線性方程的過程基於三種分解法則:

(1)Cholesky分解,針對對稱正定矩陣;

(2)高斯消元法,  針對一般矩陣;

(3)正交化,      針對一般矩陣(行數≠列數)

這三種分解運算分別由chol, lu和 qr三個函式來分解.

1.         Cholesky分解(Cholesky Decomposition)

僅適用於對稱和上三角矩陣

例:cholesky分解。

a=pascal(6)

b=chol(a)

a =

     1     1     1     1     1     1

     1     2     3     4     5     6

     1     3     6    10    15    21

     1     4    10    20    35    56

     1     5    15    35    70   126

     1     6    21    56   126   252

b =

     1     1     1     1     1     1

     0     1     2     3     4     5

     0     0     1     3     6    10

     0     0     0     1     4    10

     0     0     0     0     1     5

0     0     0     0     0     1

CHOL   Cholesky factorization.

CHOL(X) uses only the diagonal and upper triangle of X. The lower triangular is assumed to be the (complex conjugate) transpose of the upper.  If X is positive definite, then R = CHOL(X) produces an upper triangular R so that R'*R = X. If X is not positive definite, an error message is printed.

[R,p] = CHOL(X), with two output arguments, never produces an

error message.  If X is positive definite, then p is 0 and R is the same as above.   But if X is not positive definite, then p is a positive integer.

    When X is full, R is an upper triangular matrix of order q = p-1

    so that R'*R = X(1:q,1:q). When X is sparse, R is an upper triangular matrix of size q-by-n so that the L-shaped region of the first q rows and first q columns of R'*R agree with those of X.

2. LU分解(LU factorization).

用lu函式完成LU分解,將矩陣分解為上、下兩個三角陣,其呼叫格式為:

[l,u]=lu(a)  l代表下三角陣,u代表上三角陣。

例:

LU分解。

a=[47  24  22; 11  44  0;30  38  41]

[l,u]=lu(a)

a =

    47    24    22

    11    44     0

    30    38    41

l =

    1.0000         0         0

    0.2340    1.0000         0

    0.6383    0.5909    1.0000

u =

   47.0000   24.0000   22.0000

         0   38.3830   -5.1489

         0         0   30.0000

LU     LU factorization.

[L,U] = LU(X) stores an upper triangular matrix in U and a "psychologically lower triangular matrix" (i.e. a product of lower triangular and permutation matrices) in L, so that X = L*U. X can be rectangular.

[L,U,P] = LU(X) returns unit lower triangular matrix L, upper triangular matrix U, and permutation matrix P so that  P*X = L*U.

3. QR分解(Orthogonal-triangular decomposition).

函式呼叫格式:[q,r]=qr(a), q代表正規正交矩陣,r代表三角形矩陣。原始陣a不必一定是方陣。如果矩陣a是m×n階的,則矩陣q是m×m階的,矩陣r是m×n階的。

例:QR分解.

A=[22  46  20  20; 30  36  46  44;39  8  45  2];

[q,r]=qr(A)

q =

   -0.4082   -0.7209   -0.5601

   -0.5566   -0.2898    0.7786

   -0.7236    0.6296   -0.2829

r =

  -53.8981  -44.6027  -66.3289  -34.1014

         0  -38.5564    0.5823  -25.9097

         0         0   11.8800   22.4896

QR     Orthogonal-triangular decomposition.

[Q,R] = QR(A) produces an upper triangular matrix R of the same

    dimension as A and a unitary matrix Q so that A = Q*R.

[Q,R,E] = QR(A) produces a permutation matrix E, an upper

    triangular R and a unitary Q so that A*E = Q*R.  The column

    permutation E is chosen so that abs(diag(R)) is decreasing.

[Q,R] = QR(A,0) produces the "economy size" decomposition. If A is m-by-n with m > n, then only the first n columns of Q are computed.

4. 特徵值與特徵向量(Eigenvalues and eigenvectors).

MATLAB中使用函式eig計算特徵值和 特徵向量,有兩種呼叫方法:

*e=eig(a), 其中e是包含特徵值的向量;

*[v,d]=eig(a), 其中v是一個與a相同的n×n階矩陣,它的每一列是矩陣a的一個特徵值所對應的特徵向量,d為對角陣,其對角元素即為矩陣a的特徵值。

例:計算特徵值和特徵向量。

a=[34  25  15; 18  35  9; 41  21  9]

e=eig(a)

[v,d]=eig(a)

a =

    34    25    15

    18    35     9

    41    21     9

e =

   68.5066

   15.5122

   -6.0187

v =

   -0.6227   -0.4409   -0.3105

   -0.4969    0.6786   -0.0717

   -0.6044   -0.5875    0.9479

d =

   68.5066         0         0

         0   15.5122         0

         0         0   -6.0187

EIG    Eigenvalues and eigenvectors.

E = EIG(X) is a vector containing the eigenvalues of a square matrix X.

[V,D] = EIG(X) produces a diagonal matrix D of eigenvalues and a full matrix V whose columns are the corresponding eigenvectors so that X*V = V*D.

[V,D] = EIG(X,'nobalance') performs the computation with balancing

    disabled, which sometimes gives more accurate results for certain

    problems with unusual scaling. If X is symmetric, EIG(X,'nobalance')

    is ignored since X is already balanced.

5. 奇異值分解.( Singular value decomposition).

如存在兩個向量u,v及一常數c,使得矩陣A滿足:Av=cu,  A’u=cv

稱c為奇異值,稱u,v為奇異向量。

  將奇異值寫成對角方陣∑,而相對應的奇異向量作為列向量則可寫成兩個正交矩陣U,V,使得: AV=U∑, A‘U=V∑  因為U,V正交,所以可得奇異值表示式:

 A=U∑V’。

一個m行n列的矩陣A經奇異值分解,可求得m行m列的U, m行n列的矩陣∑和n行n列的矩陣V.。

奇異值分解用svd函式實現,呼叫格式為;

[u,s,v]=svd(a)  

SVD    Singular value decomposition.

[U,S,V] = SVD(X) produces a diagonal matrix S, of the same dimension as X and with nonnegative diagonal elements in decreasing order, and unitary matrices U and V so that X = U*S*V'.

S = SVD(X) returns a vector containing the singular values.

[U,S,V] = SVD(X,0) produces the "economy size" decomposition. If X is m-by-n with m > n, then only the first n columns of U are computed and S is n-by-n.

例: 奇異值分解。

a=[8  5; 7  3;4  6];

[u,s,v]=svd(a)             % s為奇異值對角方陣

u =

   -0.6841   -0.1826   -0.7061

   -0.5407   -0.5228    0.6591

   -0.4895    0.8327    0.2589

s =

   13.7649         0

         0    3.0865

         0         0

v =

   -0.8148   -0.5797

   -0.5797    0.8148