Опубликован: 03.12.2012 | Доступ: свободный | Студентов: 1102 / 247 | Длительность: 16:43:00
Лекция 9:

Уравнения. Системы уравнений

8.3. Нахождение символьных решений дифференциальных уравнений

Для символьного решения дифференциальных уравнений в Mathematica имеется функция DSolve. С её помощью решаются следующие типы уравнений:

  • обыкновенные дифференциальные уравнения (ОДЕ) и системы уравнений. ОДУ содержат одну независимую переменную и одну или больше зависимых переменных;
  • дифференциальные уравнения в частных производных (ДУЧП) и системы уравнений. ДУЧП содержат две или более независимые переменные и одну или больше зависимых переменных;
  • системы дифференциально-алгебраические уравнения (ДАУ). Часть уравнений системы является дифференциальными, другая часть — алгебраическими.

Формат обращение к функции DSolve для решения дифференциального уравнения следующий: DSolve[eqn,f[t],t], где eqnдифференциальное уравнение относительно функции f[t]. Таким образом, функция DSolve имеет три обязательных аргумента. В примере In[1] на рис. 8.12 мы нашли аналитическое решение простейшего обыкновенного дифференциального уравнения первого порядка. В Out[1] мы видим, что результатом выполнения функции является список правил замены. Получить вместо списка правил список корней выражение можно тем же способом, что и в случае алгебраических уравнений — при помощи оператора " /. " (пример In[2]).

Общее решение дифференциального уравнения содержит параметры C[i] (в нашем примере это только постоянная C[1]), которые определяются начальными и граничными условиями. Для получения частного решения уравнения эти условия следует задать. Для этого первым аргументом функции DSolve указывается одномерный список, в котором, помимо самого уравнения, содержатся уравнения, задающие дополнительные условия — см. пример In[3] на рис. 8.12, в котором мы решаем то же уравнение, что и в In[1], но задаём значение функции y[x] при начальном значении переменной x.

Дополнительных условий не должно быть чрезмерное количество: в этом случае Mathematica не сумеет найти удовлетворительное решение и выдаст предупреждающее сообщение — пример In[4] на рис. 8.12.

В Out[3] мы получили выражение для y[x], являющееся решением нашего ОДУ, которое теперь можем подставить в любое выражение, содержащее y[x]. Однако это решение не определяет правил замены для производных y'[x], y''[x] и т.д. [5, с. 35], в чём мы убеждаемся в примере In[5] на рис. 8.12, пытаясь осуществить замену для ряда выражений.

Чтобы производные также могли быть заменены в соответствии с полученным выражением, необходимо во втором аргументе функции DSolve указать только заголовки искомых функций, не записывая их аргументы (пример In[6] на рис. 8.12). Тогда решение будет представлено в виде так называемой чистой функции — выражения с заголовком Function (с чистыми функциями мы подробней познакомимся в следующей лекции) — ср. Out[3] и Out[6]. И такое выражение уже можно подставить в любое другое выражение, содержащее как саму функцию, так и её производные: замена будет произведена корректно — ср. Out[5] и Out[7].

Решение ОДУ при помощи функции DSolve

Рис. 8.12. Решение ОДУ при помощи функции DSolve

Функция DSolve позволяет также решать системы дифференциальных уравнений: при этом в качестве первого аргумента указывается список уравнений системы, а второго — список искомых функций. Третьим аргументом по-прежнему остаётся независимая переменная. Пример нахождения общих решений систем дифференциальных уравнений — In[1] на рис. 8.13. Для нахождения частного решения системы следует указать начальные или граничные условия, число которых зависит от числа функций независимой переменной и порядка уравнений — пример In[2].

Следует отметить, что функция DSolve умеет также решать алгебраические уравнения — см. пример In[3] на рис. 8.13, в котором мы в общем виде решили квадратное уравнение относительно переменной y[v].

Решение систем ОДУ при помощи функции DSolve

Рис. 8.13. Решение систем ОДУ при помощи функции DSolve

Математические зависимости, полученные в результате действия функции DSolve, могут быть визуализированы графическими средствами Mathematica. Для визуализации математических функций независимой переменной чаще всего используется функция Plot (пример In[2] на рис. 8.14), а для изображения фазовых портретов — ParametricPlot (примеры In[3] и In[4]).

Визуализация решений ДУ и систем ДУ графическими средствами Mathematica

Рис. 8.14. Визуализация решений ДУ и систем ДУ графическими средствами Mathematica

В рассмотренных выше примерах мы познакомились с решением ОДУ при помощи функции DSolve. Однако как было сказано в начале лекции, с её помощью можно решать и другие виды ДУ, например, ДУ в частных производных. Единственное отличие при задании функции DSolve в этом случае заключается в форме задания последнего обязательного аргумента: он задаётся в виде списка, элементами которого являются все независимые переменные уравнения или системы уравнений. В примере In[1] на рис. 8.15 мы решаем уравнение Кортевега-де Вриза в общем случае; в примере In[2] мы визуализируем частное решение уравнения средствами трёхмерной графики.

Решение УЧП при помощи функции DSolve

Рис. 8.15. Решение УЧП при помощи функции DSolve

А.Н. Прокопеня и А. В. Чичурин [5, с. 36] отмечают, что при помощи функции DSolve Mathematica умеет решать дифференциальные уравнения (в том числе высших порядков), если их решения могут быть выражены через специальные функции. В примере In[1] на рис. 8.15 мы решили дифференциальное уравнение, получив в результат, содержащий функции Эйри.

Если функция DSolve не может найти аналитического решения, Mathematica просто перепечатывает в ячейку Out данные, введённые в области In — пример In[2] на рис. 8.16. В этом случае следует обратиться к следующему разделу настоящей лекции, посвящённому численному решению дифференциальных уравнений.

Подробней о функции DSolve см. книги Е. М. Воробьёва [1, с. 58–61] и А. Н. Прокопени и А. В. Чичурина [5, с. 34–36].

Функция DSolve при решении ДУ высших порядков

Рис. 8.16. Функция DSolve при решении ДУ высших порядков