В этом примере показано, как вычислить собственные значения и собственные вектора. Задача о собственных значениях . Этот пример вычисляет весь 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.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
Существует 19 собственных значений, меньших, чем 100.
length(results.Eigenvalues)
ans = 19
Постройте первый eigenmode и сравните его с membrane
MATLAB функция.
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)