Символьное решение дифференциальных уравнений i

Символьное решение дифференциальных уравнений i

Решение дифференциальных уравнений в символьном виде

Дифференциальными принято называть уравнения, в состав которых входят производные функции у(х), представляющей решение уравнения. Дифференциальные уравнения могут быть представлены в различной форме, например в общеизвестной форме Коши:

Несколько дифференциальных уравнений образуют систему дифференциальных уравнений. Решение таких систем также возможно средствами Mathematica и подробно описано в ряде книг по использованию системы 67. Дифференциальные уравнения и системы дифференциальных уравнений могут быть линейными и нелинейными. Для линейных уравнений обычно существуют решения в аналитическом виде. Нелинейные дифференциальные уравнения в общем случае аналитических решений не имеют, но могут решаться приближенными численными методами.

Дифференциальные уравнения широко используются в практике математических вычислений. Они являются основой при решении задач моделирования — особенно в динамике. Немногие математические системы имеют реализации численных методов решения систем дифференциальных уравнений. Но система Mathematica имеет средства как для символьного, так и для численного решения дифференциальных уравнений и их систем.

Для решения дифференциальных уравнений в символьном виде используются следующие средства:

  • DSolve[eqn, y[x], х] — решает дифференциальное уравнение относительно функций у [ х ] с независимой переменной х;
  • DSolve[, , ]-решает систему дифференциальных уравнений.

У функции DSolve и ее численного варианта NDSolve есть пара опций, на которые следует обратить внимание:

  • DSolveConstants — опция к DSolve, определяющая постоянные интегрирования, которые будут использованы в результате;
  • StartingStepSize — опция к NDSolve, определяющая величину начального шага.

В решении дифференциальных уравнений встречаются постоянные интегрирования. По умолчанию они обозначаются как С [ i ].

Приведем примеры решения дифференциальных уравнений:

DSolve [у» [х] — у’ [х] — 6 у [х] == 0, у [х] , х] <| е-4хС[1] + С[2] -Cos[2x] -|sin[2x]>>

