Этот пример показывает, как вычислить собственные значения и собственные модели квадратной области.
Задача собственного значения УЧП является . Этот пример находит собственные значения меньше 10 и соответствующие собственные модели.
Создайте модель. Импортируйте и постройте график геометрии. Файл описания геометрии для этой задачи называется 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, a = 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= 1.84, New conv eig= 0 Basis= 11, Time= 1.88, New conv eig= 0 Basis= 12, Time= 1.90, New conv eig= 1 Basis= 13, Time= 1.94, New conv eig= 1 Basis= 14, Time= 1.98, New conv eig= 1 Basis= 15, Time= 2.03, New conv eig= 1 Basis= 16, Time= 2.09, New conv eig= 1 Basis= 17, Time= 2.14, New conv eig= 1 Basis= 18, Time= 2.19, New conv eig= 2 Basis= 19, Time= 2.25, New conv eig= 2 Basis= 20, Time= 2.31, New conv eig= 2 Basis= 21, Time= 2.37, New conv eig= 3 Basis= 22, Time= 2.42, New conv eig= 3 Basis= 23, Time= 2.48, New conv eig= 4 Basis= 24, Time= 2.62, New conv eig= 6 End of sweep: Basis= 24, Time= 2.62, New conv eig= 3 Basis= 13, Time= 3.02, New conv eig= 0 Basis= 14, Time= 3.08, New conv eig= 0 Basis= 15, Time= 3.15, New conv eig= 0 Basis= 16, Time= 3.21, New conv eig= 0 Basis= 17, Time= 3.33, New conv eig= 0 Basis= 18, Time= 3.40, New conv eig= 0 Basis= 19, Time= 3.45, New conv eig= 0 Basis= 20, Time= 3.51, New conv eig= 0 Basis= 21, Time= 3.56, New conv eig= 0 Basis= 22, Time= 3.62, New conv eig= 1 Basis= 23, Time= 3.68, New conv eig= 2 End of sweep: Basis= 23, Time= 3.68, New conv eig= 0 Basis= 13, Time= 4.03, New conv eig= 1 End of sweep: Basis= 13, Time= 4.06, New conv eig= 1 Basis= 14, Time= 4.44, New conv eig= 0 Basis= 15, Time= 4.49, New conv eig= 0 Basis= 16, Time= 4.58, New conv eig= 0 Basis= 17, Time= 4.67, New conv eig= 0 Basis= 18, Time= 4.70, New conv eig= 0 Basis= 19, Time= 4.73, New conv eig= 0 Basis= 20, Time= 4.78, New conv eig= 0 Basis= 21, Time= 4.84, New conv eig= 0 Basis= 22, Time= 4.87, New conv eig= 0 Basis= 23, Time= 4.91, New conv eig= 1 End of sweep: Basis= 23, Time= 4.92, New conv eig= 0 Basis= 14, Time= 5.22, New conv eig= 2 End of sweep: Basis= 14, Time= 5.22, New conv eig= 2 Basis= 16, Time= 5.60, New conv eig= 0 End of sweep: Basis= 16, Time= 5.64, 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 первая собственная модель является медленно увеличивающейся экспоненциальной функцией. Более высокие режимы включают синусоиды. В направлении y первая собственная мода - прямая линия (константа), вторая - половина косинуса, третья - полный косинус, четвертая - полтора полных косинуса и т.д. Эти собственные модели в направлении y связаны с собственными значениями
Можно проследить предыдущие собственные значения в собственных значениях решения. Глядя на график первой собственной модели, можно увидеть, что она составлена из первых собственных мод в направлениях x и y. Вторая собственная мода состоит из первой собственной моды в направлении x и второй собственной моды в направлении y.
Посмотрите на различие между первым и вторым собственным значением по сравнению с :
l(2) - l(1) - pi^2/4
ans = 1.6752e-07
Точно так же пятая собственная мода состоит из первой собственной моды в направлении x и третьей собственной моды в направлении y. Как и ожидалось, l(5)-l(1)
приблизительно равен :
l(5) - l(1) - pi^2
ans = 6.2135e-06
Можно исследовать более высокие режимы, увеличив область значений поиска, чтобы включить собственные значения, больше 10.