7.7.5. Решение дифференциальных уравнении с двумя краевыми условиями
В решении ряда математических задач нужно найти решение дифференциального уравнения с двумя краевыми условиями. Например, в физике это задача стрельбы по летящей цели. Обычно такая задача решается
Для такого решения используется функция dsolve в следующем виде:
dsolve(odesys, numeric, vars, options)
Здесь:
• odesys — множество или список обыкновенных дифференциальных уравнений и двойных граничных условии;
• numeric — опция, задающая решение в численном виде;
• vars — опционально заданный параметр, задающий имя переменной в odesys;
• options — опционально заданные равенства (в форме keyword=value), определяющие краевые условия.
Пример решения дифференциального уравнения второго порядка с двумя граничными условиями представлен на рис. 7.27. Отчетливо видно, что найденная зависимость точно удовлетворяет краевым условиям.

Рис. 7.27. Пример решения дифференциального уравнения второго порядка с двумя граничными условиями
7.8. Решение дифференциальных уравнений с частными производными
7.8.1. Функция pdsolve
В Maple 9.5 имеется функция pdsolve для решения дифференциальных уравнений с частными производными. Она может использоваться в следующих формах записи:
pdsolve(PDE, f, HINT, INTEGRATE, build)
pdsolve(PDE_system, funcs, HINT, other_options)
pdsolve(PDE_system, conds, numeric, other_options)
pdsolve(PDE_system, conds, type=numeric, other_options)
Эта функция введена вместо устаревшей функции pdesolve. В функции pdsolve используются следующие параметры:
• PDE — одиночное дифференциальное уравнение с частными производными;
• PDE system — система дифференциальных уравнений с частными производными;
• conds — начальные или граничные условия;
• f — неопределенная функция или имя;
• funcs — (опция) множество или список с неопределенными функциями или именами;
• HINT — (опция) равенство в форме HINT=argument, где аргумент может быть символом '+', '*', любым алгебраическим выражением или строкой 'strip';
• INTEGRATE — (опция) задает автоматическое интегрирование для множества ODEs (если PDE решается при разделении переменных;
• build — опция, задающая попытку построения явного выражения для неопределенной функции, независимо от общности найденного решения;
• numeric — ключевое слова, задающее решение в численном виде;
• other options — другие опции.
7.8.2. Инструментальный пакет расширения PDEtool
Для решения дифференциальных уравнений с частными производными и его визуализации в Maple 9.5 служит специальный инструментальный пакет PDEtool:
> with(PDEtools);
Ввиду небольшого числа функций этого пакета приведем их определения:
build(sol) — конструирует улучшенную форму решения, полученного функцией pdsolve;
casesplit(sys, о1, o2, …) — преобразует форму дифференциального уравнения; charstrip(PDE, f) — находит характеристическую последовательность, дающую дифференциальное уравнение первого порядка;
dchange(tr,expr,o1,o2,…) — выполняет замену переменных в математических выражениях или функциях;
dcoeff(expr,y(x)) — возвращает коэффициенты полиномиала дифференциального уравнения;
declare(expr) и др. — задает функцию для компактного ее отображения;
difforder(a,x) — возвращает порядок дифференциала в алгебраическом выражении а;
dpolyform(sys,no_Fn,opts) — возвращает полиномиальную форму для заданной системы sys не полиномиальных дифференциальных уравнений;
dsubs(deriv1=a,…,expr) — выполняет дифференциальные подстановки в выражение expr;
mapde(PDE,into,f) — создает карту PDE в различных форматах into с опциональным заданием имени неизвестной функции f;
separability(PDE, F(x,y,…), '*') — определяет условия разделения для сумм или произведений PDE;
splitstrip(PDE, f) — разделяет характеристическую последовательность на несоединенные поднаборы;
splitsys(sys,funcs) — разделяет наборы уравнений (алгебраические и дифференциальные) на несоединенные поднаборы;
undeclare(f(x),…) и др. — отменяет задание функции для компактного ее отображения.
7.8.3. Примеры решения дифференциальных уравнений с частными производными
Примеры решения дифференциальных уравнений и систем с частными производными представлены ниже (файл pde):
> restart: with(PDEtools):
> PDE := x*diff(f(x, y), y) - diff(f(x,y),x)=f(x,y;^2*g(x)/h(y);

> ans := pdsolve(PDE);

> PDE := S(x,y)*diff(S(x,y),y,x) + diff(S(x,y),x)*diff(S(x,y),y) = 1;