DSolve [у» [х] + 4 у'[х] == 10 Sin [2 х] , у [х] , х]

DSolve[y'[x] == Sin[Ex] , y[x] , x]

DSolvefz2 w»[z] +zw'[z] — (z2 + l)w[z] ==0, w[z], z]

Как нетрудно заметить, аналитические решения дифференциальных уравнений могут содержать не только элементарные, но и специальные математические функции, что заметно расширяет возможности применения системы Mathematica в решении задач динамического моделирования.

Решение дифференциальных уравнений в численном виде

Многие дифференциальные уравнения не имеют аналитических решений — например, нелинейные. Однако они могут с приемлемой точностью решаться численными методами. Для численного решения систем дифференциальных уравнений используется функция NDSolve:

  • NDSolve [eqns, у, ]— ищет численное решение дифференциальных уравнений .eqns относительно функции у независимой переменной х в интервале от xmin до xmax;
  • NDSolve [eqns, , ]— ищет численные решения относительно функций yi.

MaxSteps — опция к NDSolve, которая определяет максимальное количество шагов.

Часто весьма желательно выводить результаты решения дифференциальных уравнений в графической форме. Рисунок 4.25 поясняет, как это делается при решении системы нелинейных дифференциальных уравнений, описывающих достаточно сложный колебательный процесс.

Нередко решение предпочитают представить на фазовой плоскости. Рисунок 4.26 иллюстрирует такую возможность. Более того, поскольку решается система из трех дифференциальных уравнений, фазовая траектория решения находится в трехмерном пространстве.

Простота задания решения и вывода его результатов в графической форме открывает широкие возможности применения системы для математического моделирования сложных явлений. При этом, в отличие от такого решения с помощью обычных языков высокого уровня (например, Фортран, Бейсик, Паскаль или С), не требуется составления каких-либо программ по реализации численных методов решения систем дифференциальных уравнений, таких как, скажем, метод Рунге— Кутта. Они представлены в виде уже готовых функций.

Символьное решение дифференциальных уравнений i

Рис. 4.25. Решение системы дифференциальных уравнений с выводом решения в виде графиков временных зависимостей

Символьное решение дифференциальных уравнений i

Рис. 4.26. Решение системы дифференциальных уравнений с выводом решения в форме кривых на фазовых плоскостях

Содержание
  1. Глава 7
  2. 7.1. Введение в решение дифференциальных уравнений
  3. 7.1.1. Дифференциальные уравнения первого порядка
  4. 7.1.2. Решение дифференциального уравнения радиоактивного распада
  5. 7.1.3. Модели популяций Мальтуса и Ферхюльса-Пирла
  6. 7.1.6. Решение задачи на полет камня
  7. 7.1.7. Классификация дифференциальных уравнений
  8. 7.1.8. Функция решения дифференциальных уравнений dsolve
  9. 7.1.9. Уровни решения дифференциальных уравнений
  10. 7.2. Примеры решения дифференциальных уравнений
  11. 7.2.1. Примеры аналитического решение ОДУ первого порядка
  12. 7.2.2. Полет тела, брошенного вверх
  13. 7.2.3. Поведение идеального гармонического осциллятора
  14. 7.2.4. Дополнительные примеры решения дифференциальных уравнений второго порядка
  15. 7.2.5. Решение систем дифференциальных уравнений
  16. 7.2.6. Модель Стритера-Фелпса для динамики кислорода в воде
  17. 7.3. Специальные средства решения дифференциальных уравнений
  18. 7.3.1. Численное решение дифференциальных уравнений
  19. 7.3.2. Дифференциальные уравнения с кусочными функциями
  20. 7.3.3. Структура неявного представления дифференциальных уравнений — DESol
  21. 7.4. Инструментальный пакет решения дифференциальных уравнений DEtools
  22. 7.4.1. Средства пакета DEtools
  23. 7.4.2. Консультант по дифференциальным уравнениям
  24. Символьное решение линейных дифференциальных уравнений и систем методом преобразований Лапласа c применением SymPy
  25. История об авторстве преобразований Лапласа
  26. Функции прямого и обратного преобразования Лапласа
  27. Преобразование Лапласа от производных высших порядков для решения задачи Коши
  28. Метод решения линейных дифференциальных уравнений и систем уравнений, основанный на преобразованиях Лапласа, с использованием библиотеки SymPy
  29. Функции для решения ОДУ
  30. Вывод:

Видео:МЗЭ 2022 Аналитическое решение дифференциальных уравнений Ложкин С.А.Скачать

МЗЭ 2022 Аналитическое решение дифференциальных уравнений Ложкин С.А.

Глава 7

Решение дифференциальных уравнений

Дифференциальные уравнения лежат в основе математического моделирования различных, в том числе физических, систем и устройств [1, 38, 46]. Решению таких уравнений посвящена эта глава. В ней рассмотрено как аналитическое, так и численное решение дифференциальных уравнений различного вида — линейных и нелинейных, классических и специальных, например, в частных производных и с учетом двухсторонних граничных условий. Описание сопровождается множеством наглядных примеров, реализованных в СКМ Maple 9.5/10.

Видео:Задача Коши ➜ Частное решение линейного однородного дифференциального уравненияСкачать

Задача Коши ➜ Частное решение линейного однородного дифференциального уравнения

7.1. Введение в решение дифференциальных уравнений

Видео:Частное решение дифференциального уравнения. 11 класс.Скачать

Частное решение дифференциального уравнения. 11 класс.

7.1.1. Дифференциальные уравнения первого порядка

Дифференциальные уравнения (ДУ) это уравнения, связывающие неизвестную функцию с какими либо ее производными и, возможно, с независимыми переменными. Если неизвестная функция зависит только от одной независимой переменной, то такое уравнение называется обыкновенным дифференциальным уравнением, а если от двух и более многих независимых переменных — дифференциальным уравнением в частных производных.

Простейшее дифференциальное уравнение первого порядка

Символьное решение дифференциальных уравнений i(7.1)

в общем случае имеет множество решений в виде зависимостей y(х). Однако можно получить единственное решение, если задать начальные условия в виде начальных значений х0 и у0= у(х0). Это решение может быть аналитическим, конечно-разностным или численным.

Видео:18+ Математика без Ху!ни. Дифференциальные уравнения.Скачать

18+ Математика без Ху!ни. Дифференциальные уравнения.

7.1.2. Решение дифференциального уравнения радиоактивного распада

В качестве примера аналитического решения дифференциального уравнения первого порядка (файл der) запишем дифференциальное уравнение радиоактивного распада атомов (N — число атомов в момент времени t, g=1/c):

Символьное решение дифференциальных уравнений i

Символьное решение дифференциальных уравнений i

Используя функцию dsolve, которая более подробно будет описана чуть позже, получим его общее аналитическое решение:

В решении присутствует произвольная постоянная _С1. Но ее можно заметить на постоянную N(0)=N0, означающую начальное число атомов в момент t=0:

Если конкретно N0=100 и g=4, то получим:

Хотя dsolve выдает решение N(t) в символьном виде, оно пока недоступно для построения графика этого решения или просто вычисления в любой точке. Однако, используя функции assign или subs можно сделать это решение доступным. Например, используем такую конструкцию:

Теперь мы можем воспользоваться полученной зависимостью N(t) и построить график ее:

Этот график, который читатель может просмотреть сам, описывает хорошо известным апериодическим экспоненциальный закон уменьшения числа атомов вещества в ходе его радиоактивного распада. Подобные зависимости, кстати, характерны для напряжения на конденсаторе С при его разряде через резистор R, для тока в LA-цепи и для многих простых физических явлений, описывающихся дифференциальным уравнением первого порядка.

Видео:Линейное неоднородное дифференциальное уравнение с постоянными коэффициентами 4y''-y=x^3-24x #1Скачать

Линейное неоднородное дифференциальное уравнение с постоянными коэффициентами 4y''-y=x^3-24x #1

7.1.3. Модели популяций Мальтуса и Ферхюльса-Пирла

Еще одним классическим примером применения дифференциального уравнения первого порядка является давно известная и довольно грубая модель популяции Мальтуса. Не вдаваясь в хорошо известное описание этой модели, отметим, что она описывает численность особей или их биомассу x(t) в любой момент времени (для момента времени х(0)=N) Эта зависимость характеризуется коэффициентами рождаемости α и смертности β. При этом вводится их разность k=α-β.

Представим задание дифференциального уравнения динамики популяций по модели Мальтуса и его решение в аналитическом виде:

Символьное решение дифференциальных уравнений i

dsol1 := x(t) = Ne (k1)

Нетрудно заметить, что решение этого уравнения аналогично решению дифференциального уравнения радиоактивного распада и описывается также экспоненциальной функций. Однако, в зависимости от того, какой фактор (рождаемость или смертность) преобладает наблюдается либо экспоненциальный рост, либо экспоненциальный спад биомассы популяций.

Более правдоподобную модель популяций предложили Ферхюльст и Пирл. Эта модель учитывает (коэффициентом внутривидовую конкуренцию и позволяет учесть приближение популяций к некоторому состоянию равновесия. На рис. 7.1 представлено дифференциальное уравнение динамики популяций Ферхюльста-Пирла. Решения приведены в общем виде, а также для k=g= k/g=1 и разных x(0)=1, 0.5 и 2.

Символьное решение дифференциальных уравнений i

Рис. 7.1. Моделирование популяций по модели Ферхюльста и Пирла

Поведение системы зависит от соотношения k/g и x(0)=N. При их равенстве количество биомассы популяции не меняется. При N>k/g биомасса экспоненциально уменьшается, приближаясь к значению k/g, а при N (n) =f(x, у, у’, y», …, y( n-1) ),

Теперь решение этого уравнения можно свести к решению системы ОДУ:

Символьное решение дифференциальных уравнений i

В таком виде ДУ n-го порядка может решаться стандартными средствами решения систем ОДУ, входящими в большинство математических систем.

Видео:Решение системы дифференциальных уравнений методом ЭйлераСкачать

Решение системы дифференциальных уравнений методом Эйлера

7.1.6. Решение задачи на полет камня

В качестве примера аналитического решения системы дифференциальных уравнений рассмотрим постановку типичной физической задачи моделирования «Бросок камня», позволяющую описать полет камня, брошенного под углом к горизонту.

Модель должна позволять:

Вычислять положение камня в любой момент времени.

Масса камня, начальные координаты, начальная скорость и угол броска мяча.

На основе содержательной модели разрабатывается концептуальная формулировка задачи моделирования. Применительно к нашей задаче движение камня может быть описано в соответствии с законами классической механики Ньютона.

Гипотезы, принятые для модели:

• камень будем считать материальной точкой массой m, положение которой совпадает с центром масс камня;

• движение происходит в поле силы тяжести с постоянным ускорением свободного падения g и описывается уравнениями классической механики Ньютона;

• движение камня происходит в одной плоскости, перпендикулярной поверхность Земли;

• сопротивлением воздуха на первых порах пренебрегаем.

В качестве параметров движения будем использовать координаты (х, у) и скорость v(vx, vy) центра масс камня.

Концептуальная постановка задачи на основе принятых гипотез заключается в определении закона движения материальной точки массой m под действием силы тяжести, если известны начальные координаты точки х0 и ее начальная скорость v0 и угол броска α0.

Таким образом, модель является простой — объект, как материальная точка, не имеет внутренней структуры. Учитывая типичные скорости и высоту броска камня, можно считать постоянным ускорение свободного падения. Переход от трехмерных координат к плоскости значительно упрощает решение задачи. Он вполне допустим, если камень не подкручивается при броске. Пренебрежение сопротивлением воздуха, как будет показано далее, приводит к значительной систематической ошибке результатов моделирования.

Теперь перейдем к составлению математической модели объекта — совокупности математических соотношений, описывающих его поведение и свойства. Из законов и определяющих выражений предметной дисциплины формируются уравнения модели.

По оси x на камень не действуют никакие силы, по оси y — действует сила тяжести. Согласно законам Ньютона имеем уравнения движения по оси x и оси y.

Символьное решение дифференциальных уравнений i(7.2)

при следующих начальных условиях

Надо найти зависимости x(t), y(y), vx(r), vy(t).

Математическая постановка решения задачи в нашем случае соответствует решению задачи Коши для системы обыкновенных дифференциальных уравнений с заданными начальными условиями. Известно, что решение задачи Коши существует и что оно единственное. Количество искомых переменных равно количеству дифференциальных уравнений. Таким образом, математическая модель корректна.

Решение этой задачи есть в любом учебнике физики. Тем не менее, выполним его средствами системы Maple. Из (7.2) запишем систему ОДУ первого порядка:

Символьное решение дифференциальных уравнений i(7.3)

После интегрирования получим:

Символьное решение дифференциальных уравнений i(7.4)

Определив константы интегрирования из начальных условий, окончательно запишем:

Символьное решение дифференциальных уравнений i

Из аналитического решения вытекает, что полет камня при отсутствии сопротивления воздуха происходит строго по параболической траектории, причем она на участках полета камня вверх и вниз симметрична. Необходимые для расчета уравнения заданы в параметрической форме — как зависимости от времени, что, кстати говоря, облегчает моделирование по ним полета камня. Немного позже мы решим эту задачу, используя средства Maple 9.5 для решения систем дифференциальных уравнений.

Видео:Использование меню «Символьные операции» в MathCAD 14 (25/34)Скачать

Использование меню «Символьные операции» в MathCAD 14 (25/34)

7.1.7. Классификация дифференциальных уравнений

Дифференциальные уравнения могут быть самого разного вида. На рис. 7.2 представлен раздел справки Maple 9.5 с классификацией дифференциальных уравнений. В ней представлено:

• 20 дифференциальных уравнений первого порядка;

• 25 дифференциальных уравнений второго порядка;

• 6 типов дифференциальных уравнений высшего порядка;

• основные функции решения дифференциальных уравнений.

Символьное решение дифференциальных уравнений i

Рис. 7.2. Классификация дифференциальных уравнений

Эта классификация охватывает большую часть классических дифференциальных уравнений, которые используются в математике и в математической физике. Следует отметить, что речь не идет об отдельных функциях по решению таких уравнений частного вида, а о примерах составления соответствующих уравнений и решении их с помощью небольшого числа функций системы Maple 9.5.

В качестве примера работы с классификатором выберем решение дифференциального уравнения Бернулли. Для этого активизируем на рис. 7.2 гиперссылку с его именем — Bernoulli. Появится окно справки по этому уравнению, показанное на рис. 7.3 с открытой позицией меню Edit.

Символьное решение дифференциальных уравнений i

Рис. 7.3. Окно справки по решению дифференциального уравнения Бернулли

С помощью команды Copy Examples в позиции Edit меню можно перенести примеры решения с окна справки в буфер Clipboard операционной системы Windows. После этого командой Paste в меню Edit окна документа можно перенести примеры в текущий документ — желательно (но не обязательно) новый. Теперь можно наблюдать решение выбранного дифференциального уравнения — рис. 7.4.

Символьное решение дифференциальных уравнений i

Рис. 7.4. Пример решения дифференциального уравнения Бернулли из справки

Возможность выбора и решения с полсотни классических дифференциальных уравнений различного типа дает системе Maple 9.5 преимущества, которые по достоинству оценят пользователи, заинтересованные в знакомстве с такими уравнениями и в их использовании.

В Maple 9.5 средства решения дифференциальных уравнений подверглись значительной переработке. Введены новые методы решения для дифференциальных уравнений Абеля, Риккати и Матье, новые методы инициализации и решения уравнений с кусочными функциями, улучшены алгоритмы решения численными методами. Детальное описание этих новинок можно найти в справке по разделу What’s New…. Это относится и к версии Maple 10.

Видео:Общее и частное решение дифференциального уравненияСкачать

Общее и частное решение дифференциального уравнения

7.1.8. Функция решения дифференциальных уравнений dsolve

Maple позволяет решать одиночные дифференциальные уравнения и системы дифференциальных уравнений как аналитически, так и в численном виде. Разработчиками системы объявлено о существенном расширении средств решения дифференциальных уравнений и о повышении их надежности в смысле нахождения решений для большинства классов дифференциальных уравнений.

Для решения системы простых дифференциальных уравнений (задача Коши) используется функция dsolve в разных формах записи:

Здесь ODE — одно обыкновенное дифференциальное уравнение или система из дифференциальных уравнений первого порядка с указанием начальных условий, у(х) —функция одной переменной, Ics — выражение, задающее начальные условия, —множество дифференциальных уравнений, — множество неопределенных функций, extra_argument —опция, задающая тип решения.

Параметр extra_argument задает класс решаемых уравнений. Отметим основные значения этого параметра:

• exact — аналитическое решение (принято по умолчанию);

• explicit — решение в явном виде;

• system — решение системы дифференциальных уравнений;

• ICs — решение системы дифференциальных уравнений с заданными начальными условиями;

• formal series — решение в форме степенного многочлена;

• integral transform — решение на основе интегральных преобразований Лапласа, Фурье и др.;

• series — решение в виде ряда с порядком, указываемым значением переменной Order;

• numeric — решение в численном виде.

Возможны и другие опции, подробное описание которых выходит за рамки данной книги. Его можно найти в справке по этой функции, вызываемой командой ?dsolve.

Для решения задачи Коши в параметры dsolve надо включать начальные условия, а при решении краевых задач — краевые условия. Если Maple способна найти решение при числе начальных или краевых условий меньше порядка системы, то в решении будут появляться неопределенные константы вида _С1, _С2 и т.д. Они же могут быть при аналитическом решении системы, когда начальные условия не заданы. Если решение найдено в неявном виде, то в нем появится параметр _Т. По умолчанию функция dsolve автоматически выбирает наиболее подходящий метод решения дифференциальных уравнений. Однако в параметрах функции dsolve в квадратных скобках можно указать предпочтительный метод решения дифференциальных уравнений. Допустимы следующие методы:

[quadrature, linear, Bernoulli, separable, inverse_linear, homogeneous, Chini, lin_sym, exact, Abel, pot_sym ]

Более полную информацию о каждом методе можно получить, используя команду ?dsolve,method и указав в ней конкретный метод. Например, команда ?dsolve,linear вызовет появление страницы справочной системы с подробным описанием линейного метода решения дифференциальных уравнений.

Видео:Линейное неоднородное дифференциальное уравнение второго порядка с постоянными коэффициентамиСкачать

Линейное неоднородное дифференциальное уравнение второго порядка с постоянными коэффициентами

7.1.9. Уровни решения дифференциальных уравнений

Решение дифференциальных уравнений может сопровождаться различными комментариями. Команда

где n — целое число от 0 до 5 управляет уровнями детальности вывода. По умолчанию задано n = 0. Значение n = 5 дает максимально детальный вывод.

Производные при записи дифференциальных уравнений могут задаваться функцией diff или оператором дифференцирования D. Выражение sysODE должно иметь структуру множества и содержать помимо самой системы уравнений их начальные условия.

Читателю, всерьез интересующемуся проблематикой решения линейных дифференциальных уравнений, стоит внимательно просмотреть разделы справки по ним и ознакомиться с демонстрационным файлом linearoade.mws, содержащим примеры решения таких уравнений в закрытой форме.

Видео:Дифференциальные уравнения для самых маленькихСкачать

Дифференциальные уравнения для самых маленьких

7.2. Примеры решения дифференциальных уравнений

Видео:Дифференциальные уравнения. 11 класс.Скачать

Дифференциальные уравнения. 11 класс.

7.2.1. Примеры аналитического решение ОДУ первого порядка

Отвлекшись от физики, приведем несколько примеров на составление и решение дифференциальных уравнений первого порядка в аналитическом виде (файл dea):

Символьное решение дифференциальных уравнений i

Символьное решение дифференциальных уравнений i

Символьное решение дифференциальных уравнений i

Символьное решение дифференциальных уравнений i

Символьное решение дифференциальных уравнений i

Символьное решение дифференциальных уравнений i

ln(sin(x)) — ln(у(x)) + _C1 = 0

Символьное решение дифференциальных уравнений i

Разумеется, приведенными примерами далеко не исчерпываются возможности аналитического решения дифференциальных уравнений.

Видео:Символьные и численные расчеты в MATLABСкачать

Символьные и численные расчеты в MATLAB

7.2.2. Полет тела, брошенного вверх

Из приведенных выше примеров видно, что для задания производной используется ранее рассмотренная функция diff. С помощью символа $ в ней можно задать производную более высокого порядка.

В соответствии со вторым законом Ньютона многие физические явления, связанные с движением объектов, описываются дифференциальными уравнениями второго порядка. Ниже дан пример задания и решения такого уравнения (файл

dem), описывающего движение тела, брошенного вверх на высоте h0 со скоростью v0 при ускорении свободного падения g:

Символьное решение дифференциальных уравнений i

Символьное решение дифференциальных уравнений i

Итак, получено общее уравнение для временной зависимости высоты тела h(t). Разумеется, ее можно конкретизировать, например, для случая, когда g=9,8, h0=10 и v0=100:

Символьное решение дифференциальных уравнений i

Зависимость высоты тела от времени h(t) представлена на рис. 7.5. Нетрудно заметить, что высота полета тела вначале растет и достигнув максимума начинает снижаться. Оговоримся, что сопротивление воздуха в данном примере не учитывается, что позволяет считать задачу линейной. Полученное с помощью Maple 9.5 для этого случая решение совпадает с полученным вручную в примере, описанном в разделе 7.1.3.

Символьное решение дифференциальных уравнений i

Рис. 7.5. Зависимость высоты полета тела от времени h(t)

Видео:Линейное дифференциальное уравнение Коши-ЭйлераСкачать

Линейное дифференциальное уравнение Коши-Эйлера

7.2.3. Поведение идеального гармонического осциллятора

Еще одним классическим применением дифференциальных уравнений второго порядка является решение уравнение идеального гармонического осциллятора (файл deio):

Символьное решение дифференциальных уравнений i

у(t) = _C1 sin(ω) + _C2 cos(ω)

Символьное решение дифференциальных уравнений i

График решения этого уравнения (рис. 7.6) представляет хорошо известную синусоидальную функцию. Интересно, что амплитуда колебаний в общем случае отлична от 1 и зависит от значения у(0) — при у(0)=0 она равна 1 (в нашем случае синусоида начинается со значение у(0)=-1). Подобным осциллятором может быть LC-контур или механический маятник без потерь.

Символьное решение дифференциальных уравнений i

Рис. 7.6. Решение дифференциального уравнения идеального осциллятора

Видео:Дифференциальные уравнения, 2 урок, Дифференциальные уравнения с разделяющимися переменнымиСкачать

Дифференциальные уравнения, 2 урок, Дифференциальные уравнения с разделяющимися переменными

7.2.4. Дополнительные примеры решения дифференциальных уравнений второго порядка

Ниже представлено решение еще двух дифференциальных уравнений второго порядка в аналитическом виде (de2a):

у(x) = -½sin(x) + ½cos(x) + e x _C1 + _C2

Символьное решение дифференциальных уравнений i

Символьное решение дифференциальных уравнений i

Ряд примеров на применение дифференциальных уравнений второго порядка при решении практических математических и физических задач вы найдете в главе 11.

Видео:Откуда появляются дифференциальные уравнения и как их решатьСкачать

Откуда появляются дифференциальные уравнения и как их решать

7.2.5. Решение систем дифференциальных уравнений

Функция dsolve позволяет также решать системы дифференциальных уравнений. Для этого она записывается в виде

dsolve(ODE_sys, optional_1, optional_2. )

Здесь ODE_sys — список дифференциальных уравнений, образующих систему, остальные параметры опциональные и задаются по мере необходимости. Они могут задавать начальные условия, явно представлять искомые зависимости, выбирать метод решения и т.д. Детали задания опциональных параметров можно найти в справке.

На рис. 7.7 представлено решение системы из двух дифференциальных уравнений различными методами — в явном виде, в виде разложения в ряд и с использованием преобразования Лапласа. Здесь следует отметить, что решение в виде ряда является приближенным. Поэтому полученные в данном случае аналитические выражения отличаются от явного решения и решения с применением преобразования Лапласа.

Символьное решение дифференциальных уравнений i

Рис. 7.7. Решение системы из двух дифференциальных уравнений различными методами

Следует отметить, что, несмотря на обширные возможности Maple в области аналитического решения дифференциальных уравнений, оно возможно далеко не всегда. Поэтому, если не удается получить такое решение, полезно попытаться найти решение в численном виде. Практически полезные примеры решения дифференциальных уравнений, в том числе с постоянными граничными условиями, вы найдете в Главе 11.

Видео:Символьные преобразования в Mathcad (Урок 4)Скачать

Символьные преобразования в Mathcad (Урок 4)

7.2.6. Модель Стритера-Фелпса для динамики кислорода в воде

В качестве еще одного примера решении системы из двух дифференциальных уравнений рассмотрим модель Стритера-Фелпса, предложенную для описания динамики содержания растворенного в воде кислорода. Описание этой модели можно найти в [41]. Ниже представлено задание этой модели в виде системы из двух дифференциальных уравнений и их аналитическое решение (файл demp):

Символьное решение дифференциальных уравнений i

Символьное решение дифференциальных уравнений i

Здесь: x1(t) — концентрация в воде растворенного кислорода в момент времени t; x2(t) — концентрация биохимического потребления кислорода (БПК), С — концентрация насыщения воды кислородом, K1 — постоянная скорости аэрации, K2 — постоянная скорости уменьшения (БПК), a — начальное значение x1(t) и b — начальное значение х2(t) при t=0.

В данном случае получены два варианта аналитического решения — основное и упрощенное с помощью функции simplify. Читатель может самостоятельно построить графики зависимостей x1(t) и x2(t).

Видео:6. Дифференциальные уравнения, приводящиеся к однороднымСкачать

6. Дифференциальные уравнения, приводящиеся к однородным

7.3. Специальные средства решения дифференциальных уравнений

7.3.1. Численное решение дифференциальных уравнений

К сожалению, аналитического решения в общем случае нелинейные дифференциальные уравнения не имеют. Поэтому их приходится решать численными методами. Они удобны и в том случае, когда решение надо представить числами или, к примеру, построить график решения. Поясним принципы численного решения.

Для этого вернемся к дифференциальному уравнению (7.1). Заменим приращение dx на малое, но конечное приращение dx=h. Тогда приращение dy будет равно

Если, к примеру, известно начальное значение у=у0, то новое значение у будет равно

Распространяя этот подход на последующие шаги решения получим конечно-разностную формулу для решение приведенного уравнения в виде:

Эта формула известна как формула простого метода Эйлера первого порядка для решения дифференциального уравнения (7.1). Можно предположить (так оно и есть), что столь простой подход дает большую ошибку — отбрасываемый член порядка O(h 2 ). Тем не менее, физическая и математическая прозрачность данного метода привела к тому, что он широко применяется на практике.

Существует множество более совершенных методов решения дифференциальных уравнений, например, усовершенствованный метод Эйлера, метод трапеций, метод Рунге-Кутта, метод Рунге-Кутта-Фельберга и др. Ряд таких методов реализован в системе Maple и может использоваться при численном решении дифференциальных уравнений и систем с ними.

Для решения дифференциальных уравнений в численном виде в Maple используется та же функция dsolve с параметром numeric или type=numeric. При этом решение возвращается в виде специальной процедуры, по умолчанию реализующей широко известный метод решения дифференциальных уравнений Рунге-Кутта-Фельберга порядков 4 и 5 (в зависимости от условий адаптации решения к скорости его изменения). Эта процедура называется rkf45 и символически выводится (без тела) при попытке решения заданной системы дифференциальных уравнений. Последнее достаточно наглядно иллюстрирует рис. 7.8.

Символьное решение дифференциальных уравнений i

Рис. 7.8. Решение системы дифференциальных уравнений численным методом rkf45 с выводом графика решения

Указанная процедура возвращает особый тип данных, позволяющих найти решение в любой точке или построить график решения (или решений). Для графического отображения Maple 9.5 предлагает ряд возможностей и одна из них представлена на рис. 7.8 — см. последнюю строку ввода. При этом используется функция plot[odeplot] из пакета odeplot, предназначенного для визуализации решений дифференциальных уравнений. Можно воспользоваться и функцией plot, выделив тем или иным способом (примеры уже приводились) нужное решение.

В список параметров функции dsolve можно явным образом включить указание на метод решения, например опция method=dverk78 задает решение непрерывным методом Рунге-Кутта порядка 7 или 8. Вообще говоря, численное решение дифференциальных уравнений можно производить одним из следующих методов:

• classical — одна из восьми версий классического метода, используемого по умолчанию;

• rkf45 — метод Рунге-Кутта 4 или 5 порядка, модифицированный Фелбергом;

• dverk78 — непрерывный метод Рунге-Кутта порядка 7 или 8;

• gear — одна из двух версий одношагового экстраполяционного метода Гира;

• mgear — одна из трех версий многошагового экстраполяционного метода Гира;

• lsode — одна из восьми версий Ливенморского решателя жестких дифференциальных уравнений;

• taylorseries — метод разложения в ряд Тейлора.

Обилие используемых методов расширяет возможности решения дифференциальных уравнений в численном виде. Большинство пользователей Maple вполне устроит автоматический выбор метода решения по умолчанию. Однако в сложных случаях, или когда заведомо желателен тот или иной конкретный алгоритм численного решения, возможна прямая установка одного из указанных выше методов.

С помощью параметра ‘abserr’=aerr можно задать величину абсолютной погрешности решения, а с помощью ‘minerr’=mine — минимальную величину погрешности. В большинстве случаев эти величины, заданные по умолчанию, оказываются приемлемыми для расчетов.

Maple реализует адаптируемые к ходу решения методы, при которых шаг решения h автоматически меняется, подстраиваясь под условия решения. Так, если прогнозируемая погрешность решения становится больше заданной, шаг решения автоматически уменьшается. Более того, система Maple способна автоматически выбирать наиболее подходящий для решаемой задачи метод решения.

Еще один пример решения системы дифференциальных уравнений представлен на рис. 7.9. Здесь на одном графике представлены зависимости y(x) и z(x) представляющие полное решение заданной системы. При этом процедура имеет особый вид listprocedure и для преобразования списка выходных данных в векторы решения Y и Z используется функция subs.

Символьное решение дифференциальных уравнений i

Рис. 7.9. Решение системы дифференциальных уравнений численным методом с выводом всех графиков искомых зависимостей

Для решения достаточно сложных задач полезны специальная структура DESol для решения дифференциальных уравнений и инструментальный пакет SEtools, содержащий самые изысканные средства для графической визуализации результатов решения дифференциальных уравнений. Эти средства мы более подробно рассмотрим в дальнейшем.

При решении некоторых задач физики и радиоэлектроники выбираемый по умолчанию шаг изменения аргумента х или t-h может привести к неустойчивости решения. Неустойчивости можно избежать рядом способов. Можно, например, нормировать уравнения, избегая необходимости использования малого шага. А можно задать заведомо малый шаг. Например, при method=classical для этого служит параметр stepsize=h.

7.3.2. Дифференциальные уравнения с кусочными функциями

Состоящие из ряда кусков кусочные функции широко используются при математическом моделировании различных физических объектов и систем. В основе такого моделирования обычно лежит решение дифференциальных уравнений, описывающих поведение объектов и систем. Покажем возможность применения кусочных функций для решения дифференциальных уравнений.

Ниже представлено задание дифференциального уравнения первого порядка, содержащего кусочную функцию:

Символьное решение дифференциальных уравнений i

Нетрудно заметить, что результат получен также в форме кусочной функции, полностью определяющей решение на трех интервалах изменения х.

Приведем пример решения дифференциального уравнения второго порядка с кусочной функцией:

> eq := diff(y(х), х$2) + x*diff(y(x), х) + y(х) = piecewise(х > 0, 1);

Символьное решение дифференциальных уравнений i

Символьное решение дифференциальных уравнений i

В заключении этого раздела приведем пример решения нелинейного дифференциального уравнения Риккати с кусочной функцией:

Символьное решение дифференциальных уравнений i

Символьное решение дифференциальных уравнений i

В ряде случаев желательна проверка решения дифференциальных уравнений. Ниже показано, как она делается для последнего уравнения:

Символьное решение дифференциальных уравнений i

Как видно из приведенных достаточно простых и наглядных примеров, результаты решения дифференциальных уравнений с кусочными функциями могут быть довольно громоздкими. Это, однако, не мешает эффективному применению функций этого класса.

7.3.3. Структура неявного представления дифференциальных уравнений — DESol

В ряде случаев иметь явное представление дифференциальных уравнений нецелесообразно. Для неявного их представления в Maple введена специальная структура

где exprs — выражение для исходной системы дифференциальных уравнений, vars — заданный в виде опции список переменных (или одна переменная).

Структура DESol образует некоторый объект, дающий представление о дифференциальных уравнениях, чем-то напоминающее RootOf. С этим объектом можно обращаться как с функцией, то есть его можно интегрировать, дифференцировать, получать разложение в ряд и вычислять численными методами.

На рис. 7.10 показаны примеры применения структуры DESol.

Символьное решение дифференциальных уравнений i

Рис. 7.10. Примеры применения структуры DESol

Обратите внимание на последний пример — в нем структура DESol использована для получения решения дифференциального уравнения в виде степенного ряда.

7.4. Инструментальный пакет решения дифференциальных уравнений DEtools

7.4.1. Средства пакета DEtools

Решение дифференциальных уравнений самых различных типов — одно из достоинств системы Maple. Пакет DEtools предоставляет ряд полезных функций для решения дифференциальных уравнений и систем с такими уравнениями. Для загрузки пакета используется команда:

Этот пакет дает самые изысканные средства для аналитического и численного решения дифференциальных уравнений и систем с ними. По сравнению с версией Maple V R5 число функций данного пакета в Maple 9.5 возросло в несколько раз. Многие графические функции пакета DEtools были уже описаны. Ниже приводятся полные наименования тех функций, которые есть во всех реализациях системы Maple:

• DEnormal — возвращает нормализованную форму дифференциальных уравнений;

• DEplot — строит графики решения дифференциальных уравнений;

• DEplot3d — строит трехмерные графики для решения систем дифференциальных уравнений;

• Dchangevar — изменение переменных в дифференциальных уравнениях;

• PDEchangecoords — изменение координатных систем для дифференциальных уравнений в частных производных;

• PDEplot — построение графиков решения дифференциальных уравнений в частных производных;

• autonomous — тестирует дифференциальные уравнения на автономность;

• convertAlg — возвращает список коэффициентов для дифференциальных уравнений;

• convertsys — преобразует систему дифференциальных уравнений в систему одиночных уравнений;

• dfieldplot — строит график решения дифференциальных уравнений в виде векторного поля;

• indicialeq — преобразует дифференциальные уравнения в полиномиальные;

• phaseportrait — строит график решения дифференциальных уравнений в форме фазового портрета;

• reduceOrder — понижает порядок дифференциальных уравнений;

• regularsp — вычисляет регулярные особые точки для дифференциальных уравнений второго порядка;

• translate — преобразует дифференциальные уравнения в список операторов;

• untranslate — преобразует список операторов в дифференциальные уравнения;

• varparam — находит общее решение дифференциальных уравнений методом вариации параметров.

Применение этих функций гарантирует совместимость документов реализаций Maple R5, 6 и 9.

7.4.2. Консультант по дифференциальным уравнениям

Для выявления свойств дифференциальных уравнений в Maple 9.5 в составе пакета DEtools имеется консультант (адвизор), вводимый следующей функцией:

odeadvisor(ODE) odeadvisor(ODE, y(х), [type1, type2. ], help)

Здесь ODE — одиночное дифференциальное уравнение, y(x) — неопределенная (определяемая функция), type1, type2, … — опционально заданные множество типов, которые классифицируются и help — опционально заданное указание на вывод страницы справки по методу решения.

Примеры работы с классификатором представлены ниже:

Символьное решение линейных дифференциальных уравнений и систем методом преобразований Лапласа c применением SymPy

Символьное решение дифференциальных уравнений i

Реализация алгоритмов на языке Python с использованием символьных вычислений очень удобна при решении задач математического моделирования объектов, заданных дифференциальными уравнениями. Для решения таких уравнений широко используются преобразования Лапласа, которые, говоря упрощенно, позволяют свести задачу к решению простейших алгебраических уравнений.

В данной публикации предлагаю рассмотреть функции прямого и обратного преобразования Лапласа из библиотеки SymPy, которые позволяют использовать метод Лапласа для решения дифференциальных уравнений и систем средствами Python.

Сам метод Лапласа и его преимущества при решении линейных дифференциальных уравнений и систем широко освещены в литературе, например в популярном издании [1]. В книге метод Лапласа приведен для реализации в лицензионных программных пакетах Mathematica, Maple и MATLAB (что подразумевает приобретение учебным заведением этого ПО) на выбранных автором отдельных примерах.

Попробуем сегодня рассмотреть не отдельный пример решения учебной задачи средствами Python, а общий метод решения линейных дифференциальных уравнений и систем с использованием функций прямого и обратного преобразования Лапласа. При этом сохраним обучающий момент: левая часть линейного дифференциального уравнения с условиями Коши будет формироваться самим студентом, а рутинная часть задачи, состоящая в прямом преобразовании Лапласа правой части уравнения, будет выполняться при помощи функции laplace_transform().

История об авторстве преобразований Лапласа

Преобразования Лапласа (изображения по Лапласу) имеют интересную историю. Впервые интеграл в определении преобразования Лапласа появился в одной из работ Л. Эйлера. Однако в математике общепринято называть методику или теорему именем того математика, который открыл ее после Эйлера. В противном случае существовало бы несколько сотен различных теорем Эйлера.

В данном случае следующим после Эйлера был французский математик Пьер Симон де Лаплас (Pierre Simon de Laplace (1749-1827)). Именно он использовал такие интегралы в своей работе по теории вероятностей. Самим Лапласом не применялись так называемые «операционные методы» для нахождения решений дифференциальных уравнений, основанные на преобразованиях Лапласа (изображениях по Лапласу). Эти методы в действительности были обнаружены и популяризировались инженерами-практиками, особенно английским инженером-электриком Оливером Хевисайдом (1850-1925). Задолго до того, как была строго доказана справедливость этих методов, операционное исчисление успешно и широко применялось, хотя его законность ставилось в значительной мере под сомнение даже в начале XX столетия, и по этой теме велись весьма ожесточенные дебаты.

Функции прямого и обратного преобразования Лапласа

Символьное решение дифференциальных уравнений i

Эта функция возвращает (F, a, cond), где F(s) есть преобразование Лапласа функции f(t), a Текст программы

Время на обратное визуальное преобразование Лапласа: 2.68 s

Символьное решение дифференциальных уравнений i

Обратное преобразование Лапласа часто используется при синтезе САУ, где Python может заменить дорогостоящих программных “монстров” типа MathCAD, поэтому приведенное использование обратного преобразования имеет практическое значение.

Преобразование Лапласа от производных высших порядков для решения задачи Коши

Символьное решение дифференциальных уравнений i

Если a и b — константы, то

Символьное решение дифференциальных уравнений i

для всех s, таких, что существуют оба преобразования Лапласа (изображения по Лапласу) функций f(t) и q(t).

Проверим линейность прямого и обратного преобразований Лапласа с помощью ранее рассмотренных функций laplace_transform() и inverse_laplace_transform(). Для этого в качестве примера примем f(t)=sin(3t), q(t)=cos(7t), a=5, b=7 и используем следующую программу.

(7*s**3 + 15*s**2 + 63*s + 735)/((s**2 + 9)*(s**2 + 49))
(7*s**3 + 15*s**2 + 63*s + 735)/((s**2 + 9)*(s**2 + 49))
True
5*sin(3*t) + 7*cos(7*t)
5*sin(3*t) + 7*cos(7*t)

Приведенный код также демонстрирует однозначность обратного преобразования Лапласа.

Если предположить, что Символьное решение дифференциальных уравнений iудовлетворяет условиям первой теоремы, то из этой теоремы будет следовать, что:

Символьное решение дифференциальных уравнений i

Символьное решение дифференциальных уравнений i

Повторение этого вычисления дает

Символьное решение дифференциальных уравнений i

После конечного числа таких шагов мы получаем следующее обобщение первой теоремы:

Символьное решение дифференциальных уравнений i

Символьное решение дифференциальных уравнений i

Применяя соотношение (3), содержащее преобразованные по Лапласу производные искомой функции с начальными условиями, к уравнению (1), можно получить его решение по методу, специально разработанному на нашей кафедре при активной поддержке Scorobey для библиотеки SymPy.

Метод решения линейных дифференциальных уравнений и систем уравнений, основанный на преобразованиях Лапласа, с использованием библиотеки SymPy

Символьное решение дифференциальных уравнений i

где Символьное решение дифференциальных уравнений i— приведенное начальное положение массы, Символьное решение дифференциальных уравнений i— приведенная начальная скорость массы.

Упрощённая физическая модель, заданная уравнением (4) при ненулевых начальных условиях [1]:

Символьное решение дифференциальных уравнений i

Система, состоящая из материальной точки заданной массы, закрепленной на пружине, удовлетворяет задаче Коши (задаче с начальными условиями). Материальная точка заданной массы первоначально находится в покое в положении ее равновесия.

Для решения этого и других линейных дифференциальных уравнений методом преобразований Лапласа удобно пользоваться следующей системой, полученной из соотношений (3):
Символьное решение дифференциальных уравнений i
Символьное решение дифференциальных уравнений i
Символьное решение дифференциальных уравнений i
Символьное решение дифференциальных уравнений i
Символьное решение дифференциальных уравнений i

Последовательность решения средствами SymPy следующая:

    загружаем необходимые модули и явно определяем символьные переменные:

указываем версию библиотеки sympy, чтобы учесть ее особенности. Для этого нужно ввести такие строки:

по физическому смыслу задачи переменная времени определяется для области, включающей ноль и положительные числа. Задаём начальные условия и функцию в правой части уравнения (4) с её последующим преобразование по Лапласу. Для начальных условий необходимо использовать функцию Rational, поскольку использование десятичного округления приводит к ошибке.

пользуясь (5), переписываем преобразованные по Лапласу производные, входящие в левую часть уравнения (4), формируя из них левую часть этого уравнения, и сравниваем результат с правой его частью:

решаем полученное алгебраическое уравнение относительно преобразования X(s) и выполняем обратное преобразование Лапласа:

осуществляем переход из работы в библиотеке SymPyв библиотеку NumPy:

строим график обычным для Python методом:

Получаем:
Версия библиотеки sympy – 1.3

Символьное решение дифференциальных уравнений i

Получен график периодической функции, дающей положение материальной точки заданной массы. Метод преобразования Лапласа с использованием библиотеки SymPy дает решение не только без потребности сначала найти общее решение однородного уравнения и частное решение первоначального неоднородного дифференциального уравнения, но и без потребности использования метода элементарных дробей и таблиц Лапласа.

При этом учебное значение метода решения сохраняется за счёт необходимости использования системы (5) и перехода в NumPy для исследования решения более производительными методами.

Для дальнейшей демонстрации метода решим систему дифференциальных уравнений:
Символьное решение дифференциальных уравнений i
с начальными условиями Символьное решение дифференциальных уравнений i

Упрощённая физическая модель, заданная системой уравнений (6) при нулевых начальных условиях:

Символьное решение дифференциальных уравнений i

Таким образом, сила f(t) внезапно прилагается ко второй материальной точке заданной массы в момент времени t = 0, когда система находится в покое в ее положении равновесия.

Решение системы уравнений идентично ранее рассмотренному решению дифференциального уравнения (4), поэтому привожу текст программы без пояснений.

Символьное решение дифференциальных уравнений i

Для ненулевых начальных условий текст программы и график функций примет вид:

Символьное решение дифференциальных уравнений i

Рассмотрим решение линейного дифференциального уравнения четвёртого порядка с нулевыми начальными условиями:
Символьное решение дифференциальных уравнений i
Символьное решение дифференциальных уравнений i

Символьное решение дифференциальных уравнений i

Решим линейное дифференциальное уравнение четвёртого порядка:
Символьное решение дифференциальных уравнений i
с начальными условиями Символьное решение дифференциальных уравнений i, Символьное решение дифференциальных уравнений i, Символьное решение дифференциальных уравнений i.

Символьное решение дифференциальных уравнений i

Функции для решения ОДУ

Для имеющих аналитическое решение ОДУ и систем ОДУ применяется функция dsolve():
sympy.solvers.ode.dsolve(eq, func=None, hint=’default’, simplify=True, ics=None, xi=None, eta=None, x0=0, n=6, **kwargs)

Давайте сравним производительность функции dsolve() с методом Лапласа. Для примера возьмём следующее дифференциальное уравнение четвёртой степени с нулевыми начальными условиями:
Символьное решение дифференциальных уравнений i
Символьное решение дифференциальных уравнений i

Время решения уравнения с использованием функции dsolve(): 1.437 s

Символьное решение дифференциальных уравнений i

Время решения уравнения с использованием преобразования Лапласа: 3.274 s

Символьное решение дифференциальных уравнений i

Итак, функция dsolve() (1.437 s) решает уравнение четвёртого порядка быстрее, чем выполняется решение по методу преобразований Лапласа (3.274 s) более чем в два раза. Однако при этом следует отметить, что функция dsolve() не решает системы дифференциальных уравнений второго порядка, например, при решении системы (6) с использованием функция dsolve() возникает ошибка:

Данная ошибка означает, что решение системы дифференциальных уравнений с помощью функции dsolve() не может быть представлено символьно. Тогда как при помощи преобразований Лапласа мы получили символьное представление решения, и это доказывает эффективность предложенного метода.

Для того чтобы найти необходимый метод решения дифференциальных уравнений с помощью функции dsolve(), нужно использовать classify_ode(eq, f(x)), например:

Eq(f(x), C1*sin(x) + C2*cos(x))
(‘nth_linear_constant_coeff_homogeneous’, ‘2nd_power_series_ordinary’)
(‘separable’, ‘1st_exact’, ‘almost_linear’, ‘1st_power_series’, ‘lie_group’, ‘separable_Integral’, ‘1st_exact_Integral’, ‘almost_linear_Integral’)
[Eq(f(x), -acos((C1 + Integral(0, x))*exp(-Integral(-tan(x), x))) + 2*pi), Eq(f(x), acos((C1 + Integral(0,x))*exp(-Integral(-tan(x), x))))]

Таким образом, для уравнения eq=Eq(f(x).diff(x,x)+f(x),0) работает любой метод из первого списка:

Для уравнения eq = sin(x)*cos(f(x)) + cos(x)*sin(f(x))*f(x).diff(x) работает любой метод из второго списка:

separable, 1st_exact, almost_linear,
1st_power_series, lie_group, separable_Integral,
1st_exact_Integral, almost_linear_Integral

Чтобы использовать выбранный метод, запись функции dsolve() примет вид, к примеру:

Вывод:

Данная статья ставила своей целью показать, как использовать средства библиотек SciPy и NumPy на примере решения систем линейных ОДУ операторным методом. Таким образом, были рассмотрены методы символьного решения линейных дифференциальных уравнений и систем уравнений методом Лапласа. Проведен анализ производительности этого метода и методов, реализованных в функции dsolve().

  1. Дифференциальные уравнения и краевые задачи: моделирование и вычисление с помощью Mathematica, Maple и MATLAB. 3-е издание.: Пер. с англ. — М.: ООО «И.Д. Вильяме», 2008. — 1104 с.: ил. — Парал. тит. англ.
  2. Использование обратного преобразования Лапласа для анализа динамических звеньев систем управления

Поделиться или сохранить к себе: