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 file lshapeg.

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

Set zero Dirichlet boundary conditions on all edges.

applyBoundaryCondition(model,'dirichlet','Edge',1:model.Geometry.NumEdges,'u',0);

Specify the coefficients for the problem: d = 1 and c = 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.44,  New conv eig=  0
              Basis= 11,  Time=   0.50,  New conv eig=  0
              Basis= 12,  Time=   0.56,  New conv eig=  0
              Basis= 13,  Time=   0.60,  New conv eig=  0
              Basis= 14,  Time=   0.61,  New conv eig=  0
              Basis= 15,  Time=   0.64,  New conv eig=  0
              Basis= 16,  Time=   0.66,  New conv eig=  0
              Basis= 17,  Time=   0.68,  New conv eig=  0
              Basis= 18,  Time=   0.71,  New conv eig=  1
              Basis= 19,  Time=   0.73,  New conv eig=  1
              Basis= 20,  Time=   0.78,  New conv eig=  1
              Basis= 21,  Time=   0.83,  New conv eig=  1
              Basis= 22,  Time=   0.89,  New conv eig=  3
              Basis= 23,  Time=   1.06,  New conv eig=  3
              Basis= 24,  Time=   1.15,  New conv eig=  4
              Basis= 25,  Time=   1.26,  New conv eig=  5
              Basis= 26,  Time=   1.30,  New conv eig=  6
              Basis= 27,  Time=   1.37,  New conv eig=  6
              Basis= 28,  Time=   1.44,  New conv eig=  6
              Basis= 29,  Time=   1.53,  New conv eig=  7
              Basis= 30,  Time=   1.75,  New conv eig=  7
              Basis= 31,  Time=   1.88,  New conv eig= 10
              Basis= 32,  Time=   1.98,  New conv eig= 10
              Basis= 33,  Time=   2.07,  New conv eig= 11
              Basis= 34,  Time=   2.14,  New conv eig= 11
              Basis= 35,  Time=   2.22,  New conv eig= 14
              Basis= 36,  Time=   2.33,  New conv eig= 14
              Basis= 37,  Time=   2.53,  New conv eig= 14
              Basis= 38,  Time=   2.66,  New conv eig= 14
              Basis= 39,  Time=   2.78,  New conv eig= 14
              Basis= 40,  Time=   2.85,  New conv eig= 14
              Basis= 41,  Time=   2.91,  New conv eig= 15
              Basis= 42,  Time=   2.97,  New conv eig= 15
              Basis= 43,  Time=   3.06,  New conv eig= 15
              Basis= 44,  Time=   3.12,  New conv eig= 16
              Basis= 45,  Time=   3.17,  New conv eig= 16
              Basis= 46,  Time=   3.23,  New conv eig= 16
              Basis= 47,  Time=   3.29,  New conv eig= 16
              Basis= 48,  Time=   3.35,  New conv eig= 17
              Basis= 49,  Time=   3.47,  New conv eig= 18
              Basis= 50,  Time=   3.63,  New conv eig= 18
              Basis= 51,  Time=   3.77,  New conv eig= 18
              Basis= 52,  Time=   3.89,  New conv eig= 18
              Basis= 53,  Time=   4.02,  New conv eig= 18
              Basis= 54,  Time=   4.25,  New conv eig= 21
End of sweep: Basis= 54,  Time=   4.26,  New conv eig= 21
              Basis= 31,  Time=   4.85,  New conv eig=  0
              Basis= 32,  Time=   4.95,  New conv eig=  0
              Basis= 33,  Time=   5.05,  New conv eig=  0
End of sweep: Basis= 33,  Time=   5.05,  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's membrane function.

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

figure
membrane(1,20,9,9)

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

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

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

figure 
membrane(12,20,9,9)