Eigenvalues of Symmetric Tridiagonal Matrices

9.5 Eigenvalues of Symmetric Tridiagonal Matrices

Sturm Sequence

In principle, the eigenvalues of a matrix A can be determined by finding the roots of the characteristic equation |A − λI| = 0. This method is impractical for large matrices

since the evaluation of the determinant involves n 3 / 3 multiplications. However, if the matrix is tridiagonal (we also assume it to be symmetric), its characteristic polynomial

c 3 ··· P n (λ) = |A−λI| =

can be computed with only 3(n − 1) multiplications using the following sequence of operations:

i = 2, 3, . . . , n The polynomials P 0 (λ), P 1 (λ), . . . , P n (λ) form a Sturm sequence that has the fol-

i−1 2 (λ) − c

i−1 P i−2 (λ),

lowing property: r The number of sign changes in the sequence P 0 (a), P 1 (a), . . . , P n (a) is equal to the

number of roots of P n (λ) that are smaller than a. If a member P i (a) of the sequence is zero, its sign is to be taken opposite to that of P i−1 (a).

As we see shortly, Sturm sequence property makes it relatively easy to bracket the eigenvalues of a tridiagonal matrix.

Given the diagonals c and d of A = [c\d\c], and the value of λ, this function returns the Sturm sequence P 0 (λ), P 1 (λ), . . . , P n (λ). Note that P n (λ) = |A − λI|.

function p = sturmSeq(c,d,lambda) % Returns Sturm sequence p associated with % the tridiagonal matrix A = [c\d\c] and lambda. % USAGE: p = sturmSeq(c,d,lambda). % Note that |

A - lambda*I | = p(n).

n = length(d) + 1; p = ones(n,1); p(2) = d(1) - lambda; for i = 2:n-1

p(i+1) = (d(i) - lambda)*p(i) - (c(i-1)ˆ2 )*p(i-1);

end

This function counts the number of sign changes in the Sturm sequence and returns the number of eigenvalues of the matrix A = [c\d\c] that are smaller than λ.

function num _ eVals = count _ eVals(c,d,lambda) % Counts eigenvalues smaller than lambda of matrix % A = [c\d\c]. Uses the Sturm sequence. % USAGE: num _ eVals = count _ eVals(c,d,lambda).

p = sturmSeq(c,d,lambda); n = length(p); oldSign = 1; num _ eVals = 0; for i = 2:n

pSign = sign(p(i)); if pSign == 0; pSign = -oldSign; end if pSign*oldSign < 0

num _ eVals = num _ eVals + 1; end oldSign = pSign;

end

EXAMPLE 9.9 Use the Sturm sequence property to show that the smallest eigenvalue of A is in the

interval (0.25, 0.5), where

2 Solution Taking λ = 0.5, we have d i − λ = 1.5 and c 2 i−1 = 1 and the Sturm sequence

in Eqs. (9.49) becomes

P 0 (0.5) = 1 P 1 (0.5) = 1.5 P 2 (0.5) = 1.5(1.5) − 1 = 1.25 P 3 (0.5) = 1.5(1.25) − 1.5 = 0.375 P 4 (0.5) = 1.5(0.375) − 1.25 = −0.6875

Since the sequence contains one sign change, there exists one eigenvalue smaller than 0.5.

Repeating the process with λ = 0.25 (d i − λ = 1.75, c 2 i−1 = 1), we get

P 0 (0.25) = 1 P 1 (0.25) = 1.75 P 2 (0.25) = 1.75(1.75) − 1 = 2.0625 P 3 (0.25) = 1.75(2.0625) − 1.75 = 1.8594 P 4 (0.25) = 1.75(1.8594) − 2.0625 = 1.1915

There are no sign changes in the sequence, so that all the eigenvalues are greater than

0.25. We thus conclude that 0.25 < λ 1 < 0.5.

Gerschgorin’s Theorem

Gerschgorin’s theorem is useful in determining the global bounds on the eigenvalues of an n × n matrix A. The term “global” means the bounds that enclose all the eigen-

values. We give here a simplified version of the theorem for a symmetric matrix. r If λ is an eigenvalue of A, then

