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

Этот пример показывает, как вычислить собственные значения и собственные модели квадратной области.

Задача собственного значения УЧП является -Δu=λu. Этот пример находит собственные значения меньше 10 и соответствующие собственные модели.

Создайте модель. Импортируйте и постройте график геометрии. Файл описания геометрии для этой задачи называется squareg.m.

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

pdegplot(model,'EdgeLabels','on')
ylim([-1.5,1.5])
axis equal

Figure contains an axes. The axes contains 5 objects of type line, text.

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

applyBoundaryCondition(model,'dirichlet','Edge',4,'u',0);

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

applyBoundaryCondition(model,'neumann','Edge',[1,3],'g',0,'q',0);

Задайте обобщенное условие Неймана un-34u=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));

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

pdeplot(model,'XYData',u(:,length(l)));

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

Эта задача разделима, что означает

u(x,y)=f(x)g(y).

Функции f и g являются собственными функциями в направлениях x и y, соответственно. В направлении x первая собственная модель является медленно увеличивающейся экспоненциальной функцией. Более высокие режимы включают синусоиды. В направлении y первая собственная мода - прямая линия (константа), вторая - половина косинуса, третья - полный косинус, четвертая - полтора полных косинуса и т.д. Эти собственные модели в направлении y связаны с собственными значениями

0,π24,4π24,9π24,...

Можно проследить предыдущие собственные значения в собственных значениях решения. Глядя на график первой собственной модели, можно увидеть, что она составлена из первых собственных мод в направлениях x и y. Вторая собственная мода состоит из первой собственной моды в направлении x и второй собственной моды в направлении y.

Посмотрите на различие между первым и вторым собственным значением по сравнению с π2/4:

l(2) - l(1) - pi^2/4
ans = 1.6752e-07

Точно так же пятая собственная мода состоит из первой собственной моды в направлении x и третьей собственной моды в направлении y. Как и ожидалось, l(5)-l(1) приблизительно равен π2:

l(5) - l(1) - pi^2
ans = 6.2135e-06

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

Для просмотра документации необходимо авторизоваться на сайте