Contenuto principale

Eigenvalues and Eigenmodes of L-Shaped Membrane

R2026b

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);

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));

3-D surface plot of the first eigenmode of the L-shaped membrane, showing a single peak

figure
membrane(1,20,9,9)

3-D surface plot from the MATLAB membrane function showing the first eigenmode for comparison

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));

3-D surface plot of the twelfth eigenmode of the L-shaped membrane, showing multiple peaks and valleys

figure 
membrane(12,20,9,9)

3-D surface plot from the MATLAB membrane function showing the twelfth eigenmode for comparison