При решении дифференциального уравнения искомой величиной является функция. Для ОДУ неизвестная функция — функция одной переменной. Дифференциальные уравнения в частных производных — это дифференциальные уравнения, в которых неизвестной является функция двух или большего числа переменных. Mathcad имеет ряд встроенных функций, предназначенных для решения ОДУ. Каждая из этих функций предназначена для численного решения дифференциального уравнения. В результате решения получается матрица, содержащая значения функции, вычисленные на некотором множестве точек (на некоторой сетке значений). Для каждого алгоритма, который используется при решении дифференциальных уравнений, Mathcad имеет различные встроенные функции. Несмотря на различные методы поиска решения, каждая из этих функций требует, чтобы были заданы по крайней мере следующие величины, необходимые для поиска решения:
- Начальные условия.
- Набор точек, в которых нужно найти решение.
- Само дифференциальное уравнение, записанное в некотором специальном виде, который будет детально описан в этой главе.
В этом разделе описано, как решить ОДУ, используя функцию rkfixed. Раздел начинается с примера того, как решить простейшее дифференциальное уравнение первого порядка. Затем будет показано, как можно решать дифференциальные уравнения более высокого порядка.
Дифференциальные уравнения первого порядка
Дифференциальное уравнение первого порядка — это уравнение, которое не содержит производных выше первого порядка от неизвестной функции. На Рисунке 1 показан пример того, как решить относительно простое дифференциальное уравнение:
с начальными условиями: y(0) = 4
Функция rkfixed на Рисунке 1 использует для поиска решения метод Рунге-Кутты четвертого порядка. В результате решения получается матрица, имеющая два следующих столбца:
- Первый столбец содержит точки, в которых ищется решение дифференциального уравнения.
- Второй столбец содержит значения найденного решения в соответствующих точках.
Рисунок 1: Решение дифференциального уравнения первого порядка.
Функция rkfixed имеет следующие аргументы:
y = | Вектор начальных условий размерности n, где n — порядок дифференциального уравнения или число уравнений в системе (если решается система уравнений). Для дифференциального уравнения первого порядка, как, например, для уравнения, приведенного на Рисунке 1, вектор начальных значений вырождается в одну точку y0 = y(x1). |
x1, x2 = | Граничные точки интервала, на котором ищется решение дифференциальных уравнений. Начальные условия, заданные в векторе y, — это значение решения в точке x1. |
npoints = | Число точек (не считая начальной точки), в которых ищется приближенное решение. При помощи этого аргумента определяется число строк (1 + npoints) в матрице, возвращаемой функцией rkfixed. |
D (x, y) = | Функция, возвращающая значение в виде вектора из n элементов, содержащих первые производные неизвестных функций. |
Наиболее трудная часть решения дифференциального уравнения состоит в определении функции D(x, y), которая содержит вектор первых производных от неизвестных функций. В примере, приведенном на Рисунке 1, было достаточно просто разрешить уравнение относительно первой производной , и определить функцию D(x, y). Иногда, особенно в случае нелинейных дифференциальных уравнений, это может быть трудно. В таких случаях иногда удаётся разрешить уравнение относительно в символьном виде и подставить это решение в определение для функции D(x, y). Используйте для этого команду Решить относительно переменной из меню Символика.
Рисунок 2: Более сложный пример, содержащий нелинейное дифференциальное уравнение.
Дифференциальные уравнения второго порядка
Как только Вы научились решать дифференциальное уравнение первого порядка, можно приступать к решению дифференциальных уравнений более высокого порядка. Мы начнем с дифференциального уравнения второго порядка. Основные отличия от уравнения первого порядка состоят в следующем:
- Вектор начальных условий y теперь состоит из двух элементов: значений функции и её первой производной в начальной точке интервала x1.
- Функция D(t, y) является теперь вектором с двумя элементами:
Пример, приведенный на Рисунке 3, показывает, как решить следующее дифференциальное уравнение второго порядка:
Рисунок 3: Решение дифференциального уравнения второго порядка.
Уравнения более высокого порядка
Методика решения дифференциальных уравнений более высокого порядка является развитием методики, которая применялась для решения дифференциальных уравнений второго порядка. Основное различие состоит в следующем:
- Вектор начальных значений y теперь состоит из n элементов, определяющих начальные условия для искомой функции и ее производных y, y’ , y». y (n-1)
- Функция D является теперь вектором, содержащим n элементов:
Пример, приведенный на Рисунке 4, показывает, как решить следующее дифференциальное уравнение четвертого порядка:
с начальными условиями:
Рисунок 4: Решение дифференциального уравнения более высокого порядка.
Исправляем ошибки: Нашли опечатку? Выделите ее мышкой и нажмите Ctrl+Enter
Видео:Дифференциальное уравнение в частных производныхСкачать
MathCAD — это просто! Часть 23. Внутренняя кухня решения дифференциальных уравнений. Дифференциальные уравнения в частных производных
Хотя мы с вами говорим о решении дифференциальных уравнений в среде MathCAD уже, в общем-то, довольно-таки давно, тем не менее, тема эта по- прежнему остается не до конца раскрытой. Почему? Потому, что дифференциальным уравнениям и их решению в мире посвящено гигантское количество различных научных работ и книг — пожалуй, столько их не посвящалось больше ни одному вопросу прикладного применения математики.
Дифференциальные уравнения сегодня — это, прежде всего, основа для всех физических и химических расчетов, применяемых в промышленности и науке. И потому без дифференциальных уравнений не может обойтись в рамках своей профессиональной деятельности ни один специалист технического или естественнонаучного профиля. И чем лучше мы с вами научимся решать дифференциальные уравнения с помощью MathCAD, тем легче вам будет разбираться с ними в тот момент, когда они понадобятся вам для выполнения какой-либо порученной вам работы. Разговор о дифференциальных уравнениях в MathCAD просто не может быть полным без двух вещей. Первая из них — это краткий, слишком краткий для того, чтобы быть действительно полезным, рассказ о внутренних механизмах решения дифференциальных уравнений в этой мощной математической среде, то есть об используемых MathCAD’ом алгоритмах их численного интегрирования. Увы, объем газетной статьи ограничен, и рассказывать подробно настолько, насколько хотелось бы, у меня нет возможности. Вторая же такая вещь — рассказ о решении дифференциальных уравнений в частных производных, к которым относятся практически все уравнения математической и теоретической физики. Конечно, вещи это довольно сложные, но я постараюсь сделать их понятными для каждого из читателей серии «MathCAD — это просто». Ну, а судить, насколько хорошо у меня это выйдет, уже дело ваше.
Численное интегрирование обыкновенных дифференциальных уравнений методом Рунге-Кутта четвертого порядка
Для того, чтобы понять, как именно работают алгоритмы численного решения дифференциальных уравнений, нужно вспомнить, что именно мы делаем, решая дифференциальное уравнение в MathCAD’е. Вспомнили? Правильно, мы интегрируем. Значит, мы находим первообразную некоторой функции, которую в простейшем случае можем записать как f(x,y), где y и будет решением нашего дифференциального уравнения. Для того, чтобы объяснять дальше, нужно напомнить, что же такое производная — ведь именно ею является наша функция f(x, y) по отношению к своей искомой первообразной. Производная — это предел приращения функции к пределу приращения своего аргумента (или своих аргументов, если таковых имеется больше, чем один). Однако пределы — это всего лишь математическая абстракция, какой бы хорошей и удобной она ни была. То есть мы не можем в реальном мире оперировать бесконечно малым приращением ни функции, ни ее аргументов, если хотим с их помощью вычислить саму производную. Выход из этой ситуации напрашивается самый простой и логичный — перейти от бесконечно малого приращению к малому, но все же конечному. Говорят, что дифференциальное уравнение при этом заменяется на разностное, и для его решения применяются специальные разностные методы.
Самым распространенным методом решения дифференциальных уравнений в численном виде является метод Рунге-Кутта четвертого порядка, который из-за его повсеместной распространенности обычно называют просто методом Рунге-Кутта. Этот метод разработан еще в начале XX века немецкими математиками Карлом Рунге и Мартином Вильгельмом Куттом и с тех пор, как появились первые вычислительные машины, используется для численного решения дифференциальных уравнений самым что ни на есть активным образом. В MathCAD’е метод Рунге-Кутта в его классическом виде реализован в функции rkfixed. Ограничения, накладываемые ею на решаемые с ее помощью уравнения, — это те самые ограничения, которые на них накладывает метод Рунге-Кутта. Алгоритм Рунге-Кутта итерационный, то есть для вычисления значения функции с заданной точностью нужно выполнить вычисления несколько раз, и для каждого следующего вычисления используются результаты предыдущего. Записать это в виде формул можно следующим образом:
Самая нижняя из всех формул — это исходное уравнение, которое мы решаем указанным методом, а коэффициенты k называются прогоночными коэффициентами. Как видите, для того, чтобы вычислить по этим формулам хоть одно значение y, нужно воспользоваться начальным (нулевым) значением y. То есть этот метод очень хорошо подходит для решения задачи Коши, а вот если встретится краевая задача, то здесь уже надо искать другой метод. Как можно понять из формул, h — это величина шага интегрирования. Об этой величине я рассказывал тогда, когда приоткрывал завесу тайны над «кухней» численного интегрирования в MathCAD’е, а потому останавливаться на ней повторно и рисовать графики, иллюстрирующие ее геометрическую интерпретацию, я не буду. Почему рассмотренный нами алгоритм называется алгоритмом четвертого порядка? Дело в том, что суммарная погрешность при вычислении функции по записанным выше формулам составляет величину порядка h4. При достаточно малых h это очень хорошая точность, и именно поэтому метод Рунге-Кутта получил такое широкое распространение. Конечно, рассмотренный нами метод численного решения дифференциальных уравнений не настолько универсален, насколько нам того хотелось бы, но разработчики MathCAD существенно упростили нам задачу, реализовав удобную и мощную функцию Odesolve, комбинирующую в себе возможности нескольких разных алгоритмов численного решения обыкновенных дифференциальных уравнений. Если вдруг вы решите проникнуть глубже в тайны методов численного решения дифференциальных уравнений, то делать это лучше всего с помощью соответствующих учебников, которых в библиотеках и в интернете можно найти великое множество.
Решение дифференциальных уравнений в частных производных
Что ж, давайте уже перейдем к завершающему наш разговор о дифференциальных уравнениях в MathCAD’е вопросу — решению дифференциальных уравнений в частных производных. Дифференциальным уравнением в частных производных называется уравнение относительно функции нескольких переменных (обязательно более чем одной), содержащее саму эту функцию (что, впрочем, необязательно) и ее частные производные по различным аргументам (вот это уже необходимо). Классическими уравнениями в частных производных являются уравнения математической физики — например, такие, как уравнение колебаний мембраны или даже струны; уравнение теплопроводности, описывающее перенос тепловой энергии в веществах; уравнение Шредингера, на котором построена вся квантовая механика. Решать уравнения в частных производных обычно еще сложнее, чем обыкновенные дифференциальные уравнения, однако, как вы сами сможете убедиться, это утверждение можно не считать справедливым в тех случаях, когда вам на помощь приходит такая мощная математическая среда, как MathCAD. Давайте попробуем решить с помощью MathCAD’а уже упоминавшееся буквально пару строчек назад уравнение теплопроводности, которое можно записать в следующем виде:
Решать его будем с помощью уже частично знакомого вам блока Given…Pdesolve. Он весьма схож с блоком Given. Odesolve, который мы использовали для обыкновенных дифференциальных уравнений, но имеются некоторые отличия. Так, например, производные для этого блока нужно задавать в индексной форме записи. То есть первая производная от y по x будет записана как yx. В MathCAD’е для записи производных в нижнем регистре нажмите кнопку «.» («ю» на русской клавиатуре). Вот таким образом будет выглядеть наше решение дифференциального уравнения в частных производных:
То, что стоит сразу непосредственно после Given, думаю, в каких-либо подробных прояснениях не нуждается, потому что это, собственно говоря, и есть то самое дифференциальное уравнение, которое мы с вами усиленно решаем. Сразу же следом за ним идут начальные условия по времени и граничные условия по координате — такие условия называются условиями Дирихле. Но самое важное, в общем-то, не они, а та функция, с помощью которых наш набор условий превращается в решенное дифференциальное уравнение — это функция Pdesolve. Первый ее параметр — это название функции или вектор функций, которые заданы в блоке Given. Второй и третий параметры — это один из аргументов функции и вектор из его начального и конечного значений. Здесь нужно внимательно следить за тем, чтобы эти значения в блоке Given обязательно совпадали с параметрами самой Pdesolve — в случае их взаимного несоответствия система MathCAD выдаст ошибку. Следующие два (или четыре, или шесть — все зависит от исходной функции и решаемого уравнения) параметра также обозначают аргумент и его граничные значения. Ну, а завершают список параметров функции Pdesolve количество шагов по каждой из переменных. Совсем не обязательно делать их равными для всех переменных — надо смотреть на особенности самого уравнения, а также начальных и граничных условий. Чтобы визуализировать результаты решения, можно воспользоваться нашими знаниями о построении графиков в MathCAD’е и построить трехмерный график (см. соответствующий рисунок). Вопрос на засыпку: какая из осей изображает время? Вот и проверим, насколько вы разобрались в свое время с графиками.
Конечно, для таких уравнений, где одна из переменных является временем, лучше строить не трехмерные графики, а двумерные, но анимированные. Как они делаются, я вам уже имел удовольствие рассказывать, а потому вы, безо всяких сомнений, успешно справитесь с их созданием.
Что ж, как видите, и в глубинах MathCAD’а, в которых идет решение дифференциальных уравнений численными методами, все оказалось вовсе не так уж и сложно. Конечно, мы с вами разобрали только самый простой случай, но ведь перед нами, согласитесь, и не стоит задачи написать собственную математическую среду наподобие MathCAD, а потому мы можем позволить себе не разбираться в тонкостях реализации разных методов, а просто предоставить MathCAD’у самому разбираться с подсунутыми нами уравнениями. С дифференциальными уравнениями в частных производных тоже все оказалось не так уж сложно, потому что разработчики MathCAD постарались максимально унифицировать процесс их решения с процессом решения обыкновенных дифференциальных уравнений. Так что не нужно бояться дифференциальных уравнений, если под рукой есть MathCAD. Рано или поздно, так или иначе, но они падут под натиском этого грозного математического «оружия».
Компьютерная газета. Статья была опубликована в номере 37 за 2008 год в рубрике soft
Видео:8 Дифференциальные уравнения в частных производных MathcadСкачать
Решение дифференциальных уравнений в частных производных mathcad
Глава 5. Решение дифференциальных уравнений
5.8 Функции решения параболических и гиперболических уравнений
Дифференциальные уравнения в частных производных требуют нахождение функции не одной, а нескольких переменных. MathCAD имеет очень ограниченные возможности для решения таких уравнений, ведь для решения каждого вида уравнений в частных производных требуется свой метод решения.
Уравнения в частных производных можно разделить на три типа:
1) параболические, содержащие первую производную по одной переменной и вторую – по другой, причем все производные входят в уравнение с одинаковым знаком;
2) гиперболические, содержащие первую производную по одной переменной и вторую – по другой, входящие в уравнение с разными знаками;
3) эллиптические, содержащие вторые производные, причем одного знака.
Функции решения параболических и гиперболических уравнений
MathCAD 11 включает в себя две функции для решения параболических и гиперболических уравнений, pdesolve и numol .
Функция pdesolve используется в составе вычислительного блока Given – pdesolve для решения параболических и гиперболических уравнений (или систем уравнений) в частных производных, имеющих в качестве аргументов, как правило, время t и пространственную координату x .
Обращение к этой функции:
возвращает скалярную (для одного уравнения) или векторную (для системы уравнений) функцию, являющуюся решением уравнения (или системы уравнений). Здесь u –явно заданный вектор имен функций (без указания имен аргументов), подлежащих вычислению. Эти функции, а также граничные условия должны быть определены внутри вычислительного блока Given – pdesolve ; х – пространственная координата; x range – вектор значений аргумента х для граничных условий. Он должен состоять из двух чисел, представляющих две границы расчетного интервала; t – время (имя второго аргумента неизвестной функции); t range – вектор значений аргумента t для граничных условий, состоящих из двух чисел, представляющих две границы расчетного интервала; x pts – количество пространственных точек дискретизации (может не указываться); t pts – количество временных слоев (может не указываться).
Пример использования функции pdesolve приведен на рис. 5.19 запись вычислительного блока с функцией pdesolve аналогична записи блока с функцией Odesolve . Результаты расчета показаны на рис. 5.20.
Решение одномерного волнового уравнения
Здесь w -перемещение, v -скорость перемещения
где тогда
Представим первое уравнение как систему двух
уравнений первого порядка
Given
граничные условия
Рис. 5.1 9 Пример использования функции pdesolve
Единичное решение волнового уравнения
Сетка решений волнового уравнения на временном и пространственном интервалах
Рис. 5. 20 Результаты решения волнового уравнения
Обратите внимание на то, что уравнения внутри вычислительного блока должны записываться с аргументами. Для идентификации частных производных следует использовать нижний индекс, например, – вторая производная функции u по пространственной координате х.
Недостатком функции pdesolve (как и функции Odesolve ) является невозможность ее использования в составе выражения – программы для многократного решения дифференциального уравнения. При необходимости многократного решения обыкновенных дифференциальных уравнений в состав программного модуля можно включать функции Rkadapt или Bulstoer.
При необходимости многократного решения дифференциальных уравнений в частных производных в состав программного модуля можно включать функцию numol , которая, как и pdesolve , появилась в MathCAD 11.
Функция numol предназначена для решения тех же уравнений, что и функция pdesolve .
Обращение к этой функции:
возвращает матрицу решения дифференциального уравнения в частных производных в каждой точке по пространственной (по строкам) и временной (по столбцам) координате. Если решается не одно уравнение, а система уравнений, то результатом решения является составная матрица, образованная путем слияния (слева направо) со значениями каждой искомой сеточной функции. Здесь x range – вектор значений аргумента х для граничных условий. Он должен состоять из двух чисел, представляющих две границы расчетного интервала; t range – вектор значений аргумента t для граничных условий, состоящих из двух чисел, педставляющих две границы расчетного интервала; x pts – количество пространственных точек дискретизации (может не указываться); t pts – количество временных слоев (может не указываться); N pde – количество дифференциальных уравнений в частных производных в системе; N ae – количество дополнительных алгебраических уравнений, входящих в систему; rhs – вектор правых частей уравнений; init – векторная функция, определяющая начальные условия для каждой неизвестной функции; bc – функциональная матрица граничных условий.
Вектор граничных условий может иметь значения трех типов:
– rhs содержит вторые пространственные производные: граничные условия (или Дирихле « D », или Неймана « N ») требуются по одному с каждой стороны интервала интегрирования;
– rhs содржит первые пространственные производные: граничные условия Дирихле на левой или правой границе интервала, на другой стороне NA ;
– нет пространственных производных – граничные условия не требуются.
Функциональная матрица bc содержит три столбца, имеющих ледующий вид:
– ( init _ left ( t ) init _ right ( t ) » D «) – для граничных условий Дирихле;
– ( init _ left ( t ) init _ right ( t ) » N «) – для граничных условий Неймана.
Пользоваться функцией numol намного сложнее, чем функцией pdesolve .
Граничное условие называется условием Дирихле, если задано значение функции, или Неймана, если задана первая производная функции.
🎬 Видео
Частные производные в MathcadСкачать
Сеточные методы решения дифференциальных уравнений в частных производных.Скачать
Работа с MathCad Prime. Решение дифференциальных уравнений.Скачать
Уравнения в частных производных первого порядка| poporyadku.schoolСкачать
Линейные дифференциальные уравнения в частных производныхСкачать
Уравнения в частных производных 1Скачать
Уравнения с частными производными 2 ЗадачиСкачать
Решение задачи Коши в MathCADСкачать
Mathcad-10. Пример: дифференциальные уравненияСкачать
Простейшие уравнения в частных производныхСкачать
6. Линейные однородные уравнения в частных производных первого порядкаСкачать
Пример решения уравнения в MathCAD 14 (33/34)Скачать
Горицкий А. Ю. - Уравнения математической физики - Уравнения с частными производными 1-го порядкаСкачать
Пример решения системы уравнений в MathCAD 14 (34/34)Скачать
Найти общее решение уравнения в частных производных первого порядка.Скачать
Приведение ДУ 2 порядка в частных производных к каноническому видуСкачать