exponenta event banner

Eigenvalues и Eigenmodes l-образной мембраны

Этот пример показывает, как вычислить собственные значения и собственные вектора с помощью программируемого рабочего процесса. Для прикладного решения PDE Modeler смотрите Eigenvalues и Eigenmodes L-образной Мембраны: Приложение PDE Modeler.

Задача о собственных значениях -Δu=λu. Этот пример вычисляет весь eigenmodes с собственными значениями, меньшими, чем 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];

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

generateMesh(model,'Hmax',0.05);
results = solvepdeeig(model,r);
              Basis= 10,  Time=   0.29,  New conv eig=  0
              Basis= 11,  Time=   0.31,  New conv eig=  0
              Basis= 12,  Time=   0.34,  New conv eig=  0
              Basis= 13,  Time=   0.35,  New conv eig=  0
              Basis= 14,  Time=   0.37,  New conv eig=  0
              Basis= 15,  Time=   0.42,  New conv eig=  0
              Basis= 16,  Time=   0.44,  New conv eig=  0
              Basis= 17,  Time=   0.47,  New conv eig=  0
              Basis= 18,  Time=   0.51,  New conv eig=  1
              Basis= 19,  Time=   0.52,  New conv eig=  1
              Basis= 20,  Time=   0.56,  New conv eig=  1
              Basis= 21,  Time=   0.58,  New conv eig=  1
              Basis= 22,  Time=   0.60,  New conv eig=  3
              Basis= 23,  Time=   0.63,  New conv eig=  3
              Basis= 24,  Time=   0.66,  New conv eig=  4
              Basis= 25,  Time=   0.67,  New conv eig=  5
              Basis= 26,  Time=   0.70,  New conv eig=  6
              Basis= 27,  Time=   0.72,  New conv eig=  6
              Basis= 28,  Time=   0.76,  New conv eig=  6
              Basis= 29,  Time=   0.79,  New conv eig=  7
              Basis= 30,  Time=   0.81,  New conv eig=  7
              Basis= 31,  Time=   0.84,  New conv eig= 10
              Basis= 32,  Time=   0.86,  New conv eig= 10
              Basis= 33,  Time=   0.89,  New conv eig= 11
              Basis= 34,  Time=   0.92,  New conv eig= 11
              Basis= 35,  Time=   0.94,  New conv eig= 14
              Basis= 36,  Time=   0.97,  New conv eig= 14
              Basis= 37,  Time=   1.00,  New conv eig= 14
              Basis= 38,  Time=   1.02,  New conv eig= 14
              Basis= 39,  Time=   1.04,  New conv eig= 14
              Basis= 40,  Time=   1.07,  New conv eig= 14
              Basis= 41,  Time=   1.11,  New conv eig= 15
              Basis= 42,  Time=   1.14,  New conv eig= 15
              Basis= 43,  Time=   1.16,  New conv eig= 15
              Basis= 44,  Time=   1.20,  New conv eig= 16
              Basis= 45,  Time=   1.22,  New conv eig= 16
              Basis= 46,  Time=   1.24,  New conv eig= 16
              Basis= 47,  Time=   1.27,  New conv eig= 16
              Basis= 48,  Time=   1.33,  New conv eig= 17
              Basis= 49,  Time=   1.40,  New conv eig= 18
              Basis= 50,  Time=   1.43,  New conv eig= 18
              Basis= 51,  Time=   1.47,  New conv eig= 18
              Basis= 52,  Time=   1.50,  New conv eig= 18
              Basis= 53,  Time=   1.56,  New conv eig= 18
              Basis= 54,  Time=   1.59,  New conv eig= 21
End of sweep: Basis= 54,  Time=   1.60,  New conv eig= 21
              Basis= 31,  Time=   1.85,  New conv eig=  0
              Basis= 32,  Time=   1.87,  New conv eig=  0
              Basis= 33,  Time=   1.90,  New conv eig=  0
End of sweep: Basis= 33,  Time=   1.92,  New conv eig=  0

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

length(results.Eigenvalues)
ans = 19

Постройте первый eigenmode и сравните его с функцией membrane MATLAB. Умножьте решение для УЧП на-1, так, чтобы графики выглядели подобными вместо того, чтобы быть инвертированным.

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

figure
membrane(1,20,9,9)

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

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

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

figure 
membrane(12,20,9,9)