a i −r i ≤λ≤a i +r i ,

i = 1, 2, . . . , n i = 1, 2, . . . , n

a i =A ii r i =

A ij (9.50)

j=1

It follows that the global bounds on the eigenvalues are

λ min ≥ min (a i −r i )

max ≤ max (a i i +r i ) (9.51)

The function gerschgorin returns the lower and the upper global bounds on the eigenvalues of a symmetric tridiagonal matrix A = [c\d\c].

function [eValMin,eValMax]= gerschgorin(c,d) % Evaluates the global bounds on eigenvalues % of A = [c\d\c]. % USAGE: [eValMin,eValMax]= gerschgorin(c,d).

n = length(d); eValMin = d(1) - abs(c(1)); eValMax = d(1) + abs(c(1)); for i = 2:n-1

eVal = d(i) - abs(c(i)) - abs(c(i-1)); if eVal < eValMin; eValMin = eVal; end eVal = d(i) + abs(c(i)) + abs(c(i-1)); if eVal > eValMax; eValMax = eVal; end

end eVal = d(n) - abs(c(n-1)); if eVal < eValMin; eValMin = eVal; end eVal = d(n) + abs(c(n-1)); if eVal > eValMax; eValMax = eVal; end

EXAMPLE 9.10 Use Gerschgorin’s theorem to determine the global bounds on the eigenvalues of the

matrix

A= ⎢

Solution Referring to Eqs. (9.50), we get

λ min ≥ min(a i −r i )=4−4=0 λ max ≤ max(a i +r i )=4+4=8

Bracketing Eigenvalues

The Sturm sequence property together with Gerschgorin’s theorem provides us con- venient tools for bracketing each eigenvalue of a symmetric tridiagonal matrix.

The function eValBrackets brackets the m smallest eigenvalues of a symmetric tridiagonal matrix A = [c\d\c]. It returns the sequence r 1 , r 2 ,..., r m+1 , where each

interval (r i , r i+1 ) contains exactly one eigenvalue. The algorithm first finds the global bounds on the eigenvalues by Gerschgorin’s theorem. The method of bisection in conjunction with the Sturm sequence property is then used to determine the upper

bounds on λ m ,λ m−1 ,...,λ 1 in that order.

function r = eValBrackets(c,d,m) % Brackets each of the m lowest eigenvalues of A = [c\d\c] % so that there is one eivenvalue in [r(i), r(i+1)]. % USAGE: r = eValBrackets(c,d,m).

[eValMin,eValMax]= gerschgorin(c,d); % Find global limits r = ones(m+1,1); r(1) = eValMin; % Search for eigenvalues in descending order for k = m:-1:1

% First bisection of interval (eValMin,eValMax) eVal = (eValMax + eValMin)/2;

h = (eValMax - eValMin)/2; for i = 1:100

% Find number of eigenvalues less than eVal num _ eVals = count _ eVals(c,d,eVal); % Bisect again & find the half containing eVal % Find number of eigenvalues less than eVal num _ eVals = count _ eVals(c,d,eVal); % Bisect again & find the half containing eVal

end % If eigenvalue located, change upper limit of % search and record result in { r } ValMax = eVal; r(k+1) = eVal;

end

EXAMPLE 9.11 Bracket each eigenvalue of the matrix in Example 9.10.

Solution In Example 9.10 we found that all the eigenvalues lie in (0, 8). We now bisect this interval and use the Sturm sequence to determine the number of eigenvalues in (0, 4). With λ = 4, the sequence is—see Eqs. (9.49)

P 0 (4) = 1 P 1 (4) = 4 − 4 = 0 P 2 (4) = (4 − 4)(0) − 2 2 (1) = −4

Since a zero value is assigned the sign opposite to that of the preceding member, the signs in this sequence are (+, −, −, −). The one sign change shows the presence of one eigenvalue in (0, 4).

Next we bisect the interval (4, 8) and compute the Sturm sequence with λ = 6:

P 0 (6) = 1 P 1 (6) = 4 − 6 = −2

P 2 (6) = (4 − 6)(−2) − 2 2 (1) = 0 P 3 (6) = (5 − 6)(0) − 2 2 (−2) = 8

