WelcomeBasicsPlots and GUIApplicationsOther
|
Matrix
decomposition
A matrix
decomposition is a
factorization of a matrix into some canonical form.
A canonical
form (often called normal or
standard form) of an object is a standard way of
presenting that object.
There are many
different decompositions; each one is used among a
particular
class of problems.
Matlab includes several functions for matrix decomposition
or factorization.
LU
decomposition: the name of the built-in function is 'lu'. To get the LU
factorization of a square matrix M,
type the command [L,U] =
lu(M).
Matlab returns a lower
triangular matrix L
and an upper triangular
matrix U
such that L*U = M.
Example:
Type
M = [2 3
4 5
3 2 6 1
2 3 1 7
9 8 0 2];
[l, u] = lu(M)
l*u
Matlab answer is:
l =
0.2222
1.0000
0.4583 1.0000
0.3333 -0.5455
1.0000
0
0.2222
1.0000
0
0
1.0000
0
0
0
u =
9.0000
8.0000
0 2.0000
0 1.2222
1.0000 6.5556
0
0 6.5455
3.9091
0
0
0 -3.7917
ans =
2.0000
3.0000
4.0000 5.0000
3.0000
2.0000
6.0000 1.0000
2.0000
3.0000
1.0000 7.0000
9.0000
8.0000
0 2.0000
QR
factorization: the name of the appropriate built-in
function for this purpose is 'qr'.
Typing the command [Q,
R]
= qr(M) returns an orthogonal
matrix Q
and an upper triangular
matrix R
such that Q*R = M.
Example (assuming
the same matrix M as
above):
Type
[q, r] = qr(M)
q*r
and the fast Matlab answer is:
q =
-0.2020 0.6359
-0.4469 -0.5959
-0.3030 -0.4127
-0.8144 0.2731
-0.2020
0.6359
0.0027 0.7449
-0.9091 -0.1450
0.3702 -0.1241
r =
-9.8995 -9.0914
-2.8284 -4.5457
0 1.8295
0.7028 6.9274
0
0 -6.6713 -2.2896
0
0
0 2.2595
ans =
2.0000
3.0000
4.0000 5.0000
3.0000
2.0000
6.0000 1.0000
2.0000
3.0000
1.0000 7.0000
9.0000 8.0000
-0.0000 2.0000
Cholesky
decomposition: if you have a positive definite matrix A, you
can factorize the matrix with the built-in function 'chol'. The command R = chol(A);
produces an upper
triangular matrix R
such that R'*R = A for a positive definite A.
This is a brief reminder of what a positive definite matrix is:
An n by n matrix M
is positive definite if
xT Mx > 0 for all x
<> 0 and
xT Mx = 0 implies x
= 0
If matrix M
is symmetric, diagonally dominant, and has positive diagonal elements,
then M
is positive definite
If matrix M
is positive definite, then M
is diagonally dominant and has positive diagonal elements.
Example:
Type
M =
[1
1
1 1
1
2
3 4
1
3
6 10
1
4 10 20];
r = chol(M)
r'*r
and the Matlab answer is:
r =
1
1
1 1
0
1
2 3
0
0
1 3
0
0
0 1
ans =
1
1
1 1
1
2
3 4
1
3
6 10
1
4 10 20
Singular
value decomposition (svd): this is another type of matrix
decomposition and the name of the built-in
function is svd.
Typing [U,S,V] = svd(M);
produces a diagonal matrix S,
of the same dimension as M
and with nonnegative diagonal elements in decreasing order, and unitary
matrices U
and V
so that M = U*S*V'.
Example
(considering the same matrix M as above):
Type
[u, s, v] = svd(M)
u*s*v'
and you get:
u =
-0.0602 -0.5304
0.7873 -0.3087
-0.2012 -0.6403
-0.1632 0.7231
-0.4581 -0.3918
-0.5321 -0.5946
-0.8638
0.3939
0.2654 0.1684
s =
26.3047
0
0
0
0
2.2034
0
0
0
0
0.4538
0
0
0
0 0.0380
v =
-0.0602 -0.5304
0.7873 -0.3087
-0.2012 -0.6403
-0.1632 0.7231
-0.4581 -0.3918
-0.5321 -0.5946
-0.8638
0.3939
0.2654 0.1684
ans =
1.0000
1.0000
1.0000 1.0000
1.0000
2.0000
3.0000 4.0000
1.0000
3.0000 6.0000 10.0000
1.0000 4.0000
10.0000 20.0000
From
'Matrix
Decomposition' to home
From
'Matrix
Decomposition' to 'Matlab Cookbook I'
Table
of Contents
|
|
|