Решение дифференциальных уравнений в частных производных 

Для решения дифференциальных уравнений в частных производных используется функция pdsolve (PDE, [u (x, y)], [параметры]), где PDE – дифференциальное уравнение в частных производных, u (x, y) – искомая функция нескольких переменных. 

Параметры выполняют приблизительно ту же роль, что и в функции dsolve, и более подробно о них будет рассказано ниже. 

Для решения системы дифференциальных уравнений в частных производных в качестве первых двух параметров следует использовать множества или списки с уравнениями и искомыми функциями. 

Типичной особенностью дифференциальных уравнений в частных производных и их систем является то, что для однозначного определения частного решения здесь требуется задание не значений того или иного конечного числа параметров, а некоторых функций. Найдем общее решением уравнения . 

> restart:
PDE:=diff(u(x,t),t,t)= diff(u(x,t),x,x);
pdsolve(PDE,u(x,t));
 

 

`assign`(PDE, diff(u(x, t), t, t) = diff(u(x, t), x, x))
u(x, t) = `+`(_F1(`+`(t, x)), _F2(`+`(t, `-`(x))))
 

Таким образом, рассмотренное дифференциальное уравнение лишь в той мере ограничивает произвол в выборе функций двух переменных u, что ее удается выразить через сумму двух функций _F1 и _F2 от одного переменного, которые остаются произвольными, если не дано каких-либо дополнительных условий. 

Если требуется найти решение в виде произведения функций, то следует использовать параметр HINT = `*`. 

> pdsolve(PDE,u(x,t),HINT=`*`);
 

`&where`(u(x, t) = `*`(_F1(x), `*`(_F2(t))), [{diff(_F1(x), x, x) = `*`(_c[1], `*`(_F1(x))), diff(_F2(t), t, t) = `*`(_c[1], `*`(_F2(t)))}])
 

При использовании параметра buildMaple попытается записать решение в явном виде. 

> pdsolve(PDE,u(x,t),HINT=`*`, build);
 