In this sequence the signs are (+, −, +, +), indicating two eigenvalues in (0, 6).

Therefore

Computation of Eigenvalues

Once the desired eigenvalues are bracketed, they can be found by determining the roots of P n (λ) = 0 with bisection or Brent’s method.

The function eigenvals3 computes the m smallest eigenvalues of a symmetric tridiagonal matrix with the method of Brent.

function eVals = eigenvals3(C,D,m) % Computes the smallest m eigenvalues of A = [C\D\C]. % USAGE: eVals = eigenvals3(C,D,m). % C and D must be delared ’global’ in calling program.

eVals = zeros(m,1); r = eValBrackets(C,D,m); % Bracket eigenvalues for i=1:m

% Solve | A - eVal*I | for eVal by Brent’s method eVals(i) = brent(@func,r(i),r(i+1)); end

function f = func(eVal); % Returns |

A - eVal*I | (last element of Sturm seq.) global C D p = sturmSeq(C,D,eVal);

f = p(length(p));

EXAMPLE 9.12 Determine the three smallest eigenvalues of the 100 × 100 matrix

A= ⎥ ⎢ 0 −1 2 ···0 ⎥

Solution

% Example 9.12 (Eigenvals. of tridiagonal matrix) format short e global C D m = 3; n = 100;

D = ones(n,1)*2; C = -ones(n-1,1);

eigenvalues = eigenvals3(C,D,m)’

The result is

>> eigenvalues = 9.6744e-004

3.8688e-003

8.7013e-003

Computation of Eigenvectors

If the eigenvalues are known (approximate values will be good enough), the best means of computing the corresponding eigenvectors is the inverse power method with eigenvalue shifting. This method was discussed before, but the algorithm did not take advantage of banding. Here we present a version of the method written for symmetric tridiagonal matrices.

This function is very similar to invPower listed in Art. 9.3, but executes much faster since it exploits the tridiagonal structure of the matrix.

function [eVal,eVec] = invPower3(c,d,s,maxIter,tol) % Computes the eigenvalue of A =[c\d\c] closest to s and % the associated eigenvector by the inverse power method. % USAGE: [eVal,eVec] = invPower3(c,d,s,maxIter,tol). % maxIter = limit on number of iterations (default is 50). % tol = error tolerance (default is 1.0e-6).

if nargin < 5; tol = 1.0e-6; end if nargin < 4; maxIter = 50; end n = length(d);

e = c; d = d - s; % Apply shift to diag. terms of A [c,d,e] = LUdec3(c,d,e);

% Decompose A* = A - sI x = rand(n,1);

% Seed x with random numbers xMag = sqrt(dot(x,x)); x = x/xMag; % Normalize x % Seed x with random numbers xMag = sqrt(dot(x,x)); x = x/xMag; % Normalize x

% Save current x x = LUsol3(c,d,e,x);

% Solve A*x = xOld xMag = sqrt(dot(x,x)); x = x/xMag;

% Normalize x xSign = sign(dot(xOld,x));

% Detect sign change of x x = x*xSign; % Check for convergence if sqrt(dot(xOld - x,xOld - x)) < tol

eVal = s + xSign/xMag; eVec = x; return

end end error(’Too many iterations’)

EXAMPLE 9.13 Compute the 10th smallest eigenvalue of the matrix A given in Example 9.12.

Solution The following program extracts the m th eigenvalue of A by the inverse power method with eigenvalue shifting:

Example 9.13 (Eigenvals. of tridiagonal matrix) format short e m = 10 n = 100;

d = ones(n,1)*2; c = -ones(n-1,1); r = eValBrackets(c,d,m); s =(r(m) + r(m+1))/2; [eVal,eVec] = invPower3(c,d,s); mth _ eigenvalue = eVal

The result is

>> m = 10 mth _ eigenvalue = 9.5974e-002

EXAMPLE 9.14 Compute the three smallest eigenvalues and the corresponding eigenvectors of the matrix A in Example 9.5.

Solution

% Example 9.14 (Eigenvalue problem) global C D m = 3;

eVecMat = zeros(size(A,1),m); % Init. eigenvector matrix. A = householder(A);

