Решение дифференциальных уравнений в частных производных методом функционального программирования в Maple
КУРСОВАЯ
РАБОТА
Решение
Дифференциальных уравнений в частных производных методом функционального
программирования в maple
РЕФЕРАТ
Курсовая работа посвящена решению
дифференциальных уравнений в частных производных методом функционального программирования
в прикладном математическом пакете Maple.
Составлены таблицы типов информации и типы
операций, требующиеся при формальном построении решения дифференциального
уравнения в частных производных.
На примере были рассмотрены функциональные
алгоритмы построения формальных решений одномерных и двумерных уравнений
параболического типа методами, такими как метод разделенных переменных, методы
Грина и другие. В приложении показаны примеры решения неоднородных уравнений
параболического типа методом Грина.
Работа состоит из введения, 3 разделов, 2
таблиц, заключения, библиографического списка из 4 источников, одного
приложения, в котором приведена реализация примеров решения уравнений.
СОДЕРЖАНИЕ
ВВЕДЕНИЕ
. Построение
формального решения на входном Maple-языке
. Метод
разделения переменных
. Метод
функций Грина и другие методы
ЗАКЛЮЧЕНИЕ
СПИСОК
ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
ПРИЛОЖЕНИЕ
А
ВВЕДЕНИЕ
Прикладной математический пакет
MAPLE обладает большим набором инструментов для работы с дифференциальными
уравнениями в частных производных. Среди них: установление порядка уравнения,
исследование на возможность разделения переменных, определение условий поиска
решения в виде суммы или произведения функций, получение решения из функций,
получаемых командой pdsolve для разделенных уравнений, выполнение замены
переменных и различных подстановок и т.п.
Между тем последовательное решение
дифференциальных уравнений в частных производных (даже в самых простых случаях)
представляет собой сложную комплексную задачу, требующую специальных
математических навыков, корректного учета начальных и граничных условий,
проведения исследования полученных решений. При этом трудоемкие разделы
математики - векторный анализ, специальные функции, теория рядов, интегральные
преобразования и другие - являются необходимыми средствами для решения задач
математической физики. Заметим, что эти математические инструменты
высокоразвиты в MAPLE и удобны для применения, по их использованию в научных
исследованиях и образовании имеется обширная литература. Проблема же решения
дифференциальных уравнений в частных производных с использованием
математических пакетов в виду ее сложности до сих пор требует особых подходов и
разработок. При этом оказывается, что для большого числа задач с использованием
символьного MAPLE-процессора можно составить достаточно универсальные
алгоритмы, с помощью которых на входном MAPLE-языке можно запрограммировать
формальное построение решения дифференциальных уравнений в частных производных.
Построенные общие решения могут быть программными же средствами использованы
для конкретных физических задач.
1.
Построение формального решения на входном Maple-языке
Проблема решения дифференциальных уравнений в
частных производных средствами MAPLE представляет собой программную задачу, сочетающую
использование инструментов пакета с необходимыми дополнительными алгоритмами:
учет начальных и граничных условий (НУ и ГУ), сложные и, зачастую,
нетривиальные преобразования промежуточных результатов (основанные, например,
на исследовании асимптотического поведения функций), программное использование
дополнительной и/или специальной информации (например, использование
рекуррентных соотношений для некоторых специальных функций, которые пока
недоступны средствами MAPLE) и т.п. Более того, при решении сложных задач
требуется программирование отдельных этапов решения с последующим объединением
промежуточных результатов, а также создания комплексов программ (например, при
комплексном аналитическом и численном - решении уравнений и различных способах
визуализации и интерпретации результатов).
Для программирования построения формального
решения на входном MAPLE-языке необходим ввод необходимой начальной информации
(табл. 1) с последующим выполнением определенных алгоритмических операций
(табл. 2).
Таблица 1
Типы информации при решении дифференциальных
уравнений в частных производных средствами MAPLE
Тип
информации
|
Содержание
|
Основная
Информация
|
Вызов
пакетов расширения.
|
|
Задание
системы координат.
|
|
Ввод
дифференциального уравнения в частных производных.
|
|
Ввод
начальных и граничных условий.
|
|
Ввод
различных функций и операторов.
|
|
Вызов
средств аналитического или численного решения уравнений.
|
Дополнительная
информация
|
Представление
функции при разделении переменных.
|
|
Выполнение
замены переменных(при необходимости).
|
|
Переопределение
постоянных, которые по умолчанию присваиваются пакетом.
|
|
Ввод
математической информации, недопустимой в Maple.
|
|
Ввод
специфических данных(физические параметры, габариты и т.д.).
|
|
Ввод
и вывод информации, связанной с текущим контролем выполняемых
операций(получение результата для известного частного случая, контроль
другими средствами).
|
|
Ввод
информации о форме представления результата (экспоненциальная,
тригонометрическая и т.п. формы решения).
|
|
Ввод
информации для исследования промежуточных и конечных результатов (о порядке
разложения в ряд, асимптотике, сравнениях и т.п.).
|
Рабочая
информация
|
Последовательность
вывода полученных результатов.
|
|
Форматы
переменных и данных.
|
|
Вывод
промежуточных результатов.
|
|
Типы
и форматы графиков.
|
|
Пределы
изменения переменных.
|
Заметим, что если ввод и использование основной
информации является хорошо разработанным алгоритмом для многих задач, решаемых
в MAPLE, то именно программирование, использование дополнительной и рабочей
информации, интерпретация промежуточных результатов и их дальнейшее
использование при решении уравнений в частных производных представляет собой
основную программную задачу.
При этом программные средства MAPLE дают
возможность построения формализма решения в терминах и обозначениях известных
классических подходов к решениям таких задач. Возможно, это и не является
необходимым моментом, но может оказаться важным не только с точки методической
точки зрения, но и по ряду существенных моментов, включающих апробацию разрабатываемых
методов решений, их интерпретацию и применение.
Таблица 2
Основные типы операций при формальном построении
решения дифференциального уравнения в частных производных средствами MAPLE
Тип
операции
|
Содержание
|
Выход
|
1.
Ввод уравнения
|
Программная
запись уравнения на входном MAPLE-языке.
|
Уравнение
на входном MAPLE-языке.
|
2.
Ввод дополнительных данных
|
Программная
запись НУ и ГУ.
|
НУ
и ГУ на входном MAPLE-языке.
|
3.
Использование средств исследования уравнения суммы или произведения функций.
|
Установление
порядка ДУ.
|
Вывод
ответов программой.
|
|
Исследование
возможности разделения переменных.
|
|
|
Определение
условий поиска решения в виде.
|
|
4.
Использование средств преобразования уравнения.
|
Выполнение
замены переменных.
|
Вывод
преобразованного уравнения.
|
|
Выполнение
подстановок.
|
|
Тип
операции
|
Выход
|
5.
Использование основных инструментов решения уравнения
|
Получение
разделенных уравнений по умолчанию с применением команды «pdsolve».
|
Вывод
разделенных уравнений.
|
|
Получение
разделенных уравнений в заданном виде с применением операторов «pdsolve» и
«hint».
|
|
|
Получение
решения с применением команды «build» (для тех случаев, когда это возможно).
|
Вывод
решения уравнения.
|
6.
Использование дополнительных инструментов решения уравнения
|
Учет
НУ и ГУ при решении уравнений с применением команды «conds» (для тех
случаев,когда это возможно).
|
Вывод
решения уравнений с (частичным) учетом НУ и ГУ.
|
|
Проверка
полученного решения с применением команды «pdetest».
|
Вывод
результатов проверки.
|
7.
Решение разделенных уравнений и учет НУ и ГУ на уровне разделенных уравнений
|
Решение
задач на собственные значения и собственные функции.
|
Вывод
решений разделенных уравнений в общем виде.
|
|
Определение
собственных значений и собственных функций.
|
Вывод
собственных функций
|
|
Определение
коэффициентов разложения.
|
|
8.
Построение частного решения
|
Получение
частного решения исходного уравнения с учетом исходной факторизации при
разделении переменных и коэффициентов разложения.
|
Вывод
частного решения
|
9.
Построение общего решения
|
Построение
общего решения как суперпозиции частных решений.
|
Вывод
общего решения
|
|
Учет
НУ и определение оставшихся коэффициентов разложения
|
|
|
|
|
|
|
|
На основе этих операций можно сформулировать
программные алгоритмы построения формальных решений в виде бесконечных рядов,
которые необходимо исследовать на сходимость и дифференцируемость. Конечно,
операции и действия могут меняться в зависимости от размерности задачи, типов
начальных и граничных условий, а также от метода построения решения. Затем (в
зависимости от конкретной ситуации) полученные средствами MAPLE решения можно
визуализировать и исследовать с целью их интерпретации.
2. Метод разделения
переменных
Рассмотрим подробнее метод разделения
переменных. Основными этапами построения решения этим методом являются:
) ввод уравнения и разделение переменных;
) решение разделенных уравнений;
) построение общего решения;
) учет начальных условий и определение
коэффициентов разложения;
) вывод общего решения в развернутом виде и его
преобразование.
В простейших случаях такое количество этапов
решения и, следовательно, количество программных позиций, будет достаточно, для
многомерных систем число этапов и программных строк может увеличиться.
Для одномерных систем представим функциональные
алгоритмы построения решений задачи о теплопроводности в бесконечном стержне.
Функциональный алгоритм построения формальных
решений одномерных уравнений параболического типа методом разделения
переменных:
1. Ввод уравнения и разделение
переменных
PDE:=diff(u(t,x),t)=a^2*diff(u(t,x),x,x);:=pdsolve(PDE,HINT=T(t)*X(x));
2. Переобозначение постоянной и решение
разделенных уравнений
_c[1]=-lambda^2:
dsolve(diff(T(t),t)=-lambda^2*T(t)*a^2);(diff(X(x),`$`(x,2))=-lambda^2*X(x));
3. Построение общего решения
[lambda](t,x):=(C1(lambda)*sin(lambda*x)+
+C2(lambda)*cos(lambda*x))*exp(-lambda^2*a
^2*t);
u(t,x):=int(u[lambda](t,x),
lambda=-infinity..infinity);
4. Учет начальных
условий
и
определение
коэффициентов
разложения
_0(t,x):=eval(subs(t=0,
u(t,x)))=f(x);(lambda):=(1/(2*Pi))*int(f(xi)*sin(lambda*xi),xi=-infinity..infinity);
C2(lambda):=(1/(2*Pi))*int(f(xi)*cos(lambda*xi),
xi=-infinity..infinity);
5. Вывод общего решения в развернутом
виде и его преобразование
(t,x):=combine(int((C1(lambda)*sin(lambda*x)+
+C2(lambda)*cos(lambda*x))*exp(-lambda^2*a^2*t),=-infinity..infinity));(t,x):=(1/(2*a*sqrt(Pi*t)))*
int(f(xi)*exp (-1/4*(x-xi)^2/ a^2/t),xi=
=-infinity..infinity);
Для многомерных систем представим
функциональные алгоритмы построения решений задачи о теплопроводности в
однородном цилиндре.
Функциональный алгоритм построения
формальных решений двумерных уравнений параболического типа методом разделения
переменных:
. Ввод уравнения и разделение
переменных
:=diff(u(t,r),t)=a^2*(diff(u(t,r),r,r)+(1/r)*diff(u(t,r),r));:=pdsolve(PDE,HINT=T(t)*R(r));
. Переобозначения постоянной и
решение разделенных уравнений
_c[1]=-lambda^2*a^2:
dsolve(diff(T(t),t)=-lambda^2*a^2*T(t));(diff(R(r),`$`(r,2))=-lambda^2*R(r)-diff(R(r),
r)/r);
3. Учет условия регулярности
решения в начале координат
(0,lambda*r)=series(BesselJ(0,lambda*r),r=0,4):(0,lambda*r)=series(BesselY(0,lambda*r),r=0,4):_C2=0;
. Учет граничного условия для решения на краю области:
r = r0
[n](r):=BesselJ(0,lambda[n]
*r);(0,mu[n])=0;:=BesselJZeros:mu(0,n);[n]:=mu(0,n)/r0;
5. Вывод решений радиального и
временного уравнений
[n](r):=BesselJ(0,r*lambda
[n]);[n](t):= C[n]*exp(-lambda[n]^2*a^2*t);
. Построение общего решения
[n](t,r):=T[n](t)*R[n](r):
u(t,r):=Sum(u[n](t,r), n=1..infinity);
. Замена переменной
(t,rho):=subs(r=rho*r0,u(t,r));
(subs(t=0,u(t,rho))=
F(rho*r0));
. Определение
коэффициентов
[n]:=2/BesselJ(1,BesselJZeros(0,n))^2*
*int(rho*BesselJ(0,BesselJZeros(0,n)*rho)*F(rho*r0),rho
= 0 .. 1);
. Вывод общего решения
(t,rho):=Sum(C[n]*exp(-BesselJZeros(0,n)^2/r0^2*a^2*t)*
*BesselJ(0,BesselJZeros(0,n)*rho),n=1..infinity);
3. Метод
функций Грина и другие методы
Средства MAPLE позволяют
использовать и другие методы решения уравнений. Рассмотрим процедуру построения
формальных решений неоднородных уравнений параболического типа методом функций
Грина.
Основными этапами построения решения
этим методом являются:
) ввод неоднородного уравнения;
) ввод представления для решения
уравнения в виде ряда Фурье;
) разложение функций в ряд Фурье;
) определение коэффициентов
разложения;
) подстановка разложений функций в
исходное уравнение;
) представление решения в виде суммы
решений однородного и неоднородного уравнений;
) учет НУ, определение коэффициентов
и вывод решения однородного уравнения;
) построение функции Грина;
) вывод решения однородного
уравнения и частного решения неоднородного уравнения с помощью функции Грина;
) вывод решения уравнения.
Для неоднородных уравнений
представим функциональные алгоритмы построения решений задачи о
теплопроводности.
Функциональный алгоритм формального
решения неоднородного уравнения параболического типа методом функций Грина:
. Ввод неоднородного уравнения
:=diff(u(t,x),t)=a^2*diff(u(t,x),x,x)+w(t,x);
. Ввод представления для решения
уравнения в виде ряда Фурье
u(t,x):=Sum(u[n](t)*sin(Pi*n*
x/L),n=1..infinity);
. Разложение функций в ряд Фурье
(t,x):=Sum(w[n](t)*sin(Pi*n*x/
L),n=1..infinity);(x):=Sum(F[n]*sin(Pi*n*x/L),n=1..infinity);
. Определение коэффициентов разложения
[n](t)=(2/L)*int(w(t,xi)*sin(Pi*n*xi/l),
xi=0..L);[n]=(2/L)*int(F(xi)*sin(Pi*n* xi/L),xi=0..L);
5. Подстановка разложений функций
u(t,x) и w(t,x) в исходное уравнение PDE;
. Представление решения в виде
суммы решений однородного и неоднородного уравнений
[n](t)=u_Un[n](t)+u_Nu[n](t):
u_Un[n](t):=_C1*exp(-a^2*Pi^2*n^2/L^2*t):
u_Nu[n](t):=(Int(w[n](tau)*exp(a^2*Pi^2*n^2/L^2*(tau-t)),tau)):
7. Учет начальных условий,
определение коэффициентов и вывод решения однородного уравнения
_0:=subs(t=0,u(t,x))=F(x):
u[n](0)=F[n];(subs(t=0,u_Un[n](t)))= F[n];
. Построение функции Грина
(x,xi,t,tau):=Sum(2/L*exp(-a^2*Pi^2*n^2/L^2*(ttau))*
*sin(Pi*n*xi/L)*sin(Pi*n*x/L),n=1..infinity);
. Вывод решения однородного
уравнения и частного решения неоднородного уравнения с помощью функции Грина
_Un(t,x):=Sum(u_Un[n](t)*sin(Pi*n*x/L),n=1..infinity);_Nu(t,x):=int(int(G(x,xi,t,tau)*w(tau,xi),xi=0..L),tau=0..t);
10. Вывод решения исходного
неоднородного уравнения
u(t,x):=u_Un(t,x)+u_Nu(t,x);
ЗАКЛЮЧЕНИЕ
К дифференциальным уравнениям с
частными производными мы приходим при решении самых разнообразных задач.
Например, при помощи дифференциальных уравнений с частными производными можно
решать задачи теплопроводности, диффузии, многих физических и химических
процессов.
Курсовая работа посвящена именно
решению дифференциальных уравнений в частных производных методом
функционального программирования в прикладном математическом пакете Maple.
Были рассмотрены основные этапы
реализации решений уравнений математическими методами, такими как метод
разделенных переменных и метод Грина. Показаны решения уравнений параболического
типа, и в приложении приведены примеры решения неоднородных уравнений методом
функции Грина.
СПИСОК ИСПОЛЬЗОВАННЫХ
ИСТОЧНИКОВ
1. Араманович И.Г., Левин В.И..
Уравнения математической физики. - М.: Наука, 1964.
2. Голоскоков Д.П. Уравнения математической
физики. Решение задач в системе Maple. -С-Пб: Питер, 2004.
. Сдвижников О.А., Математика на
компьютере: Maple8.
М.:Солон-Пресс, 2003. -176 с.
. Тихоненко А.В. Компьютерные
математические пакеты в курсе «Линейные и нелинейные уравнения физики». Часть
2. Параболические уравнения в MAPLE. - Обнинск: ИАТЭ, 2005.- 80 с.
ПРИЛОЖЕНИЕ А
Листинг программы на Maple
13
> restart;
Решить неоднородное уравнение
с неоднородностью
>
w(tau,xi):=mu*(x-L/2)*sin(x/7)*t*exp(-alpha*t);
и однородными начальными условиями.
Функция Грина (функция источника):
> G(x,xi,t,tau):=sum(2/L*exp(-a^2*Pi^2*n^2/L^2*(t-tau))*sin(Pi*n*xi/L)*sin(Pi*n*x/L),n
= 1 .. infinity);
Решение уравнения:
>
u(t,x):=simplify(sum(int(2/L*exp(-a^2*Pi^2*n^2/L^2*(t-tau))*int(mu*(x-L/2)*sin(x/7)*t*exp(-alpha*t)*sin(Pi*n*xi/L),xi
= 0 .. L),tau = 0 .. t)*sin(Pi*n*x/L),n = 1 .. infinity)) assuming n::integer;
Представим полученные решения в виде двумерных
анимированных графиков:
> with(plots):(plot,[w(t,x),x=0..L,
color=blue],t=0..40,frames=20,thickness=3);(plot,[u(t,x),x=0..L],t=0..40,frames=20,thickness=3);,
the name changecoords has been redefined
прикладной математический
дифференциальный уравнение
> restart;
Решить неоднородное уравнение
с неоднородностью
> w(t,x) :=x->piecewise([0, x
< 995/2],[1, x < 1005/2],[0, 1000 < x])*t*exp(-.25*t);
и однородными начальными условиями.
Функция Грина (функция источника):
>
G(x,xi,t,tau):=sum(2/L*exp(-a^2*Pi^2*n^2/L^2*(t-tau))*sin(Pi*n*xi/L)*sin(Pi*n*x/L),n
= 1 .. infinity);
Решение уравнения:
>
u(t,x):=simplify(sum(int(2/L*exp(-a^2*Pi^2*n^2/L^2*(t-tau))*int(mu*exp(-alpha*t)*sin(Pi*n*xi/L),xi
= l1..l2),tau = 0 .. t)*sin(Pi*n*x/L),n = 1 .. infinity)) assuming n::integer;
>
a:=0.1;L:=1000;mu:=1;l1:=L/2-L/10;l2:=L/2+L/10;alpha:=0.25;(t,x):=sum(2*L^2*mu*(cos(Pi*n*l1/L)-cos(Pi*n*l2/L))*(-1+exp(a^2*Pi^2*n^2/L^2*t))*exp(-t*(a^2*Pi^2*n^2+alpha*L^2)/L^2)*sin(Pi*n*x/L)/a^2/Pi^3/n^3,n
= 1 .. 1000):(x):=piecewise(x<l1,0, x<l2,mu,
x>L,0);(t,x):=w(x)*t*exp(-alpha*t);
Представим полученные решения в виде двумерных
анимированных графиков:
>
with(plots):(plot,[w(t,x),x=0..L,
color=blue],t=0..40,frames=20,thickness=3);(plot,[u(t,x),x=0..L],t=0..40,frames=20,thickness=3);,
the name changecoords has been redefined