The section introduces the functions used in linear algebra and solving equations.
Description
Computes the inverse of a matrix.
Used in FDTD and FDE.
inv( A ) computes the inverse of A. The inv function, because it uses the solve function, uses a symmetric/hermitian solver if the coefficient matrix is symmetric/hermitian.
Syntax
| Code | Function |
|---|---|
out = inv(P); |
Computes the inverse of a matrix P. |
See also
pinv
Description
Computes the Moore-Penrose pseudoinverse.
Used in FDTD and FDE.
Syntax
| Code | Fucntion |
|---|---|
pinv(A); |
Computes the Moore-Penrose pseudoinverse. |
pinv(A, tolerance); |
Computes the Moore-Penrose pseudoinverse according to the tolerance setting. If a singular value of A is smaller than tolerance, it will be treated as 0. |
See also
inv
Description
Computes the trace of a matrix.
Used in FDTD and FDE.
Syntax
| Code | Fucntion |
|---|---|
out = trace( A ); |
Computes the trace of a matrix A. |
See also
diag
Description
Condition number.
Used in FDTD and FDE.
rcond computes an estimate of the condition number of the input matrix, A. rcond() uses the LAPACK routines DGECON, or ZGECON. Probably the most published way to compute the condition of a matrix is: Kcond = ||A|| * ||inv(A)||. Another method is to use the 1st and last singular values of A, Kcond=sigma(1)/sigma(n); rcond computes an ESTIMATE of the condition number without computing all of the columns of inv(A). For more information see the LAPACK User's Guide.
Syntax
| Code | Function |
|---|---|
C=rcond(A); |
Computes an estimate of the condition number of the input matrix A. |
Description
Matrix determinant.
Used in FDTD and FDE.
det computes the determinant of the matrix argument. det uses the LAPACK functions to factor the input, and the LINPACK algorithm to calculate the determinant.
Syntax
| Code | Function |
|---|---|
D=det(A); |
Computes the determinant of the matrix A. |
Example
a=[1 , 2 , 4;
7, 4 , 8;
2 , 3 , 9];
d=det(a)
Result:
d =
-30
Description
Rank of matrix.
Used in FDTD and FDE.
Syntax
| Code | Function |
|---|---|
k=rank(A); |
Returns the rank of matrix A. |
k=rank(A,tol); |
Specifies a different tolerance to use in the rank computation. The rank is computed as the number of singular values of A that are larger than tol. |
Example
a=[1 , 2 , 4;
7, 4 , 8;
2 , 3 , 9];
k=rank(a)
Result:
k =
3
Description
Returns the lower triangular part of A.
Used in FDTD and FDE.
Syntax
| Code | Fucntion |
|---|---|
out = tril( A ); |
Returns the lower triangular part of A. |
out = tril( A, K ); |
Returns the elements on and below the K-th diagonal of A. K = 0: main diagonal; K > 0: above the main diag; K < 0: below the main diag. |
See also
triu
Description
Returns the upper triangular part of A.
Used in FDTD and FDE.
Syntax
| Code | Fucntion |
|---|---|
out = triu( A ); |
Returns the upper triangular part of A. |
out = triu(x; k); |
Returns the elements on and above the k-th diagonal of A. K = 0: main diagonal; K > 0: above the main diag; K < 0: below the main diag. |
See also
tril
Description
symm(A) is the symmetric (Hermitian) part of A, (A+A')/2. It is the nearest symmetric (Hermitian) matrix to A in both the 2- and the Frobenius norms.
Used in FDTD and FDE.
Syntax
| Code | Fucntion |
|---|---|
ret = symm ( A ) |
Returns the symmetric part of a matrix. |
Example
A = [1 + 2i, 2 + 5i;...
3 + 7i, 4 + 1i ]
A_symm = symm(A)
# A_symm is a Hermitian matrix
D = A_symm - conj(A_symm.') # or D = A_symm - A_symm'
Result:
A =
1 + 2i 2 + 5i
3 + 7i 4 + 1i
A_symm =
1 + 0i 2.5 - 1i
2.5 + 1i 4 + 0i
D =
0 + 0i 0 + 0i
0 + 0i 0 + 0i
Description
Rearranges dimensions of N-D array.
Used in FDTD and FDE.
This function can rearrange dimensions of a matrix according to the specified order, which can be seen as the generalization of transposition. All the elements of the input Order must be unique, real, positive, integer values.
If the input Order is [k, m, n, ... ], the size of the output matrix B will be k * m * n * ... .
And the ith dimension of the output matrix B is the Order(i)th dimension of the input matrix A .
Syntax
| Code | Fucntion |
|---|---|
B = permute(A, order); |
Rearranges dimensions of N-D array. |
Example
# create matrix A
A = [1, 2, 3;...
-2, 5, -3 ];
# use permute to transpose matrix A
# the 1st dimension of B is the 2nd (Order(1)) dimension of A
# the 2nd dimension of B is the 1st (Order(2)) dimension of B
Order = [2, 1];
B = permute(A, Order)
Result:
A =
1 2 3
-2 5 -3
B =
1 -2
2 5
3 -3
Description
Converts full (dense) storage to sparse storage.
Used in FDTD and FDE.
sparse converts its argument from a dense storage format to the sparse storage format. If the argument is already sparse, then it is condensed (any non-zeros are removed). The sparse storage format is commonly referred to as sparse row-wise storage. Only the non-zero elements of the matrix are stored in a row-wise fashion. Row-wise storage is used for several reasons:
Certain operations on sparse matrices will return dense matrices. For instance, the cosine operation on a sparse matrix will create a dense matrix with ones where there used to be zeros.
Sparse matrices are printed differently than full, or dense matrices. Only the non-zero elements are printed, along with their row and column values.
Syntax
| Code | Function |
|---|---|
out = sparse( A ); |
Converts full (dense) storage to sparse storage. |
Example
a = [0, 1, 0;
2, 0, 0;
0, 0, 3];
s = sparse(a)
Result:
s =
(1, 2) 1
(2, 1) 2
(3, 3) 3
See also
spconvert, full
Description
Converts a full column matrix to sparse storage.
Used in FDTD and FDE.
spconvert converts its argument to, or from, the sparse storage format. If the argument is a 3 (or 4) column full matrix, the argument is converted to sparse storage format. The 1st two columns are taken as the row and column indices for the elements in the third column. The rows of the input matrix do not have to be in any particular order. If there are duplicate elements (same row and column number), then they are summed.
If the argument is a sparse matrix, then it is converted to a full matrix with 3 columns. The first two columns are the row and column indices of each non-zero element, and the third column contains the corresponding element values (columns 3 and 4 if the matrix is complex).
Syntax
| Code | Function |
|---|---|
out = spconvert ( A ); |
Converts a full column matrix to sparse storage. |
Example
Creates a sparse matrix of zeros with 1000 rows, and 1000 columns.
s = spconvert([ 1000, 1000, 0 ])
show(s);
Result:
s =
[all zeros]
nr : 1000
nc : 1000
n : 1e+06
nnz : 0
class : num
type : real
storage : sparse
See also
sparse, full
Description
Converts sparse storage to full (dense) storage.
Used in FDTD and FDE.
full converts its argument from the sparse storage format to the full, or dense, storage format.
Syntax
| Code | Fucntion |
|---|---|
out = full( A ); |
Converts its argument from the sparse storage format to the full, or dense, storage format. |
Example
d = [1, 1, 10; 2, 4, 20; 3, 1, 12; 5, 2, 13; 1, 4, 3]
s = spconvert(d)
f = full(s)
Result:
d =
1 1 10
2 4 20
3 1 12
5 2 13
1 4 3
s =
(1, 1) 10
(1, 4) 3
(2, 4) 20
(3, 1) 12
(5, 2) 13
f =
10 0 0 3
0 0 0 20
12 0 0 0
0 0 0 0
0 13 0 0
See also
sparse, spconvert
Description
Constructs diagonal matrix using input argument.
Used in FDTD and FDE.
If the 1st argument A is a 1xN matrix, constructs a diagonal matrix from the input. Optionally if K (scalar) is specified then create a matrix with the vector as the Kth diagonal.
K = 0, the elements of input are arranged on the main diagonal.
K < 0, the elements of input are arranged below the main diagonal.
K > 0, the elements of input are arranged above the main diagonal.
If the 1st argument is a MxN matrix, constructs a 1xN matrix from the diagonal elements of the input matrix. Optionally if K is specified return the vector from the Kth diagonal of the input matrix.
K = 0, the elements of the newly constructed vector are from the main diagonal of the input.
K < 0, the elements of the newly constructed vector are from the diagonal below the main diagonal of the input.
K > 0, the elements of the newly constructed vector are from the diagonal above the main diagonal of the input.
Syntax
| Code | Function |
|---|---|
out = diag( A ); |
If the 1st argument, A is a 1xN matrix, constructs a diagonal matrix from the input. If the 1st argument is a MxN matrix, constructs a 1xN matrix from the diagonal elements of the input matrix. |
out = diag( A, K ); |
If the 1st argument, A is a 1xN matrix, constructs a diagonal matrix from the input with the vector as the Kth diagonal. If the 1st argument is a MxN matrix, constructs a 1xN matrix from the diagonal elements of the input matrix from the Kth diagonal of the input matrix. |
Example
# create matrix A
A = [1, 2, 3 ];
# use A to construct a new matrix
# and the elements of A are arranged on the main diagonal
B_onMainDiag = diag(A, 0)
# use A to construct a new matrix and
# the elements of A are arranged on the first diagonal above the main diagonal
B_aboveMainDialog = diag(A, 1)
# use A to construct a new matrix and
# the elements of A are arranged on the second diagonal below the main diagonal
B_belowMainDialog = diag(A, -2)
Result:
B_onMainDiag =
1 0 0
0 2 0
0 0 3
B_aboveMainDialog =
0 1 0 0
0 0 2 0
0 0 0 3
0 0 0 0
B_belowMainDialog =
0 0 0 0 0
0 0 0 0 0
1 0 0 0 0
0 2 0 0 0
0 0 3 0 0
See also
tril, triu
Description
Factors a square matrix.
Used in FDTD and FDE.
The factor function computes the LU factorization of the input matrix A. factor returns 3 elements.
Syntax
| Code | Function |
|---|---|
[LU, Pvt, Rcond] = factor(A); |
If A is a general matrix, returns a matrix LU containing the LU factors, a vector Pvt containing the pivot indices, and the inverse of the condition estimate Rcond. |
[Ldl, Pvt, Rcond] = factor(A); |
If A is a symmetric matrix, returns a matrix Ldl containing the block diagonal matrix D, and the multipliers used to obtain L. The Pvt and Rcond are the same as above. |
The user can override factor's choice of solution type with the optional argument 'TYPE'.
| Code | Function |
|---|---|
[LU, Pvt, Rcond]=factor(A, 'TYPE'); |
'TYPE' can be 'g' or 'G', means the general solution is used. |
[Ldl, Pvt, Rcond]=factor(A, 'TYPE'); |
'TYPE' can be 's' or 'S', means the symmetric solution is used. |
factor utilizes the LAPACK subroutines DSYTRF, DSYCON or ZHETRF, ZHECON.
factor returns the results in the above format, so that they may be conveniently used with backsub for repetitive solutions. The user-function lu will separate the results from factor into separate L and U matrices.
Example
A = [10, -7, 0;
-3, 2, 6;
5, -1, 5];
[LU, Pvt, RCond] = factor(A);
[L, U, P] = lu(A);
# LU is combined from matrix L and matrix U.
L
U
LU
Result:
L =
1 0 0
0.5 1 0
-0.3 -0.04 1
U =
10 -7 0
0 2.5 5
0 0 6.2
LU =
10 -7 0
0.5 2.5 5
-0.3 -0.04 6.2
Description
Singular Value Decomposition.
Used in FDTD and FDE.
The output is a struct containing the three afore-mentioned objects (u, sigma, v). Various forms of the right and left singular vectors can be computed, depending upon the value of the second, optional, string argument.
Syntax
| Code | Function |
|---|---|
[u,sigma,v]=svd(A) |
Computes the singular values of the input matrix A, along with the right and left singular vectors in their minimal form. Where, A = U * sigma* V'. |
[u, sigma, v]=svd(A, 'TYPE'); |
Computes the singular vectors in designated form. 'TYPE' can be 'S' (a minimal version of U, and V are returned, this is the default), 'A' (the full U, and V are returned) or 'N' (U and V are not computed, empty U and V are returned). |
Example
A = [0.96, 1.72; 2.28, 0.96];
[u,sigma,v] = svd(A)
Result:
u =
-0.6 -0.8
-0.8 0.6
sigma =
3 0
0 1
v =
-0.8 0.6
-0.6 -0.8
Description
Finds the Hessenberg form of a matrix.
Used in FDTD and FDE.
Produces a unitary matrix P and a Hessenberg matrix H so that:
Syntax
| Code | Function |
|---|---|
[P,H]=hess(A); |
Produces a unitary matrix P and a Hessenberg matrix H. |
Example
a = [2,3,1;45,3,5;8,9,6]
[p,h] = hess(a)
p*h*(p.')
p*p.'
Result:
a =
2 3 1
45 3 5
8 9 6
p =
1 0 0
0 -0.984562508 -0.175033335
0 -0.175033335 0.984562508
h =
2 -3.12872086 0.459462504
-45.7055795 5.50454763 -5.08808042
0 -9.08808042 3.49545237
val =
2 3 1
45 3 5
8 9 6
val =
1 0 0
0 1 0
0 0 1
Description
Balances a matrix for equal row and column norms.
Used in FDTD and FDE.
balance uses the LAPACK subroutines DGEBAL and ZGEBAL to balance the input matrix so that the row and column norms are approximately equal. balance returns t and ab.
Syntax
| Code | Function |
|---|---|
[t,ab]=balance(A); |
Balances a matrix for equal row and column norms. |
Example
a =[ 0, 0, 1, 0;0,0,0,1;11,10,0,0;10,11,0,0]
[t,ab] = balance(a)
inv(t)*a*t - ab
Result:
a =
0 0 1 0
0 0 0 1
11 10 0 0
10 11 0 0
t =
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
ab =
0 0 1 0
0 0 0 1
11 10 0 0
10 11 0 0
val =
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
Only square matrices are allowed.
Description
QR decomposition.
Used in FDTD and FDE.
Syntax
| Code | Function |
|---|---|
[Q,R]=qr(A); |
Computes the QR decomposition of the input matrix A such that: A=Q * R. |
[Q,R,P]=qr(A,'p'); |
Produces unitary Q, upper triangular R and a permutation matrix P so that A * P = Q * R. |
Example
a=[1, 2, 1, 1; 1, 1, 1, 1; 11, 10, 1, 1; 10, 11, 1, 1]
[q,r] = qr(a);
q*r
Result:
a =
1 2 1 1
1 1 1 1
11 10 1 1
10 11 1 1
val =
1 2 1 1
1 1 1 1
11 10 1 1
10 11 1 1
Description
Schur decomposition.
Used in FDTD and FDE.
The schur function returns t and z, such that:
Syntax
| Code | Function |
|---|---|
[z,t]=schur(A); |
If A is real, the t is in "Real-Schur" form. The "Real-Schur" form is block upper-triangular with 1-by-1 and 2-by-2 diagonal blocks; each 2-by-2 diagonal block has its diagonal elements equal and its off-diagonal elements of opposite sign. The eigenvalues of the 2-by-2 block: [a, b; c, a] are: a +/- sqrt(b * c). |
Example
a=[1, 2, 1, 1; 1, 1, 1, 1; 11, 10, 1, 1; 10, 11, 1, 1]
[z,t] = schur(a);
z * t * z.'
Result:
a =
1 2 1 1
1 1 1 1
11 10 1 1
10 11 1 1
val =
1 2 1 1
1 1 1 1
11 10 1 1
10 11 1 1
Description
Cholesky factorization, uses the LAPACK subroutine DPOTRF and ZPOTRF.
Used in FDTD and FDE.
Syntax
| Code | Function |
|---|---|
U=chol(A) |
Computes the Cholesky factorization of the input matrix. The input matrix must be real symmetric positive definite, or complex Hermitian positive definite. |
chol() produces an upper triangular matrix , where .
Example
a = [ 54, 36, 78
36, 29, 67
78, 67, 161 ]
u=chol(a);
u.' * u
Result:
a =
54 36 78
36 29 67
78 67 161
val =
54 36 78
36 29 67
78 67 161
Description
Computes the L and U factors of the matrix A.
Used in FDTD and FDE.
The function lu is a user-function that utilizes the built-in function factor. factor does the factorization using the LAPACK functions DGETRF/ZGETRF, and DGECON/ZGECON.
Syntax
| Code | Function |
|---|---|
[L, U, P] = lu (A) |
Computes the "LU" factors of the input matrix A. The input matrix must be square. lu() returns L, U, P. The factorization has the form: A = P'*L*U. |
Example
A = [17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9]
[L, U, P] = lu(A);
P.' * L * U
Result:
A =
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
val =
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
Description
Computes the eigenvectors and eigenvalues of the input matrix.
Used in FDTD and FDE.
Syntax
| Code | Function |
|---|---|
[vec, val]=eig(A); |
Returns val and vec which are the eigenvalues and eigenvectors of matrix A. eig checks for symmetry in A, and uses the appropriate solver. |
[vec, val]=eig(A, B); |
Computes the eigenvectors and eigenvalues of A and B. Where A * x=lambda * B * x. The eigenvalues and eigenvectors are returned in val and vec. eig checks for symmetry in A and B and uses the appropriate solver. Uses the LAPACK subroutines DSYEV/ZHEEV or DGEEV/ZGEEV. |
e=eig(A); |
Returns a column vector containing the eigenvalues of matrix A. |
e=eig(A, B); |
Returns a column vector containing the generalized eigenvalues of matrices A and B. |
Example
The generalized eigenvalue problem arises quite regularly in structures. From the second order differential equations describing a lumped mass system arise and , coefficient matrices representing the mass and stiffness of the various physical degrees of freedom. The equations are formulated as follows:
Which leads to the eigenvalue problem:
For a two degree of freedom system we might have:
m = eye(2,2);
k = [5,1;1,5];
[vec , val] = eig(k, m);
# Test the solution
k * vec[:,1]
val[1] * m * vec[:,1]
Result:
val =
-2.82842712
2.82842712
val =
-2.82842712
2.82842712
Show the properties of the solution.
# Properties of the solution
vec' * m * vec
vec' * k * vec
Result:
val =
1 0
0 1
val =
4 0
0 6
The eigenvalues and eigenvectors are sometimes obtained by converting the generalized problem into a standard eigenvalue problem (this is only feasible under certain conditions).
Description
Computes the matrix norm.
Used in FDTD and FDE.
Syntax
| Code | Function |
|---|---|
N=mnorm(A); |
Computes the 1-norm of the input matrix. |
N=mnorm(A,'TYPE' ); |
Computes the matrix norm. The input parameter 'TYPE' allows the user to specify the desired type of matrix norm with a string argument. The details about 'TYPE' can be seen below. |
The input parameter 'TYPE' that can be used:
M or m
Returns max(abs( A )).
1, O or o
Returns the 1-norm (default), the largest column max(sum(abs(A))).
2
Returns the matrix 2-norm (largest singular value).
I or i
Returns the infinity-norm, the largest row max(sum(abs(A'))).
F, f, E or e
Returns the Frobenius norm.
LAPACK subroutines DLANGE and ZLANGE are used to compute all norms, except the 2-norm.
Note: If 'TYPE' is Inf (the output from inf(), for example), then norm will compute the Infinity norm of the matrix A.
See also
vpnorm
Description
Computes the vector P norm.
Used in FDTD and FDE.
vpnorm computes the vector P-norm of V. The second argument is required, and specifies the value of P.
Syntax
| Code | Function |
|---|---|
out = vpnorm ( V , P ); |
vpnorm computes the vector P-norm of V. The second argument is required, and specifies the value of P. |
Example
# Cauchy Inequality
a = rand(3, 1);
b = rand(3, 1);
D_InEql = dot(a, b) - vpnorm(a, 2)*vpnorm(b, 2)
# There exists a constant t > 0 such that d_i= t * c_i, (i = 1,2, 3), so the inequality will be an equality.
c = rand(3, 1);
d = 2 * c;
D_Eql = dot(c, d) - vpnorm(c, 2)*vpnorm(d, 2)
Result:
D_InEql =
-0.212200821
D_Eql =
-4.4408921e-16
Description
Computes the matrix or vector norm.
Used in FDTD and FDE.
This function is a cover-function for the two builtin functions mnorm(), which computes matrix-norms, and vpnorm(), which computes vector P-norms.
Syntax
| Code | Function |
|---|---|
N=norm(A); |
Computes the 2-norm of the input vector. |
N=norm(A,B); |
Computes the matrix or vector norm. The second input parameter B allows the user to specify the desired type of matrix norm. The details about B can be seen below. |
If A is a matrix, valid B arguments are:
1
Returns max(sum(abs(A))).
2
Returns max(svd(A)).
inf
Returns max(sum(abs(A'))).
'fro'
Returns mnorm(A,'F').
If A is a vector(either row or column), valid B arguments are:
1
Returns sum(abs(A)).
2
Returns sum(abs(A)\.^2 )^(1/2).
p
Returns sum(abs(A)\.^p )^(1/p).
inf
Returns max(abs(A)).
- inf
Returns min(abs(A)).
'fro'
Returns sqrt(sum(diag(S * S'))).
LAPACK subroutines DLANGE and ZLANGE are used to compute all norms, except the 2-norm.
Note: If B is inf (the output from inf(), for example), then norm will compute the infinity norm of the matrix A.
Example
Example 1:
X = [2 0 1;-1 1 0;-3 3 0;-3 3 0];
n = norm(X)
n = norm(X,1)
n = norm(X,2)
n = norm(X,inf)
# sparse matrix
X = diag(ones(1,5));
n = norm(X,'fro')
Result 1:
n =
6.33730681
n =
9
n =
6.33730681
n =
6
n =
2.23606798
Example 2:
X = sin([2 0 1 -1 1 0]);
n = norm(X)
n = norm(X,1)
n = norm(X,2)
n = norm(X,5)
n = norm(X,inf)
n = norm(X,-inf)
n = norm(X,'fro')
Result 2:
n =
1.71785973
n =
3.43371038
n =
1.71785973
n =
1.13544885
n =
0.909297427
n =
0
n =
1.71785973
See also
mnorm
Description
Solves linear equations.
Used in FDTD and FDE.
solve solves a system of linear equations:
A is the coefficient matrix. B is the right hand side. X is the solution.
solve uses the LAPACK subroutines DGETRF, and ZGETRF if A is general. solve uses the LAPACK subroutines DSYTRF, and ZHETRF if A is symmetric.
Syntax
| Code | Function |
|---|---|
X=solve(A,B); |
Solves a system of linear equations:. B can contain multiple right-hand-sides, one in each column. solve returns a matrix of the solutions, X, where each column of the solution corresponds to a column of B. |
X=solve(A, B, 'TYPE'); |
Solves a system of linear equations. The third and optional argument 'TYPE' allows the user to use different solve mode, the details can be seen below. |
The third and optional argument 'TYPE' allows the user to override the symmetry check, and force the solve to use either the general or the symmetric solver:
Example
A = [1, 0;1, 1]
B = [2; 3]
X = solve(A, B)
Pr = A * X
Result:
A =
1 0
1 1
B =
2
3
X =
2
1
Pr =
2
3
Description
Solves the Sylvester matrix equation.
Used in FDTD and FDE.
Syntax
| Code | Function |
|---|---|
X=sylv(A,B,C); |
Solves the Sylvester equation . The method forms the single vector equation using Kronecker products. |
Description
Converts roots to polynomial.
Used in FDTD and FDE.
Syntax
| Code | Function |
|---|---|
p = poly(V); |
When V is a vector, returns the coefficients of a polynomial, where each root of the polynomial is an element of V. |
p = poly(A); |
When A is a n-order square matrix, returns N + 1 coefficients of characteristic polynomial of the matrix, . |
Example
Example 1:
# example 1
A = [1 2 3; 4 5 6; 7 8 0];
p = poly(A)
Result:
p =
1 -6 -72 -27
Example 2:
# example 2
A = [1 8 -10; -4 2 4; -5 2 8];
p = poly(A);
e = eig(A);
deg = length(p);
r = e(1);
y = 0;
for k = 1 : deg
y = y + p(deg + 1 - k) * (r^(k-1));
end
y
Result:
y =
-1.136868377e-12 + 0i
Description
Solves the general form of the Lyapunov (Sylvester) equation.
Used in FDTD and FDE.
lyap solves the general form of the Lyapunov (Sylvester) equation:
To solve the special form of the Lyapunov equation:
We can use this method: lyap (A,A',C).
Syntax
| Code | Fucntion |
|---|---|
out = lyap ( A , B , C ); |
Solves the general form of the Lyapunov (Sylvester) equation. |
See also
schur, sylv
Description
Solution of by backsubstitution.
Used in FDTD and FDE.
The backsub function computes the solution to the set of linear equations described by:
The 1st argument to backsub is a struct converted from the result of factor(A). The second argument to backsub is the matrix B. The matrix B can contain multiple right hand sides.
backsub returns a matrix X which contains the solution(s) to the aforementioned equations.
backsub utilizes the LAPACK subroutines DGETRS or ZGETRS if the input struct contains LU factors or LAPACK subroutins DSYTRS or ZHETRS if input struct contains the LDL factors.
Syntax
| Code | Function |
|---|---|
out = backsub( A_F, B ); |
Returns the solution of by backsubstitution. The input A_F is a struct converted from the output of factor(A). If A is a general matrix, the input struct must have three fields named "lu", "pvt", and "rcond". The value of fields "lu", "pvt", and "rcond" can be generated by factor function. If A is a symmetric matrix, the input struct must have three fields named "ldl", "pvt", and "rcond". The value of fields "ldl", "pvt", and "rcond" can be generated by factor function. |
Example
A = [1, 2, 3; 4, 5, 6; 7, 8, 0];
B = [1; 2; 3];
[Lu, Pvt, Rcond] = factor(A);
F = struct('lu': Lu, 'pvt': Pvt, 'rcond': Rcond);
X = backsub(F, B)
# verify the matrix X is the solution of matrix equation A * X = B
D = A * X - B
Result:
X =
-0.333333333
0.666666667
0
D =
-1.11022302e-16
0
0
A = [1, 2, 0; 2, 5, 6; 0, 6, 9]
B = [5; 30; 39];
[Ldl, Pvt, Rcond] = factor(A);
F = struct("ldl": Ldl, "pvt": Pvt, "rcond": Rcond);
X = backsub(F, B)
# verify the matrix X is the solution of matrix equation A * X = B
D = A * X - B
Result:
X =
1
2
3
D =
0
0
0
See also
factor, inv, lu, solve
Description
Integrates Ordinary Differential Equations.
Used in FDTD and FDE.
ode integrates a system of N first order ordinary differential equations of the form:
y(i) given at t.
The arguments to ode are:
function xp = vdpol(t, x)
xp = zeros(2, 1);
xp(1) = x(1) * (1 - x(2)^2) - x(2);
xp(2) = x(1);
end;
ystart
The initial values of y, y(tstart).
tstart
The initial value of the independent variable.
tend
The final value of the independent variable.
dtout
The output interval. The vector y will be saved at tstart, increments of tstart + dtout, and tend. If dtout is not specified, then the default is to store output at 101 values of the independent variable.
relerr
The relative error tolerance. Default value is 1e-6.
abserr
The absolute error tolerance. At each step, ode requires that:
For each component of the local error and solution vectors. The default value is 1e-6.
ode when the integration is complete.The Fortran source code for ode is completely explained and documented in the text, 'Computer Solution of Ordinary Differential Equations: The Initial Value Problem' by L. F. Shampine and M. K. Gordon.
Syntax
| Code | Function |
|---|---|
out = ode( rhsf, tstart, tend, ystart, dtout, relerr, abserr, uout ); |
Integrates a system of N first order ordinary differential equations. |
See also
backsub, filter