Решение дифференциальных уравнений в частных производных методом функционального программирования в Maple
Построение формального решения на входном Maple-языке Проблема решения дифференциальных уравнений в частных производных средствами MAPLE представляет собой программную задачу, сочетающую использование инструментов пакета с необходимыми дополнительными алгоритмами: учет начальных и граничных условий (НУ и ГУ), сложные и, зачастую, нетривиальные преобразования промежуточных результатов (основанные… Читать ещё >
Решение дифференциальных уравнений в частных производных методом функционального программирования в Maple (реферат, курсовая, диплом, контрольная)
КУРСОВАЯ РАБОТА Решение Дифференциальных уравнений в частных производных методом функционального программирования в maple
РЕФЕРАТ Курсовая работа посвящена решению дифференциальных уравнений в частных производных методом функционального программирования в прикладном математическом пакете Maple.
Составлены таблицы типов информации и типы операций, требующиеся при формальном построении решения дифференциального уравнения в частных производных.
На примере были рассмотрены функциональные алгоритмы построения формальных решений одномерных и двумерных уравнений параболического типа методами, такими как метод разделенных переменных, методы Грина и другие. В приложении показаны примеры решения неоднородных уравнений параболического типа методом Грина.
Работа состоит из введения, 3 разделов, 2 таблиц, заключения, библиографического списка из 4 источников, одного приложения, в котором приведена реализация примеров решения уравнений.
СОДЕРЖАНИЕ ВВЕДЕНИЕ
1. Построение формального решения на входном Maple-языке
2. Метод разделения переменных
3. Метод функций Грина и другие методы ЗАКЛЮЧЕНИЕ СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ ПРИЛОЖЕНИЕ А
ВВЕДЕНИЕ
Прикладной математический пакет 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) ввод уравнения и разделение переменных;
2) решение разделенных уравнений;
3) построение общего решения;
4) учет начальных условий и определение коэффициентов разложения;
5) вывод общего решения в развернутом виде и его преобразование.
В простейших случаях такое количество этапов решения и, следовательно, количество программных позиций, будет достаточно, для многомерных систем число этапов и программных строк может увеличиться.
Для одномерных систем представим функциональные алгоритмы построения решений задачи о теплопроводности в бесконечном стержне.
Функциональный алгоритм построения формальных решений одномерных уравнений параболического типа методом разделения переменных:
1. Ввод уравнения и разделение переменных
PDE:=diff (u (t, x), t)=a2*diff (u (t, x), x, x);
struc:=pdsolve (PDE, HINT=T (t)*X (x));
2. Переобозначение постоянной и решение разделенных уравнений
_c[1]=-lambda2: dsolve (diff (T (t), t)=-lambda2*T (t)*a2);
dsolve (diff (X (x),`$`(x, 2))=-lambda2*X (x));
3. Построение общего решения
u[lambda](t, x):=(C1(lambda)*sin (lambda*x)+
+C2(lambda)*cos (lambda*x))*exp (-lambda2*a ^2*t);
u (t, x):=int (u[lambda](t, x), lambda=-infinity.infinity);
4. Учет начальных условий и определение коэффициентов разложения
u0(t, x):=eval (subs (t=0, u (t, x)))=f (x);
C1(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. Вывод общего решения в развернутом виде и его преобразование
u (t, x):=combine (int ((C1(lambda)*sin (lambda*x)+
+C2(lambda)*cos (lambda*x))*exp (-lambda2*a2*t),
lambda=-infinity.infinity));
u (t, x):=(1/(2*a*sqrt (Pi*t)))* int (f (xi)*exp (-¼*(x-xi)^2/ a2/t), xi=
=-infinity.infinity);
Для многомерных систем представим функциональные алгоритмы построения решений задачи о теплопроводности в однородном цилиндре.
Функциональный алгоритм построения формальных решений двумерных уравнений параболического типа методом разделения переменных:
1. Ввод уравнения и разделение переменных
PDE:=diff (u (t, r), t)=a2*(diff (u (t, r), r, r)+(1/r)*diff (u (t, r), r));
struc:=pdsolve (PDE, HINT=T (t)*R®);
2. Переобозначения постоянной и решение разделенных уравнений
_c[1]=-lambda2*a2: dsolve (diff (T (t), t)=-lambda2*a2*T (t));
dsolve (diff (R®,`$`(r, 2))=-lambda2*R®-diff (R®, r)/r);
3. Учет условия регулярности решения в начале координат
BesselJ (0,lambda*r)=series (BesselJ (0,lambda*r), r=0,4):
BesselY (0,lambda*r)=series (BesselY (0,lambda*r), r=0,4):_C2=0;
4. Учет граничного условия для решения на краю области: r = r0
R[n]®:=BesselJ (0,lambda[n] *r);
BesselJ (0,mu[n])=0;
mu:=BesselJZeros:mu (0,n);
lambda[n]: =mu (0,n)/r0;
5. Вывод решений радиального и временного уравнений
R[n]®:=BesselJ (0,r*lambda [n]);
T[n](t):= C[n]*exp (-lambda[n]^2*a2*t);
6. Построение общего решения
u[n](t, r):=T[n](t)*R[n]®: u (t, r):=Sum (u[n](t, r), n=1.infinity);
7. Замена переменной
u (t, rho):=subs (r=rho*r0,u (t, r));
8. Учет начальных условий
simplify (subs (t=0,u (t, rho))= F (rho*r0));
9. Определение коэффициентов
C[n]: =2/BesselJ (1,BesselJZeros (0,n))^2*
*int (rho*BesselJ (0,BesselJZeros (0,n)*rho)*F (rho*r0), rho = 0. 1);
10. Вывод общего решения
(t, rho):=Sum (C[n]*exp (-BesselJZeros (0,n)^2/r02*a2*t)*
*BesselJ (0,BesselJZeros (0,n)*rho), n=1.infinity);
3. Метод функций Грина и другие методы Средства MAPLE позволяют использовать и другие методы решения уравнений. Рассмотрим процедуру построения формальных решений неоднородных уравнений параболического типа методом функций Грина.
Основными этапами построения решения этим методом являются:
1) ввод неоднородного уравнения;
2) ввод представления для решения уравнения в виде ряда Фурье;
3) разложение функций в ряд Фурье;
4) определение коэффициентов разложения;
5) подстановка разложений функций в исходное уравнение;
6) представление решения в виде суммы решений однородного и неоднородного уравнений;
7) учет НУ, определение коэффициентов и вывод решения однородного уравнения;
8) построение функции Грина;
9) вывод решения однородного уравнения и частного решения неоднородного уравнения с помощью функции Грина;
10) вывод решения уравнения.
Для неоднородных уравнений представим функциональные алгоритмы построения решений задачи о теплопроводности.
Функциональный алгоритм формального решения неоднородного уравнения параболического типа методом функций Грина:
1. Ввод неоднородного уравнения
PDE:=diff (u (t, x), t)=a2*diff (u (t, x), x, x)+w (t, x);
2. Ввод представления для решения уравнения в виде ряда Фурье
u (t, x):=Sum (u[n](t)*sin (Pi*n* x/L), n=1.infinity);
3. Разложение функций в ряд Фурье
w (t, x):=Sum (w[n](t)*sin (Pi*n*x/ L), n=1.infinity);
F (x):=Sum (F[n]*sin (Pi*n*x/L), n=1.infinity);
4. Определение коэффициентов разложения
w[n](t)=(2/L)*int (w (t, xi)*sin (Pi*n*xi/l), xi=0.L);
F[n]=(2/L)*int (F (xi)*sin (Pi*n* xi/L), xi=0.L);
5. Подстановка разложений функций u (t, x) и w (t, x) в исходное уравнение PDE;
6. Представление решения в виде суммы решений однородного и неоднородного уравнений
u[n](t)=u_Un[n](t)+u_Nu[n](t): u_Un[n](t):=_C1*exp (-a2*Pi2*n2/L2*t): u_Nu[n](t):=(Int (w[n](tau)*exp (a2*Pi2*n2/L2*(tau-t)), tau)):
7. Учет начальных условий, определение коэффициентов и вывод решения однородного уравнения
u0:=subs (t=0,u (t, x))=F (x): u[n](0)=F[n];
eval (subs (t=0,u_Un[n](t)))= F[n];
8. Построение функции Грина
G (x, xi, t, tau):=Sum (2/L*exp (-a2*Pi2*n2/L2*(ttau))*
*sin (Pi*n*xi/L)*sin (Pi*n*x/L), n=1.infinity);
9. Вывод решения однородного уравнения и частного решения неоднородного уравнения с помощью функции Грина
u_Un (t, x):=Sum (u_Un[n](t)*sin (Pi*n*x/L), n=1.infinity);
u_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.
3. Сдвижников О. А., Математика на компьютере: Maple8. М.:Солон-Пресс, 2003. -176 с.
4. Тихоненко А. В. Компьютерные математические пакеты в курсе «Линейные и нелинейные уравнения физики». Часть 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 (-a2*Pi2*n2/L2*(t-tau))*sin (Pi*n*xi/L)*sin (Pi*n*x/L), n = 1. infinity);
Решение уравнения:
> u (t, x):=simplify (sum (int (2/L*exp (-a2*Pi2*n2/L2*(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;
> a:=0.1;L:=100;mu:=1; alpha:=0.25;
u (t, x):=sum (-mu*sin (1/7*x)*t*L2*(-2*x+2*x*(-1)^n+L-L*(-1)^n)*(-1+exp (a2*Pi2*n2/L2*t))/a2/Pi3/n3*exp (-t*(a2*Pi2*n2+alpha*L2)/L2)*sin (Pi*n*x/L), n = 1. 300):
w (t, x):=mu*(x-L/2)*sin (x/7)*t*exp (-alpha*t);
Представим полученные решения в виде двумерных анимированных графиков:
> with (plots):
animate (plot,[w (t, x), x=0.L, color=blue], t=0.40,frames=20,thickness=3);
animate (plot,[u (t, x), x=0.L], t=0.40,frames=20,thickness=3);
Warning, 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 (-a2*Pi2*n2/L2*(t-tau))*sin (Pi*n*xi/L)*sin (Pi*n*x/L), n = 1. infinity);
Решение уравнения:
> u (t, x):=simplify (sum (int (2/L*exp (-a2*Pi2*n2/L2*(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;
u (t, x):=sum (2*L2*mu*(cos (Pi*n*l1/L)-cos (Pi*n*l2/L))*(-1+exp (a2*Pi2*n2/L2*t))*exp (-t*(a2*Pi2*n2+alpha*L2)/L2)*sin (Pi*n*x/L)/a2/Pi3/n3, n = 1. 1000):
w (x):=piecewise (xL, 0);
w (t, x):=w (x)*t*exp (-alpha*t);
Представим полученные решения в виде двумерных анимированных графиков:
> with (plots):
animate (plot,[w (t, x), x=0.L, color=blue], t=0.40,frames=20,thickness=3);
animate (plot,[u (t, x), x=0.L], t=0.40,frames=20,thickness=3);
Warning, the name changecoords has been redefined