exponenta event banner

Собственные значения и собственные модели Г-образной мембраны

В этом примере показано, как вычислять собственные значения и собственные векторы. Задача собственного значения - -Δu = λ u. В этом примере вычисляются все собственные моды с собственными значениями меньше 100.

Создайте модель и включите эту геометрию. Геометрия L-образной мембраны описана в файле lshapeg.

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

Задайте нулевые граничные условия Дирихле для всех кромок.

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

Укажите коэффициенты для задачи: d = 1 и c = 1. Все остальные коэффициенты равны нулю.

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

Установка интервала [0 100] в качестве области для собственных значений в решении.

r = [0 100];

Создайте сетку и решите проблему.

generateMesh(model,'Hmax',0.05);
results = solvepdeeig(model,r);
              Basis= 10,  Time=   1.10,  New conv eig=  0
              Basis= 11,  Time=   1.14,  New conv eig=  0
              Basis= 12,  Time=   1.17,  New conv eig=  0
              Basis= 13,  Time=   1.20,  New conv eig=  0
              Basis= 14,  Time=   1.22,  New conv eig=  0
              Basis= 15,  Time=   1.27,  New conv eig=  0
              Basis= 16,  Time=   1.29,  New conv eig=  0
              Basis= 17,  Time=   1.34,  New conv eig=  0
              Basis= 18,  Time=   1.39,  New conv eig=  1
              Basis= 19,  Time=   1.41,  New conv eig=  1
              Basis= 20,  Time=   1.47,  New conv eig=  1
              Basis= 21,  Time=   1.51,  New conv eig=  1
              Basis= 22,  Time=   1.56,  New conv eig=  3
              Basis= 23,  Time=   1.63,  New conv eig=  3
              Basis= 24,  Time=   1.69,  New conv eig=  4
              Basis= 25,  Time=   1.84,  New conv eig=  5
              Basis= 26,  Time=   1.92,  New conv eig=  6
              Basis= 27,  Time=   1.99,  New conv eig=  6
              Basis= 28,  Time=   2.07,  New conv eig=  6
              Basis= 29,  Time=   2.14,  New conv eig=  7
              Basis= 30,  Time=   2.19,  New conv eig=  7
              Basis= 31,  Time=   2.26,  New conv eig= 10
              Basis= 32,  Time=   2.33,  New conv eig= 10
              Basis= 33,  Time=   2.39,  New conv eig= 11
              Basis= 34,  Time=   2.47,  New conv eig= 11
              Basis= 35,  Time=   2.55,  New conv eig= 14
              Basis= 36,  Time=   2.62,  New conv eig= 14
              Basis= 37,  Time=   2.77,  New conv eig= 14
              Basis= 38,  Time=   2.82,  New conv eig= 14
              Basis= 39,  Time=   2.87,  New conv eig= 14
              Basis= 40,  Time=   2.92,  New conv eig= 14
              Basis= 41,  Time=   3.02,  New conv eig= 15
              Basis= 42,  Time=   3.10,  New conv eig= 15
              Basis= 43,  Time=   3.14,  New conv eig= 15
              Basis= 44,  Time=   3.19,  New conv eig= 16
              Basis= 45,  Time=   3.26,  New conv eig= 16
              Basis= 46,  Time=   3.37,  New conv eig= 16
              Basis= 47,  Time=   3.59,  New conv eig= 16
              Basis= 48,  Time=   3.71,  New conv eig= 17
              Basis= 49,  Time=   3.96,  New conv eig= 18
              Basis= 50,  Time=   4.18,  New conv eig= 18
              Basis= 51,  Time=   4.44,  New conv eig= 18
              Basis= 52,  Time=   4.71,  New conv eig= 18
              Basis= 53,  Time=   4.88,  New conv eig= 18
              Basis= 54,  Time=   5.10,  New conv eig= 21
End of sweep: Basis= 54,  Time=   5.10,  New conv eig= 21
              Basis= 31,  Time=   5.66,  New conv eig=  0
              Basis= 32,  Time=   5.73,  New conv eig=  0
              Basis= 33,  Time=   5.81,  New conv eig=  0
End of sweep: Basis= 33,  Time=   5.81,  New conv eig=  0

Существует 19 собственных значений, меньших 100.

length(results.Eigenvalues)
ans = 19

Постройте график первой собственной моды и сравните ее с MATLAB membrane функция.

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

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

figure
membrane(1,20,9,9)

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

Собственные векторы могут быть умножены на любые скалярные и остаются собственными векторами. Это объясняет разницу в масштабе, которую вы видите.

membrane может создавать первые 12 собственных функций для L-образной мембраны. Сравните 12-ю собственную моду.

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

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

figure 
membrane(12,20,9,9)

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