% Tridiagonalize A. D = diag(A); C = diag(A,1);

% Extract diagonals of A. P = householderP(A);

% Compute tranf. matrix P. eVals = eigenvals3(C,D,m);

% Find lowest m eigenvals. for i = 1:m

% Compute corresponding s = eVals(i)*1.0000001;

eigenvectors by inverse [eVal,eVec] = invPower3(C,D,s); %

power method with eVecMat(:,i) = eVec;

eigenvalue shifting. end eVecMat = P*eVecMat;

% Eigenvectors of orig. A. eigenvalues = eVals’ eigenvectors = eVecMat

eigenvectors = -0.2673

PROBLEM SET 9.2

1. Use Gerschgorin’s theorem to determine global bounds on the eigenvalues of ⎡

(a) ⎢

A= ⎥

(b) B= ⎣ 2 5 3 ⎦

2. Use the Sturm sequence to show that ⎡

has one eigenvalue in the interval (2, 4).

3. Bracket each eigenvalue of ⎡

4. Bracket each eigenvalue of ⎡

6 ⎤ 1 0 A= ⎢ 1 8 2 ⎥

5. Bracket every eigenvalue of ⎡

6. Tridiagonalize the matrix ⎡

12 ⎤ 4 3 A= ⎢ ⎣ 4 9 3 ⎥ ⎦

3 3 15 with Householder’s reduction.

7. Use Householder’s reduction to transform the matrix ⎡

4 to tridiagonal form.

8. Compute all the eigenvalues of

A= ⎢

9. Find the smallest two eigenvalues of

10. Compute the three smallest eigenvalues of

3 −4 12 and the corresponding eigenvectors.

11. Find the two smallest eigenvalues of the 6 × 6 Hilbert matrix

Recall that this matrix is ill-conditioned.

12. Rewrite the function eValBrackets so that it will bracket the m largest eigenvalues of a tridiagonal matrix. Use this function to bracket the two largest eigenvalues of the Hilbert matrix in Prob. 11.

3m

2m

The differential equations of motion of the mass–spring system are k (−2u 1 +u 2 )=m¨ u 1

k(u 1 − 2u 2 +u 3 ) = 3m ¨ u 2 k(u 2 − 2u 3 ) = 2m ¨ u 3

where u i (t) is the displacement of mass i from its equilibrium position and k is the spring stiffness. Substituting u i (t) = y i sin ωt, we obtain the matrix eigenvalue problem

2 y 3 0 0 2 y 3 Determine the circular frequencies ω and the corresponding relative amplitudes

y i of vibration.

The figure shows n identical masses connected by springs of different stiffnesses. The equation governing free vibration of the system is Au = mω 2 u, where ω is the circular frequency and

Given the spring stiffness array k = k 1 k 2 ···k n , write a program that computes the N lowest eigenvalues λ = mω 2 and the corresponding eigenvectors. Run the program with N = 4 and

k= 400 400 400 0.2 400 400 200 kN/m Note that the system is weakly coupled, k 4 being small. Do the results make sense?

The differential equation of motion of the axially vibrating bar is

u ′′

where u(x, t) is the axial displacement, ρ represents the mass density and E is the modulus of elasticity. The boundary conditions are u(0, t) = u ′ (L, t) = 0. Letting u(x, t) = y(x) sin ωt, we obtain

E y(0) = y (L) = 0 The corresponding finite difference equations are ⎡

y n / 2 (a) If the standard form of these equations is Hz = λz, write down H and the

transformation matrix P in y = Pz. (b) Compute the lowest circular frequency of the bar with n = 10, 100 and 1000 utilizing the module inversePower3 . Note: the

√ analytical solution is ω 1 =π

E /ρ/ (2L).

1 2 n-1 n

The simply supported column is resting on an elastic foundation of stiffness k (N/m per meter length). An axial force P acts on the column. The differential equation and the boundary conditions for the lateral displacement u are

u(0) = u ′′ (0) = u(L) = u (L) = 0

Using the mesh shown, the finite difference approximation of these equations is (5 + α)u 1 − 4u 2 +u 3 = λ(2u 1 −u 2 )

