Main Content

Eigenvalues and Eigenmodes of L-Shaped Membrane

This example shows how to calculate eigenvalues and eigenvectors. The eigenvalue problem is - Δ u = λ u . This example computes all eigenmodes with eigenvalues smaller than 100.

Create a model and include this geometry. The geometry of the L-shaped membrane is described in the filelshapeg.

model = createpde(); geometryFromEdges(model,@lshapeg);

Set zero Dirichlet boundary conditions on all edges.

美联社plyBoundaryCondition(model,'dirichlet',...'Edge',1:model.Geometry.NumEdges,...'u',0);

Specify the coefficients for the problem:d= 1 andc= 1. All other coefficients are equal to zero.

specifyCoefficients(model,'m',0,'d',1,'c',1,'a',0,'f',0);

Set the interval[0 100]as the region for the eigenvalues in the solution.

r = [0 100];

Create a mesh and solve the problem.

generateMesh(model,'Hmax',0.05); results = solvepdeeig(model,r);
Basis= 10, Time= 0.11, New conv eig= 0 Basis= 11, Time= 0.18, New conv eig= 0 Basis= 12, Time= 0.21, New conv eig= 0 Basis= 13, Time= 0.23, New conv eig= 0 Basis= 14, Time= 0.23, New conv eig= 0 Basis= 15, Time= 0.24, New conv eig= 0 Basis= 16, Time= 0.25, New conv eig= 0 Basis= 17, Time= 0.25, New conv eig= 0 Basis= 18, Time= 0.25, New conv eig= 1 Basis= 19, Time= 0.26, New conv eig= 1 Basis= 20, Time= 0.26, New conv eig= 1 Basis= 21, Time= 0.27, New conv eig= 1 Basis= 22, Time= 0.28, New conv eig= 3 Basis= 23, Time= 0.28, New conv eig= 3 Basis= 24, Time= 0.29, New conv eig= 4 Basis= 25, Time= 0.29, New conv eig= 5 Basis= 26, Time= 0.30, New conv eig= 6 Basis= 27, Time= 0.31, New conv eig= 6 Basis= 28, Time= 0.31, New conv eig= 6 Basis= 29, Time= 0.32, New conv eig= 7 Basis= 30, Time= 0.33, New conv eig= 7 Basis= 31, Time= 0.85, New conv eig= 10 Basis= 32, Time= 0.95, New conv eig= 10 Basis= 33, Time= 1.01, New conv eig= 11 Basis= 34, Time= 1.08, New conv eig= 11 Basis= 35, Time= 1.12, New conv eig= 14 Basis= 36, Time= 1.38, New conv eig= 14 Basis= 37, Time= 1.48, New conv eig= 14 Basis= 38, Time= 1.57, New conv eig= 14 Basis= 39, Time= 1.64, New conv eig= 14 Basis= 40, Time= 1.88, New conv eig= 14 Basis= 41, Time= 1.93, New conv eig= 15 Basis= 42, Time= 1.96, New conv eig= 15 Basis= 43, Time= 1.99, New conv eig= 15 Basis= 44, Time= 2.01, New conv eig= 16 Basis= 45, Time= 2.04, New conv eig= 16 Basis= 46, Time= 2.05, New conv eig= 16 Basis= 47, Time= 2.08, New conv eig= 16 Basis= 48, Time= 2.08, New conv eig= 17 Basis= 49, Time= 2.12, New conv eig= 18 Basis= 50, Time= 2.35, New conv eig= 18 Basis= 51, Time= 2.45, New conv eig= 18 Basis= 52, Time= 2.47, New conv eig= 18 Basis= 53, Time= 2.50, New conv eig= 18 Basis= 54, Time= 2.51, New conv eig= 21 End of sweep: Basis= 54, Time= 2.52, New conv eig= 21 Basis= 31, Time= 2.58, New conv eig= 0 Basis= 32, Time= 2.58, New conv eig= 0 Basis= 33, Time= 2.58, New conv eig= 0 End of sweep: Basis= 33, Time= 2.58, New conv eig= 0

There are 19 eigenvalues smaller than 100.

length(results.Eigenvalues)
ans = 19

Plot the first eigenmode and compare it to the MATLAB'smembranefunction.

u = results.Eigenvectors; pdeplot(model,'XYData',u(:,1),'ZData',u(:,1));

Figure contains an axes object. The axes object contains an object of type patch.

figure membrane(1,20,9,9)

Figure contains an axes object. The axes object contains an object of type surface.

Eigenvectors can be multiplied by any scalar and remain eigenvectors. This explains the difference in scale that you see.

membranecan produce the first 12 eigenfunctions for the L-shaped membrane. Compare the 12th eigenmodes.

figure pdeplot(model,'XYData',u(:,12),'ZData',u(:,12));

Figure contains an axes object. The axes object contains an object of type patch.

figure membrane(12,20,9,9)

Figure contains an axes object. The axes object contains an object of type surface.