This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English version of the page.

Note: This page has been translated by MathWorks. Click here to see
To view all translated materials including this page, select Country from the country navigator on the bottom of this page.

Eigenvalues and Eigenmodes of L-Shaped Membrane

This example shows how to calculate eigenvalues and eigenvectors using the programmatic workflow. For the PDE Modeler app solution, see Eigenvalues and Eigenmodes of L-Shaped Membrane: PDE Modeler App.

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.11,  New conv eig=  0
              Basis= 11,  Time=   0.12,  New conv eig=  0
              Basis= 12,  Time=   0.13,  New conv eig=  0
              Basis= 13,  Time=   0.13,  New conv eig=  0
              Basis= 14,  Time=   0.13,  New conv eig=  0
              Basis= 15,  Time=   0.14,  New conv eig=  0
              Basis= 16,  Time=   0.15,  New conv eig=  0
              Basis= 17,  Time=   0.15,  New conv eig=  0
              Basis= 18,  Time=   0.16,  New conv eig=  1
              Basis= 19,  Time=   0.17,  New conv eig=  1
              Basis= 20,  Time=   0.18,  New conv eig=  1
              Basis= 21,  Time=   0.18,  New conv eig=  1
              Basis= 22,  Time=   0.19,  New conv eig=  3
              Basis= 23,  Time=   0.19,  New conv eig=  3
              Basis= 24,  Time=   0.21,  New conv eig=  4
              Basis= 25,  Time=   0.21,  New conv eig=  5
              Basis= 26,  Time=   0.21,  New conv eig=  6
              Basis= 27,  Time=   0.22,  New conv eig=  6
              Basis= 28,  Time=   0.23,  New conv eig=  6
              Basis= 29,  Time=   0.24,  New conv eig=  7
              Basis= 30,  Time=   0.24,  New conv eig=  7
              Basis= 31,  Time=   0.25,  New conv eig= 10
              Basis= 32,  Time=   0.25,  New conv eig= 10
              Basis= 33,  Time=   0.26,  New conv eig= 11
              Basis= 34,  Time=   0.26,  New conv eig= 11
              Basis= 35,  Time=   0.26,  New conv eig= 14
              Basis= 36,  Time=   0.27,  New conv eig= 14
              Basis= 37,  Time=   0.28,  New conv eig= 14
              Basis= 38,  Time=   0.28,  New conv eig= 14
              Basis= 39,  Time=   0.29,  New conv eig= 14
              Basis= 40,  Time=   0.30,  New conv eig= 14
              Basis= 41,  Time=   0.33,  New conv eig= 15
              Basis= 42,  Time=   0.34,  New conv eig= 15
              Basis= 43,  Time=   0.35,  New conv eig= 15
              Basis= 44,  Time=   0.36,  New conv eig= 16
              Basis= 45,  Time=   0.37,  New conv eig= 16
              Basis= 46,  Time=   0.42,  New conv eig= 16
              Basis= 47,  Time=   0.43,  New conv eig= 16
              Basis= 48,  Time=   0.44,  New conv eig= 17
              Basis= 49,  Time=   0.47,  New conv eig= 18
              Basis= 50,  Time=   0.49,  New conv eig= 18
              Basis= 51,  Time=   0.50,  New conv eig= 18
              Basis= 52,  Time=   0.52,  New conv eig= 18
              Basis= 53,  Time=   0.54,  New conv eig= 18
              Basis= 54,  Time=   0.55,  New conv eig= 21
End of sweep: Basis= 54,  Time=   0.55,  New conv eig= 21
              Basis= 31,  Time=   0.61,  New conv eig=  0
              Basis= 32,  Time=   0.61,  New conv eig=  0
              Basis= 33,  Time=   0.61,  New conv eig=  0
End of sweep: Basis= 33,  Time=   0.62,  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. Multiply the PDE solution by -1, so that the plots look similar instead of being inverted.

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)