−4u 1 + (6 + α)u 2 − 4u 3 +u 4 = λ(−u 1 + 2u 2 +u 3 ) u 1 − 4u 2 + (6 + α)u 3 − 4u 4 +u 5 = λ(−u 2 + 2u 3 −u 4 )

u n−3 − 4u n−2 + (6 + α)u n−1 − 4u n = λ(−u n−2 + 2u n−1 −u n ) u n−2 − 4u n−1 + (5 + α)u n = λ(−u n−1 + 2u n) where

kh 4 1 kL 4 Ph 2 1 PL 2

4 EI λ= EI (n + 1) = (n + 1) 2 EI Write a program that computes the lowest three buckling loads P and the corre-

α= EI =

sponding mode shapes. Run the program with kL 4 / (E I ) = 1000 and n = 25.

17. Find smallest five eigenvalues of the 20 × 20 matrix ⎡ 2 1 0 0 ···01 ⎤ ⎢ 1 2 1 ⎥

Note: this is a difficult matrix that has many pairs of double eigenvalues.

MATLAB Functions

MATLAB’s function for solving eigenvalue problems is eig . Its usage for the standard eigenvalue problem Ax = λx is

eVals = eig(A) returns the eigenvalues of the matrix A ( A can be unsymmetric). [X,D] = eig(A) returns the eigenvector matrix X and the diagonal matrix D that

contains the eigenvalues on its diagonal; that is, eVals = diag(D) . For the nonstandard form Ax = λBx, the calls are

eVals = eig(A,B) [X,D] = eig(A,B)

The method of solution is based on Schur’s factorization: PAP T = T, where P and T are unitary and triangular matrices, respectively. Schur’s factorization is not covered in this text.

Dokumen yang terkait

WARTA ARDHIA Jurnal Perhubungan Udara Harapan dan Kepentingan Pengguna Jasa Angkutan Udara Terhadap Pelayanan di Bandar Udara H.AS Hanandjoeddin–Tanjung Pandan Belitung Air Transport Passenger Expectations and Interest of Airport Services in H.A.S Hanandj

0 0 12

The Evaluation of Air Transportation Infrastructure Performance in Indonesian Capital Province

0 0 10

Demand Forecasting of Modal Share of Bandara Internasional Jawa Barat (BJIB) in Kertajati Majalengka

0 1 12

WARTA ARDHIA Jurnal Perhubungan Udara Analisis Flutter Pada Uji Model Separuh Sayap Pesawat N219 di Terowongan Angin Kecepatan Rendah The Analysis of Half Wing Flutter Test N219 Aircraft Model in The Low Speed Wind Tunnel

0 0 8

WARTA ARDHIA Jurnal Perhubungan Udara Penerapan Skema Badan Layanan Umum Dalam Pengelolaan Keuangan Bandar Udara Internasional Jawa Barat The Application of Badan Layanan Umum Scheme in The Financial Management of Jawa Barat International Airport

0 0 16

Speech Recognition Conceptual Design in Aircraft Communications to Reduce Flight Communication Mistake

0 0 10

WARTA ARDHIA Jurnal Perhubungan Udara Perencanaan Integrasi Transportasi Antarmoda Dalam Pembangunan Bandar Udara (Studi Kasus: Pembangunan Bandar Udara di Kertajati) Intermodal Transportation Integration Planning in Airport Development (Case Study: Airpo

0 0 8

WARTA ARDHIA Jurnal Perhubungan Udara Gaya Hambat Saat Hidro Planing dan Gaya Angkat Aerodinamika Saat Cruise di Efek Permukaan pada Pesawat Wing in Surface Effect The Hump Drags During Hydro Planing and Aerodynamic Lift During Cruise in Surface Effect Al

0 0 8

WARTA ARDHIA Jurnal Perhubungan Udara Peran Jasa Ground Handling Terhadap Pelayanan Perusahaan Air Freight di Bali dalam Menghadapi Kompetisi Global The Role of Ground Handling Services to The Air Freight Services in Bali in The Face of Global Competition

0 1 14

Advance Engineering Mathematic chaper 1

0 0 63