Определяем граничные условия:
> bc:=u(0,y)=f(0,y),u(1,y)=f(1,y),
u(x,0)=f(x,0),u(x,2)=f(x,2);
![]()
Таким образом, задача математической физики поставлена: найти функцию
, удовлетворяющую дифференциальному уравнению

в прямоугольнике
, и принимающую заданные значения на границе этого прямоугольника
,
.
Сформулированная задача классифицируется как задача Дирихле для уравнения Пуассона в прямоугольнике [1]. Это — неоднородная задача, причем неоднородности присутствуют как в граничных условиях, так и в уравнении.
Чтобы построить решение задачи разобьем ее на две вспомогательные задачи. А именно, будем искать решение задачи в виде суммы двух функций:
. Функции
и
определим как решения следующих задач.
Задача 1: найти функцию
, удовлетворяющую дифференциальному уравнению

и граничным условиям
,
.
Задача 2: найти функцию
, удовлетворяющую дифференциальному уравнению

и граничным условиям
,
.
Определим эти задачи в Maple.
Задача 1:
> pde1:=diff(u1(x, y),x, x)+diff(u1(x, y),y, y)=
(1/2)*y*cos(x);
bc1:=u1(0,y)=0,u1(1,y)=0,
u1(x,0)=f(x,0),u1(x,2)=f(x,2);
![]()
![]()
Задача 2:
> pde2:=diff(u2(x, y),x, x)+diff(u2(x, y),y, y)=
(1/2)*y*cos(x);
bc2:=u2(0,y)=f(0,y),u2(1,y)=f(1,y),
u2(x,0)=0,u2(x,2)=0;
![]()
![]()
Очевидно, решение исходной задачи будет
> u:=proc(x, y) options operator, arrow;
u1(x, y)+u2(x, y)
end proc;
![]()
Проверим это. Подставим функцию
в уравнение
> simplify(pde, {pde1, pde2});
![]()
Как видим, получили тождество. Проверим выполнение граничных условий
> bc;

Таким образом, условия на функцию
тоже выполняются.
Рассмотрим задачу 1. Будем решать ее методом Гринберга [1]. Соответствующая задача Штурма-Лиувилля
![]()
очевидно, имеет решение[1]
> X:=proc(x, n) options operator, arrow;
sin(n*Pi*x)
end proc;
lambda:=proc(n) options operator, arrow;
n^2*Pi^2
end proc;
![]()
![]()
Действительно, подставим это решение в уравнение
> Diff(X(x, n),x, x)+lambda(n)*X(x, n) = 0;value(%);
![]()
![]()
Проверим выполнение граничных условий
> X(0,n)=0,X(1,n)=0;simplify(%,assume=integer);
![]()
![]()
Решение задачи 1, в соответствии с методом Гринберга, представим в виде ряда по собственным функциям задачи Штурма-Лиувилля
.
Здесь учтено, что квадрат нормы собственных функций равен
:
.
Действительно,
> int(X(x, n)^2, x = 0 .. 1);
simplify(%, assume = integer);
![]()
![]()
Уравнение для трансформанты
получим, умножив исходное уравнение в частных производных на
и проинтегрировав на отрезке
:
> int(lhs(pde1)*X(x, n),x = 0 .. 1) =
int(rhs(pde1)*X(x, n),x = 0 .. 1);

![]()
> intPDE1 := simplify(%, assume = integer);

Преобразуем правую часть полученного уравнения
> LHS1:=IntegrationTools[Expand](lhs(intPDE1));

Первый интеграл берем по частям два раза:
> IntegrationTools[Parts](op(1, LHS1), sin(n*Pi*x));
I1 := simplify(%, assume = integer);


> IntegrationTools[Parts](I1, cos(n*Pi*x));
I1 := simplify(%, assume = integer);


Учтем граничные условия
> I1 := simplify(I1, {bc1});

Итак, первый интеграл с учетом
преобразовался в выражение
> I1 := subs(op(4, I1) = U1(y, n), I1);
![]()
Второй интеграл в выражении LHS1 есть, очевидно, 
> I2:=subs(op(2,LHS1)=diff(U1(y, n),y, y),op(2,LHS1));
![]()
Таким образом, уравнение для трансформанты
получено:
> ode1 := I2+I1 = rhs(intPDE1);
![]()
Сформируем граничные условия
> int(lhs(bc1[3])*X(x, n),x = 0 .. 1) =
int(rhs(bc1[3])*X(x, n),x = 0 .. 1);

> bcODE1:=simplify({subs(lhs(%) = U1(0,n), %)},
assume = integer);
![]()
> int(lhs(bc1[4])*X(x, n),x = 0 .. 1) =
int(rhs(bc1[4])*X(x, n),x = 0 .. 1);

> simplify({subs(lhs(%) = U1(2,n), %)},
assume = integer);
![]()
> bcODE1 := `union`(bcODE1, %);
![]()
Находим трансформанту ![]()
> res := dsolve(ode1, U1(y, n));
![]()
Удобно записать общее решение ОДУ так
> V1:=proc(y) options operator, arrow;
C1*sinh(n*Pi*y)+C2*sinh(n*Pi*(2-y))+
(-1+cos(1)*(-1)^n)*y/(-2*n*Pi+2*n^3*Pi^3)
end proc;
![]()
Проверим
> subs(U1(y, n) = V1(y), ode1);
simplify(subs(U1(y, n) = V1(y), ode1));

![]()
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 |