u(x, t) = `+`(`*`(exp(`*`(sqrt(_c[1]), `*`(x))), `*`(_C1, `*`(_C3, `*`(exp(`*`(sqrt(_c[1]), `*`(t))))))), `/`(`*`(exp(`*`(sqrt(_c[1]), `*`(x))), `*`(_C1, `*`(_C4))), `*`(exp(`*`(sqrt(_c[1]), `*`(t))))...
 

Здесь _C1, _C2, _C3, _C4 и _c1 – постоянные интегрирования, которые определяются из так называемых краевых или начальных условий, позволяющих однозначно выделить интересующее решение. В то время как краевые условия задаются исключительно на граничных точках области, где ищется решение, начальные условия могут оказаться заданными на определенном множестве точек внутри области. 

Пусть требуется найти функцию F (x, y), удовлетворяющую уравнению Лапласа  , если известно, что на окружности `+`(`*`(`^`(x, 2)), `*`(`^`(y, 2))) = 16значения функции могут быть рассчитаны по выражению `*`(`^`(x, 2), `*`(`^`(y, 2))). 

Учитывая, что граничные условия заданы на окружности, целесообразно решать задачу в полярных координатах. Для преобразования дифференциального уравнения в полярную систему координат используем функцию PDEchangecoords из пакета Detools, а для преобразования граничных условий – функцию dchange из пакета PDEtools. 

> restart:
PDE:=diff(F(x,y),x,x)+diff(F(x,y),y,y);
PDE:=DEtools[PDEchangecoords](PDE,[x,y],polar, [r,phi]);
dp:={x=r*cos(phi),y=r*sin(phi)};
f:=x^2*y^2;
f:=PDEtools[dchange](dp,f);
 

 

 

 

 

`assign`(PDE, `+`(diff(F(x, y), x, x), diff(F(x, y), y, y)))
`assign`(PDE, `/`(`*`(`+`(`*`(diff(F(r, phi), r), `*`(r)), diff(F(r, phi), phi, phi), `*`(diff(F(r, phi), r, r), `*`(`^`(r, 2))))), `*`(`^`(r, 2))))
`assign`(dp, {x = `*`(r, `*`(cos(phi))), y = `*`(r, `*`(sin(phi)))})
`assign`(f, `*`(`^`(x, 2), `*`(`^`(y, 2))))
`assign`(f, `*`(`^`(r, 4), `*`(`^`(cos(phi), 2), `*`(`^`(sin(phi), 2)))))
 

Получаем решение в явном виде. 

> R:=rhs(pdsolve(PDE,HINT=`*`,build));
 

`assign`(R, `+`(`*`(_C1, `*`(`^`(r, sqrt(_c[1])), `*`(_C3, `*`(sin(`*`(sqrt(_c[1]), `*`(phi))))))), `*`(_C1, `*`(`^`(r, sqrt(_c[1])), `*`(_C4, `*`(cos(`*`(sqrt(_c[1]), `*`(phi))))))), `/`(`*`(_C2, `*`...
 

Будем считать, что искомая функция определена во всех точках действительной плоскости, включая центр координат, т.е. при r = 0. Следовательно, _C2=0, т.к. в противном случае знаменатель в двух последних слагаемых решения обращается в ноль. 

> _C2:=0;
R;
 

 

`assign`(_C2, 0)
`+`(`*`(_C1, `*`(`^`(r, sqrt(_c[1])), `*`(_C3, `*`(sin(`*`(sqrt(_c[1]), `*`(phi))))))), `*`(_C1, `*`(`^`(r, sqrt(_c[1])), `*`(_C4, `*`(cos(`*`(sqrt(_c[1]), `*`(phi))))))))
 

Первое и второе слагаемое содержат произведение двух констант, поэтому можно считать, что _C1 = 1 и искать только _C3 и _C4. 

> _C1:=1;
R;
 

 

`assign`(_C1, 1)
`+`(`*`(`^`(r, sqrt(_c[1])), `*`(_C3, `*`(sin(`*`(sqrt(_c[1]), `*`(phi)))))), `*`(`^`(r, sqrt(_c[1])), `*`(_C4, `*`(cos(`*`(sqrt(_c[1]), `*`(phi)))))))
 

Для нахождения констант _C3 и _C4 используем граничные условия. 

> simplify(subs({phi=0,r=4},R))=eval(subs({phi=0,r=4},f));
simplify(subs({phi=Pi,r=4},R))=eval(subs({phi=Pi,r=4},f));
solve({%,%%},{_C3,_C4});
 

 

 

`*`(`^`(4, sqrt(_c[1])), `*`(_C4)) = 0
`*`(`^`(4, sqrt(_c[1])), `*`(`+`(`*`(_C3, `*`(sin(`*`(sqrt(_c[1]), `*`(Pi))))), `*`(_C4, `*`(cos(`*`(sqrt(_c[1]), `*`(Pi)))))))) = 0
{_C3 = 0, _C4 = 0}
 

Очевидно, что найденное решение не удовлетворяет граничным условиям. Также отметим, функция pdsolve находит решение с точностью до некоторой постоянной. Поэтому добавим к полученному ранее решению постоянную Z, подлежащую определению. 

> R:=R+Z;
 

`assign`(R, `+`(`*`(`^`(r, sqrt(_c[1])), `*`(_C3, `*`(sin(`*`(sqrt(_c[1]), `*`(phi)))))), `*`(`^`(r, sqrt(_c[1])), `*`(_C4, `*`(cos(`*`(sqrt(_c[1]), `*`(phi)))))), Z))
 

Для нахождения констант _C3, _C4 и Z используем граничные условия. Составим три уравнения и решим их совместно. 

> R1:=subs(r=4,R=f);
U1:=simplify(subs(phi=0,R1));
U2:=simplify(subs(phi=Pi/2/_c[1]^(1/2),R1));
U3:=simplify(subs(phi=Pi/4,R1));
S:=solve({U1,U2,U3},{_C3,_C4,Z});
 

 

 

 

 

`assign`(R1, `+`(`*`(`^`(4, sqrt(_c[1])), `*`(_C3, `*`(sin(`*`(sqrt(_c[1]), `*`(phi)))))), `*`(`^`(4, sqrt(_c[1])), `*`(_C4, `*`(cos(`*`(sqrt(_c[1]), `*`(phi)))))), Z) = `+`(`*`(256, `*`(`^`(cos(phi),...
`assign`(U1, `+`(`*`(`^`(4, sqrt(_c[1])), `*`(_C4)), Z) = 0)
`assign`(U2, `+`(`*`(`^`(4, sqrt(_c[1])), `*`(_C3)), Z) = `+`(`-`(`*`(256, `*`(`^`(cos(`+`(`/`(`*`(`/`(1, 2), `*`(Pi)), `*`(sqrt(_c[1]))))), 2), `*`(`+`(`-`(1), `*`(`^`(cos(`+`(`/`(`*`(`/`(1, 2), `*`(...
`assign`(U3, `+`(`*`(`^`(4, sqrt(_c[1])), `*`(_C3, `*`(sin(`+`(`*`(`/`(1, 4), `*`(sqrt(_c[1]), `*`(Pi)))))))), `*`(`^`(4, sqrt(_c[1])), `*`(_C4, `*`(cos(`+`(`*`(`/`(1, 4), `*`(sqrt(_c[1]), `*`(Pi)))))...
`assign`(S, {Z = `+`(`-`(`/`(`*`(`*`(64, `+`(`-`(`*`(4, `*`(`^`(cos(`+`(`/`(`*`(`/`(1, 2), `*`(Pi)), `*`(sqrt(_c[1]))))), 2), `*`(sin(`+`(`*`(`/`(1, 4), `*`(sqrt(_c[1]), `*`(Pi))))))))), `*`(4, `*`(`^...
`assign`(S, {Z = `+`(`-`(`/`(`*`(`*`(64, `+`(`-`(`*`(4, `*`(`^`(cos(`+`(`/`(`*`(`/`(1, 2), `*`(Pi)), `*`(sqrt(_c[1]))))), 2), `*`(sin(`+`(`*`(`/`(1, 4), `*`(sqrt(_c[1]), `*`(Pi))))))))), `*`(4, `*`(`^...
`assign`(S, {Z = `+`(`-`(`/`(`*`(`*`(64, `+`(`-`(`*`(4, `*`(`^`(cos(`+`(`/`(`*`(`/`(1, 2), `*`(Pi)), `*`(sqrt(_c[1]))))), 2), `*`(sin(`+`(`*`(`/`(1, 4), `*`(sqrt(_c[1]), `*`(Pi))))))))), `*`(4, `*`(`^...
 

Подставим найденные константы в решение. 

> R1:=simplify(subs(S,R1));
 

`assign`(R1, `/`(`*`(`*`(64, `+`(sin(`*`(sqrt(_c[1]), `*`(phi))), `*`(4, `*`(sin(`*`(sqrt(_c[1]), `*`(phi))), `*`(`^`(cos(`+`(`/`(`*`(`/`(1, 2), `*`(Pi)), `*`(sqrt(_c[1]))))), 2), `*`(cos(`+`(`*`(`/`(...
`assign`(R1, `/`(`*`(`*`(64, `+`(sin(`*`(sqrt(_c[1]), `*`(phi))), `*`(4, `*`(sin(`*`(sqrt(_c[1]), `*`(phi))), `*`(`^`(cos(`+`(`/`(`*`(`/`(1, 2), `*`(Pi)), `*`(sqrt(_c[1]))))), 2), `*`(cos(`+`(`*`(`/`(...
`assign`(R1, `/`(`*`(`*`(64, `+`(sin(`*`(sqrt(_c[1]), `*`(phi))), `*`(4, `*`(sin(`*`(sqrt(_c[1]), `*`(phi))), `*`(`^`(cos(`+`(`/`(`*`(`/`(1, 2), `*`(Pi)), `*`(sqrt(_c[1]))))), 2), `*`(cos(`+`(`*`(`/`(...
`assign`(R1, `/`(`*`(`*`(64, `+`(sin(`*`(sqrt(_c[1]), `*`(phi))), `*`(4, `*`(sin(`*`(sqrt(_c[1]), `*`(phi))), `*`(`^`(cos(`+`(`/`(`*`(`/`(1, 2), `*`(Pi)), `*`(sqrt(_c[1]))))), 2), `*`(cos(`+`(`*`(`/`(...
 

Используя еще раз граничное условие phi = Pi, найдем константу _c[1]. 

> R2:=eval(subs(phi=Pi,R1));
solve(R2,_c[1]);
 

 

`assign`(R2, `/`(`*`(`*`(64, `+`(sin(`*`(sqrt(_c[1]), `*`(Pi))), `*`(4, `*`(sin(`*`(sqrt(_c[1]), `*`(Pi))), `*`(`^`(cos(`+`(`/`(`*`(`/`(1, 2), `*`(Pi)), `*`(sqrt(_c[1]))))), 2), `*`(cos(`+`(`*`(`/`(1,...
`assign`(R2, `/`(`*`(`*`(64, `+`(sin(`*`(sqrt(_c[1]), `*`(Pi))), `*`(4, `*`(sin(`*`(sqrt(_c[1]), `*`(Pi))), `*`(`^`(cos(`+`(`/`(`*`(`/`(1, 2), `*`(Pi)), `*`(sqrt(_c[1]))))), 2), `*`(cos(`+`(`*`(`/`(1,...
`assign`(R2, `/`(`*`(`*`(64, `+`(sin(`*`(sqrt(_c[1]), `*`(Pi))), `*`(4, `*`(sin(`*`(sqrt(_c[1]), `*`(Pi))), `*`(`^`(cos(`+`(`/`(`*`(`/`(1, 2), `*`(Pi)), `*`(sqrt(_c[1]))))), 2), `*`(cos(`+`(`*`(`/`(1,...
`assign`(R2, `/`(`*`(`*`(64, `+`(sin(`*`(sqrt(_c[1]), `*`(Pi))), `*`(4, `*`(sin(`*`(sqrt(_c[1]), `*`(Pi))), `*`(`^`(cos(`+`(`/`(`*`(`/`(1, 2), `*`(Pi)), `*`(sqrt(_c[1]))))), 2), `*`(cos(`+`(`*`(`/`(1,...
Warning, solutions may have been lost
 

Функция solve выдала предупреждение о возможной потере решений и не нашла ни одного решения уравнения!  

Для упрощения уравнения введем замену  _c[1] = `*`(`^`(C, 2)), наложив дополнительное ограничение − C > 0 с помощью функции assume . 

> assume(C>0):
R2:=simplify(subs(_c[1]=C^2,%));
 

`assign`(R2, `+`(`-`(`/`(`*`(`*`(64, `+`(`-`(sin(`*`(C, `*`(Pi)))), `-`(`*`(4, `*`(sin(`*`(C, `*`(Pi))), `*`(`^`(cos(`+`(`/`(`*`(`/`(1, 2), `*`(Pi)), `*`(C)))), 2), `*`(cos(`+`(`*`(`/`(1, 4), `*`(C, `...
`assign`(R2, `+`(`-`(`/`(`*`(`*`(64, `+`(`-`(sin(`*`(C, `*`(Pi)))), `-`(`*`(4, `*`(sin(`*`(C, `*`(Pi))), `*`(`^`(cos(`+`(`/`(`*`(`/`(1, 2), `*`(Pi)), `*`(C)))), 2), `*`(cos(`+`(`*`(`/`(1, 4), `*`(C, `...
`assign`(R2, `+`(`-`(`/`(`*`(`*`(64, `+`(`-`(sin(`*`(C, `*`(Pi)))), `-`(`*`(4, `*`(sin(`*`(C, `*`(Pi))), `*`(`^`(cos(`+`(`/`(`*`(`/`(1, 2), `*`(Pi)), `*`(C)))), 2), `*`(cos(`+`(`*`(`/`(1, 4), `*`(C, `...
 

Тильда после имени  переменной (C~) означает, что на переменную наложены ограничения. 

Попробуем еще раз решить уравнение с помощью функции solve, но уже относительно переменной C. 

> solve(R2,C);
 

 

Warning, solve may be ignoring assumptions on the input variables.
Warning, solutions may have been lost
 

Результат тот же − решение не найдено! 

Для решения этого уравнения воспользуемся  более мощным средством −  Engine из пакета SolveTools и преобразуем полученное решение к виду с плавающей точкой. 

> SolveTools:-Engine({R2},{C});
evalf(%);
 

 

[{C = -2}, {C = 4}, {C = `+`(`/`(`*`(4, `*`(RootOf(`+`(64, `*`(405504, `*`(`^`(cos(`+`(`/`(`*`(`/`(1, 8), `*`(`^`(Pi, 2))), `*`(_Z)))), 12))), `-`(`*`(475136, `*`(`^`(cos(`+`(`/`(`*`(`/`(1, 8), `*`(`^...
[{C = -2}, {C = 4}, {C = `+`(`/`(`*`(4, `*`(RootOf(`+`(64, `*`(405504, `*`(`^`(cos(`+`(`/`(`*`(`/`(1, 8), `*`(`^`(Pi, 2))), `*`(_Z)))), 12))), `-`(`*`(475136, `*`(`^`(cos(`+`(`/`(`*`(`/`(1, 8), `*`(`^...
[{C = -2}, {C = 4}, {C = `+`(`/`(`*`(4, `*`(RootOf(`+`(64, `*`(405504, `*`(`^`(cos(`+`(`/`(`*`(`/`(1, 8), `*`(`^`(Pi, 2))), `*`(_Z)))), 12))), `-`(`*`(475136, `*`(`^`(cos(`+`(`/`(`*`(`/`(1, 8), `*`(`^...
[{C = -2}, {C = 4}, {C = `+`(`/`(`*`(4, `*`(RootOf(`+`(64, `*`(405504, `*`(`^`(cos(`+`(`/`(`*`(`/`(1, 8), `*`(`^`(Pi, 2))), `*`(_Z)))), 12))), `-`(`*`(475136, `*`(`^`(cos(`+`(`/`(`*`(`/`(1, 8), `*`(`^...
[{C = -2}, {C = 4}, {C = `+`(`/`(`*`(4, `*`(RootOf(`+`(64, `*`(405504, `*`(`^`(cos(`+`(`/`(`*`(`/`(1, 8), `*`(`^`(Pi, 2))), `*`(_Z)))), 12))), `-`(`*`(475136, `*`(`^`(cos(`+`(`/`(`*`(`/`(1, 8), `*`(`^...
[{C = -2}, {C = 4}, {C = `+`(`/`(`*`(4, `*`(RootOf(`+`(64, `*`(405504, `*`(`^`(cos(`+`(`/`(`*`(`/`(1, 8), `*`(`^`(Pi, 2))), `*`(_Z)))), 12))), `-`(`*`(475136, `*`(`^`(cos(`+`(`/`(`*`(`/`(1, 8), `*`(`^...
[{C = -2}, {C = 4}, {C = `+`(`/`(`*`(4, `*`(RootOf(`+`(64, `*`(405504, `*`(`^`(cos(`+`(`/`(`*`(`/`(1, 8), `*`(`^`(Pi, 2))), `*`(_Z)))), 12))), `-`(`*`(475136, `*`(`^`(cos(`+`(`/`(`*`(`/`(1, 8), `*`(`^...
[{C = -2}, {C = 4}, {C = `+`(`/`(`*`(4, `*`(RootOf(`+`(64, `*`(405504, `*`(`^`(cos(`+`(`/`(`*`(`/`(1, 8), `*`(`^`(Pi, 2))), `*`(_Z)))), 12))), `-`(`*`(475136, `*`(`^`(cos(`+`(`/`(`*`(`/`(1, 8), `*`(`^...
[{C = -2}, {C = 4}, {C = `+`(`/`(`*`(4, `*`(RootOf(`+`(64, `*`(405504, `*`(`^`(cos(`+`(`/`(`*`(`/`(1, 8), `*`(`^`(Pi, 2))), `*`(_Z)))), 12))), `-`(`*`(475136, `*`(`^`(cos(`+`(`/`(`*`(`/`(1, 8), `*`(`^...
[{C = -2}, {C = 4}, {C = `+`(`/`(`*`(4, `*`(RootOf(`+`(64, `*`(405504, `*`(`^`(cos(`+`(`/`(`*`(`/`(1, 8), `*`(`^`(Pi, 2))), `*`(_Z)))), 12))), `-`(`*`(475136, `*`(`^`(cos(`+`(`/`(`*`(`/`(1, 8), `*`(`^...
[{C = -2}, {C = 4}, {C = `+`(`/`(`*`(4, `*`(RootOf(`+`(64, `*`(405504, `*`(`^`(cos(`+`(`/`(`*`(`/`(1, 8), `*`(`^`(Pi, 2))), `*`(_Z)))), 12))), `-`(`*`(475136, `*`(`^`(cos(`+`(`/`(`*`(`/`(1, 8), `*`(`^...
[{C = -2}, {C = 4}, {C = `+`(`/`(`*`(4, `*`(RootOf(`+`(64, `*`(405504, `*`(`^`(cos(`+`(`/`(`*`(`/`(1, 8), `*`(`^`(Pi, 2))), `*`(_Z)))), 12))), `-`(`*`(475136, `*`(`^`(cos(`+`(`/`(`*`(`/`(1, 8), `*`(`^...
[{C = -2}, {C = 4}, {C = `+`(`/`(`*`(4, `*`(RootOf(`+`(64, `*`(405504, `*`(`^`(cos(`+`(`/`(`*`(`/`(1, 8), `*`(`^`(Pi, 2))), `*`(_Z)))), 12))), `-`(`*`(475136, `*`(`^`(cos(`+`(`/`(`*`(`/`(1, 8), `*`(`^...
[{C = -2}, {C = 4}, {C = `+`(`/`(`*`(4, `*`(RootOf(`+`(64, `*`(405504, `*`(`^`(cos(`+`(`/`(`*`(`/`(1, 8), `*`(`^`(Pi, 2))), `*`(_Z)))), 12))), `-`(`*`(475136, `*`(`^`(cos(`+`(`/`(`*`(`/`(1, 8), `*`(`^...
[{C = -2}, {C = 4}, {C = `+`(`/`(`*`(4, `*`(RootOf(`+`(64, `*`(405504, `*`(`^`(cos(`+`(`/`(`*`(`/`(1, 8), `*`(`^`(Pi, 2))), `*`(_Z)))), 12))), `-`(`*`(475136, `*`(`^`(cos(`+`(`/`(`*`(`/`(1, 8), `*`(`^...
[{C = -2.}, {C = 4.}, {C = -2.000000000}]
 

С учетом ранее сделанной замены  получим значения  

Подстановка констант _C3, _C4, Z (все три константы хранятся в переменной S)  и _c[1] = 4  в общее решение  приводит к неопределенности типа `*`(0, `/`(0)). 

> simplify(subs(S,R)):
simplify(subs({_c[1]=4},%));
 

Error, (in simplify/recurse) indeterminate expression of the form 0/0
 

Подстановка констант _C3, _C4, Z  и _c[1] = 16  в общее решение приводит к решению задачи. Для упрощения полученного выражения применим функцию combine – мощное средство преобразования тригонометрических и ряда других выражений. 

> simplify(subs(S,R));
simplify(subs({_c[1]=16},%));
SOL_p:=combine(%);
 

 

 

`+`(`-`(`/`(`*`(`*`(64, `+`(`-`(`*`(`^`(4, `+`(`-`(sqrt(_c[1])))), `*`(`^`(r, sqrt(_c[1])), `*`(sin(`*`(sqrt(_c[1]), `*`(phi))))))), `-`(`*`(`^`(2, `+`(2, `-`(`*`(2, `*`(sqrt(_c[1])))))), `*`(`^`(r, s...
`+`(`-`(`/`(`*`(`*`(64, `+`(`-`(`*`(`^`(4, `+`(`-`(sqrt(_c[1])))), `*`(`^`(r, sqrt(_c[1])), `*`(sin(`*`(sqrt(_c[1]), `*`(phi))))))), `-`(`*`(`^`(2, `+`(2, `-`(`*`(2, `*`(sqrt(_c[1])))))), `*`(`^`(r, s...
`+`(`-`(`/`(`*`(`*`(64, `+`(`-`(`*`(`^`(4, `+`(`-`(sqrt(_c[1])))), `*`(`^`(r, sqrt(_c[1])), `*`(sin(`*`(sqrt(_c[1]), `*`(phi))))))), `-`(`*`(`^`(2, `+`(2, `-`(`*`(2, `*`(sqrt(_c[1])))))), `*`(`^`(r, s...
`+`(`-`(`/`(`*`(`*`(64, `+`(`-`(`*`(`^`(4, `+`(`-`(sqrt(_c[1])))), `*`(`^`(r, sqrt(_c[1])), `*`(sin(`*`(sqrt(_c[1]), `*`(phi))))))), `-`(`*`(`^`(2, `+`(2, `-`(`*`(2, `*`(sqrt(_c[1])))))), `*`(`^`(r, s...
`+`(`-`(`/`(`*`(`*`(64, `+`(`-`(`*`(`^`(4, `+`(`-`(sqrt(_c[1])))), `*`(`^`(r, sqrt(_c[1])), `*`(sin(`*`(sqrt(_c[1]), `*`(phi))))))), `-`(`*`(`^`(2, `+`(2, `-`(`*`(2, `*`(sqrt(_c[1])))))), `*`(`^`(r, s...
`+`(`-`(`/`(`*`(`*`(64, `+`(`-`(`*`(`^`(4, `+`(`-`(sqrt(_c[1])))), `*`(`^`(r, sqrt(_c[1])), `*`(sin(`*`(sqrt(_c[1]), `*`(phi))))))), `-`(`*`(`^`(2, `+`(2, `-`(`*`(2, `*`(sqrt(_c[1])))))), `*`(`^`(r, s...
`+`(`-`(`*`(`/`(1, 8), `*`(`^`(r, 4), `*`(sin(`+`(`*`(4, `*`(phi)))))))), `*`(`^`(r, 4), `*`(sin(`+`(`*`(4, `*`(phi)))), `*`(`^`(cos(`+`(`*`(`/`(1, 8), `*`(Pi)))), 2)))), `-`(`*`(`^`(r, 4), `*`(sin(`+...
`assign`(SOL_p, `+`(32, `-`(`*`(`/`(1, 8), `*`(`^`(r, 4), `*`(cos(`+`(`*`(4, `*`(phi))))))))))
 

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

> pd:={r=sqrt(x^2+y^2),phi=arctan(y/x)};
SOL_d:=PDEtools[dchange](pd,SOL_p);
 

 

`assign`(pd, {phi = arctan(`/`(`*`(y), `*`(x))), r = sqrt(`+`(`*`(`^`(x, 2)), `*`(`^`(y, 2))))})
`assign`(SOL_d, `+`(32, `-`(`*`(`/`(1, 8), `*`(`^`(`+`(`*`(`^`(x, 2)), `*`(`^`(y, 2))), 2), `*`(cos(`+`(`*`(4, `*`(arctan(`/`(`*`(y), `*`(x)))))))))))))
 

Воспользуемся тригонометрическим тождеством 

> cos(4*arctan(y/x))=op(3,trigsubs(cos(4*arctan(y/x))));
subs(%,SOL_d);
 

 

cos(`+`(`*`(4, `*`(arctan(`/`(`*`(y), `*`(x))))))) = `+`(`*`(2, `*`(`^`(cos(`+`(`*`(2, `*`(arctan(`/`(`*`(y), `*`(x))))))), 2))), `-`(1))
`+`(32, `-`(`*`(`/`(1, 8), `*`(`^`(`+`(`*`(`^`(x, 2)), `*`(`^`(y, 2))), 2), `*`(`+`(`*`(2, `*`(`^`(cos(`+`(`*`(2, `*`(arctan(`/`(`*`(y), `*`(x))))))), 2))), `-`(1)))))))
 

Воспользуемся еще одним тригонометрическим тождеством, и после упрощения выражения получим окончательное решение. 

> cos(2*arctan(y/x))^2 = op(11,trigsubs(cos(2*arctan(y/x))^2));
SOL:=simplify(subs(%,%%));
 

 

`*`(`^`(cos(`+`(`*`(2, `*`(arctan(`/`(`*`(y), `*`(x))))))), 2)) = `/`(`*`(`^`(`+`(1, `-`(`*`(`^`(tan(arctan(`/`(`*`(y), `*`(x)))), 2)))), 2)), `*`(`^`(`+`(1, `*`(`^`(tan(arctan(`/`(`*`(y), `*`(x)))), ...
`assign`(SOL, `+`(32, `-`(`*`(`/`(1, 8), `*`(`^`(x, 4)))), `*`(`/`(3, 4), `*`(`^`(x, 2), `*`(`^`(y, 2)))), `-`(`*`(`/`(1, 8), `*`(`^`(y, 4))))))
 

Окончательно запишем решение как функцию F ( x, y). 

> F:=unapply(SOL,x,y);
 

`assign`(F, proc (x, y) options operator, arrow; `+`(32, `-`(`*`(`/`(1, 8), `*`(`^`(x, 4)))), `*`(`/`(3, 4), `*`(`^`(x, 2), `*`(`^`(y, 2)))), `-`(`*`(`/`(1, 8), `*`(`^`(y, 4))))) end proc)
 

Построим полученное решение в круге радиусом 4. 

> plot3d(F(x,y),x=-4..4,y=-sqrt(16-x^2)..sqrt(16-x^2),axes=framed,title="F(x,y)");
 

Plot_2d
 

Как показывает рассмотренный пример, даже имея в распоряжении такое мощное средство как Maple, задача получается достаточно трудоемкой, требующей определенного уровня математических знаний и опыта.