Этот пример показывает, как вычислить собственные значения и eigenmodes квадратной области с помощью программируемого рабочего процесса. Для прикладного решения PDE Modeler смотрите Eigenvalues и Eigenmodes Квадрата: Приложение PDE Modeler.
Проблема УЧП собственного значения . Этот пример находит собственные значения меньшими, чем 10 и соответствующий eigenmodes.
Создайте модель. Импортируйте и постройте геометрию. Файл описания геометрии для этой проблемы называется squareg.m.
model = createpde(); geometryFromEdges(model,@squareg); pdegplot(model,'EdgeLabels','on') ylim([-1.5,1.5]) axis equal

Задайте граничное условие Дирихле для левого контура.
applyBoundaryCondition(model,'dirichlet','Edge',4,'u',0);
Задайте нулевое Нейманово граничное условие для верхней и нижней границы.
applyBoundaryCondition(model,'neumann','Edge',[1,3],'g',0,'q',0);
Задайте обобщенное Нейманово условие для правильного контура.
applyBoundaryCondition(model,'neumann','Edge',2,'g',0,'q',-3/4);
Коэффициенты УЧП собственного значения для этой проблемы являются c = 1, = 0, и d = 1. Можно ввести область значений собственного значения r как векторный [-Inf 10].
specifyCoefficients(model,'m',0,'d',1,'c',1,'a',0,'f',0); r = [-Inf,10];
Создайте mesh и решите проблему.
generateMesh(model,'Hmax',0.05);
results = solvepdeeig(model,r); Basis= 10, Time= 0.73, New conv eig= 0
Basis= 11, Time= 0.76, New conv eig= 0
Basis= 12, Time= 0.79, New conv eig= 1
Basis= 13, Time= 0.81, New conv eig= 1
Basis= 14, Time= 0.84, New conv eig= 1
Basis= 15, Time= 0.87, New conv eig= 1
Basis= 16, Time= 0.89, New conv eig= 1
Basis= 17, Time= 0.93, New conv eig= 1
Basis= 18, Time= 0.97, New conv eig= 2
Basis= 19, Time= 0.99, New conv eig= 2
Basis= 20, Time= 1.01, New conv eig= 2
Basis= 21, Time= 1.04, New conv eig= 3
Basis= 22, Time= 1.06, New conv eig= 3
Basis= 23, Time= 1.10, New conv eig= 4
Basis= 24, Time= 1.13, New conv eig= 6
End of sweep: Basis= 24, Time= 1.13, New conv eig= 3
Basis= 13, Time= 1.38, New conv eig= 0
Basis= 14, Time= 1.41, New conv eig= 0
Basis= 15, Time= 1.43, New conv eig= 0
Basis= 16, Time= 1.45, New conv eig= 0
Basis= 17, Time= 1.48, New conv eig= 0
Basis= 18, Time= 1.51, New conv eig= 0
Basis= 19, Time= 1.53, New conv eig= 0
Basis= 20, Time= 1.56, New conv eig= 0
Basis= 21, Time= 1.59, New conv eig= 0
Basis= 22, Time= 1.62, New conv eig= 1
Basis= 23, Time= 1.63, New conv eig= 2
End of sweep: Basis= 23, Time= 1.65, New conv eig= 0
Basis= 13, Time= 1.91, New conv eig= 1
Basis= 14, Time= 1.92, New conv eig= 1
Basis= 15, Time= 1.95, New conv eig= 1
Basis= 16, Time= 1.98, New conv eig= 3
Basis= 17, Time= 2.00, New conv eig= 3
Basis= 18, Time= 2.02, New conv eig= 3
Basis= 19, Time= 2.05, New conv eig= 3
Basis= 20, Time= 2.07, New conv eig= 3
Basis= 21, Time= 2.10, New conv eig= 4
End of sweep: Basis= 21, Time= 2.11, New conv eig= 4
Basis= 17, Time= 2.38, New conv eig= 0
End of sweep: Basis= 17, Time= 2.38, New conv eig= 0
Существует шесть собственных значений, меньших, чем 10 для этой проблемы.
l = results.Eigenvalues
l = 5×1
-0.4146
2.0528
4.8019
7.2693
9.4550
Постройте первые и последние собственные функции в заданной области значений.
u = results.Eigenvectors;
pdeplot(model,'XYData',u(:,1));
pdeplot(model,'XYData',u(:,length(l)));
Эта проблема отделима, означая
Функции f и g являются собственными функциями в направлениях X и Y, соответственно. В направлении X первый eigenmode является медленно увеличивающейся показательной функцией. Более высокие режимы включают синусоиды. В направлении Y первый eigenmode является (постоянной) прямой линией, вторым является половина косинуса, третьим является полный косинус, четвертыми являются полтора полных косинуса и т.д. Эти eigenmodes в направлении Y сопоставлены с собственными значениями
Возможно проследить предыдущие собственные значения в собственных значениях решения. Смотря на график первого eigenmode, вы видите, что он составлен из первого eigenmodes в направлениях X и Y. Второй eigenmode составлен из первого eigenmode в направлении X и второго eigenmode в направлении Y.
Посмотрите на различие между первым и вторым собственным значением по сравнению с :
l(2) - l(1) - pi^2/4
ans = 1.6751e-07
Аналогично, пятый eigenmode составлен из первого eigenmode в направлении X и третьего eigenmode в направлении Y. Как ожидалось l(5)-l(1) приблизительно равен :
l(5) - l(1) - pi^2
ans = 6.2135e-06
Можно исследовать более высокие режимы путем увеличения поисковой области значений, чтобы включать собственные значения, больше, чем 10.