Математический анализ в Maple

         

Пример решения одиночного дифференциального уравнения



Шаг 1

Рисунок 13.5. Пример решения одиночного дифференциального уравнения



Шаг 1

Рисунок 13.8. Решение системы дифференциальных уравнений Лотки—Вольтерра , с выводом в виде графика векторного поля
Еще интересней вариант графиков, представленный на Рисунок 13.9. Здесь помимо векторного поля несколько иного стиля построены фазовые портреты решения с использованием функциональной закраски их линий. Фазовые портреты построены для двух наборов начальных условий: 
x(0) = y(0) = 1,2 и x(0) = 1 и у(0)=0,7.
Следует отметить, что функция DEplot может обращаться к другим функциям пакета DEtools для обеспечения специальных графических возможностей, таких как построение векторного поля или фазового портрета решения.



Шаг 1

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



Шаг 1

Рисунок 13.11. Пример решения системы из двух дифференциальных уравнений с построением трехмерного фазового портрета
Здесь помимо упоминавшихся ранее параметров используются следующие: pdiffeq — квазилинейные дифференциальные уравнения первого порядка (PDE), vans — независимая переменная и i_curve — начальные условия для параметрических кривых трехмерной поверхности. Помимо опций, указанных для функции DEplot, здесь могут использоваться следующие опции:


  • basechar = TRUE, FALSE. ONLY — устанавливает показ базовых характеристик кривых; 
  •  basecolor, basecolor = b_color — устанавливает цвет базовых характеристик; 
  •  initcolor, initcolor =i_color — инициализация цветов;
  •  numchar = integer — задает число отрезков кривых, которое не должно быть меньше 4 (по умолчанию 20); 
  •  numsteps = [integerl.integerZ] — задает число шагов интегрирования (по умолчанию [10, 10]).
 Рисунок 13.12 демонстрирует применение функции PDEplot. Этот пример показывает, насколько необычным может быть решение даже простой системы дифференциальных уравнений в частных производных.



Шаг 1

Рисунок 13.13. Построение комбинированного графика с помощью функции PDEplot
Обратите внимание на использование опций в этом примере, в частности на вывод надписи на русском языке. В целом список параметров функции phaseportrait аналогичен таковому для функции DEplot (отсутствует лишь задание начальных условий).



Шаг 1

Рисунок 13.14. Построение фазового портрета в виде графика векторного поля



Шаг 1

В первом случае система дифференциальных уравнений (модель. Лотки-Воль-терра) автономна, а во втором случае дифференциальное уравнение не автономно.



Шаг 1

В данном случае повышение уровня вывода до 4 или 5 бесполезно, поскольку вся информация о решении сообщается уже при уровне 2 (или 3).



Шаг 1





Шаг 1

Следующие примеры иллюстрируют возможность решения одного и того же дифференциального уравнения ode_L разными методами:



Шаг 1





Шаг 1

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



Шаг 1





Шаг 1

Используя функцию dsolve, выполним решение этого дифференциального уравнения:



Шаг 1

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



Шаг 1





Шаг 2

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



Шаг 2

Рисунок 13.9. Пример построения двух фазовых портретов на фоне векторного поля



Шаг 2

Рисунок 13.12. Пример применения функции PDEplot
В данном случае решение представлено трехмерной фигурой весьма нерегулярного вида.
Другой пример использования функции PDEplot показан на Рисунок 13.13. Он иллюстрирует комбинированное построение графиков решения разного типа с применением функциональной закраски, реализуемой по заданной формуле с помощью опции initcolor. 
Еще раз отметим, что, к сожалению, рисунки в данной книге не дают представления о цвете выводимого Maple графика. Поэтому наглядность решений, видимых на экране монитора, существенно выше.



Шаг 2

Рисунок 13.15. Построение фазового портрета с помощью функции phaserportrait
Еще более интересный пример решения дифференциального уравнения представлен на Рисунок 13.16. Здесь построены фазовые портреты для асимптотических решений.
В целом надо отметить, что возможности визуализации решений дифференциальных уравнений с помощью системы Maple 7 весьма велики и приведенные выше примеры лишь частично иллюстрируют сказанное. В справочной системе можно найти ряд других весьма эффектных решений систем дифференциальных уравнений с визуализацией последних. ,



Шаг 2

Рисунок 13.17. Примеры решения ДУ третьего порядка



Шаг 2

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



Шаг 2

Обратите внимание на решение второго из этих уравнений. Здесь использован прием визуализации исходного дифференциального уравнения, и оно задается значением переменной de. Кроме того, и это особенно важно, решение осуществляется при заданных начальных условиях. Именно поэтому в решении отсутствуют произвольные постоянные вида _СN.



Шаг 2

Рисунок 13.2. Решение системы дифференциальных уравнений численным методом rkf45 с выводом графика решения
Указанная процедура возвращает особый тип данных, позволяющих найти решение в любой точке или построить график решения (или решений). Для графического отображения Maple 7 предлагает ряд возможностей, и одна из них представлена на Рисунок 13.2 — см. последнюю строку ввода. При этом используется функция plot[odeplot] из пакета odeplot, предназначенного для визуализации решений дифференциальных уравнений.
В список параметров функции dsolve можно явным образом включить указание на метод решения, например опция mathod=dverk78 задает решение непрерывным методом Рунге—Кутта порядка 7 или 8. Вообще говоря, численное решение дифференциальных уравнений можно производить одним из следующих методов:

  • classical — одна из восьми версий классического метода, используемого по умолчанию;
  •  rkf45 — метод Рунге—Кутта 4 или 5 порядка, модифицированный Фелбергом;
  •  dverk78 — непрерывный метод Рунге—Кутта порядка 7 или 8;
  •  gear — одна из двух версий одношагового экстраполяционного метода Гира;
  •  mgear — одна из трех версий многошагового эктраполяционного метода Гира;
  •  lsode — одна из восьми версий Ливенморского решателя жестких дифференциальных уравнений;
  •  taylorseries — метод разложения в ряд Тейлора.
Обилие используемых методов расширяет возможности решения дифференциальных уравнений в численном виде. Большинство пользователей Maple 7 вполне устроит автоматический выбор метода решения по умолчанию. Однако в сложных случаях возможна прямая установка одного из указанных выше методов. С деталями реализации методов можно ознакомиться по справочной системе.
С помощью параметра ' abserr' =аеrr можно задать величину абсолютной погрешности решения, а с помощью 'minerr'=mine — минимальную величину погрешности. В большинстве случаев эти величины, заданные по умолчанию, оказываются приемлемыми для расчетов.
Maple 7 реализует адаптируемые к ходу решения методы, при которых шаг решения h автоматически меняется, подстраиваясь под условия решения. Так, если прогнозируемая погрешность решения становится больше заданной, шаг решения автоматически уменьшается. Более того, система Maple способна автоматически выбирать наиболее подходящий для решаемой задачи метод решения.
Еще один пример решения системы дифференциальных уравнений представлен на Рисунок 13.3. Здесь на одном графике представлены зависимости у(х) и z(х), представляющие полное решение заданной системы. При этом процедура имеет особый вид listprocedure и для преобразования списка выходных данных в векторы решения Y и Z используется функция subs.
Для решения достаточно сложных задач полезны специальная структура DESol для решения дифференциальных уравнений и инструментальный пакет DEtools, содержащий самые изысканные средства для графической визуализации результатов решения дифференциальных уравнений. Эти средства мы более подробно рассмотрим в дальнейшем.



Шаг 2

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



Шаг 2

Следует отметить, что подстановки являются мощным средством решения дифференциальных уравнений. Нередки случаи, когда дифференциальное уравнение не решается без их применения. Дополнительные примеры использования подстановок можно найти в справочной базе данных системы Maple 7.
Функция нормализации ОДУ DEnormal синтаксически записывается в виде:
DEnormal(des,ivar,dvar)
где des — система дифференциальных уравнений, 1var — независимая переменная и dvar — зависимая переменная. Применение этой функции поясняют следующие примеры:



Шаг 3

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



Шаг 3

Рисунок 13.16. Построение асимптотического решения на фоне графика векторного поля



Шаг 3





Шаг 3

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



Шаг 3

Функция convertAlg(des,dvar) возвращает список коэффициентов формы системы дифференциальных уравнений des с зависимыми переменными dvar. Это поясняют следующие примеры:



Шаг 4

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



Шаг 4

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



Шаг 4

Для изменения переменных в системах дифференциальных уравнений используется функция convertsys:
convertsys(deqns, inits, vars, ivar, yvec, ypvec)
Здесь deqns — одно дифференциальное уравнение или список (множество), представляющие систему дифференциальных уравнений первого порядка, inits — множество или список начальных условий, vans — зависимые переменные, ivar — независимые переменные, yvec — вектор решений и ypvec — вектор производных. Функция:
indicialeq(des.ivar,alpha.dvar)
обеспечивает полиномиальное представление для линейного однородного дифференциального уравнения второго порядка des. Параметр alpha намечает точку сингулярности.



Шаг 5

Примечание 1
Примечание 1


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



Шаг 5

Функция:
reduceOrder(des.dvar,partsol, solutionForm)
обеспечивает понижение порядка дифференциального уравнения des (или системы уравнений, представленных списком или множеством) при зависимых переменных dvar, частном решении partsol (или списке частных решений) и флаге solutionForm, показывающем, что решение происходит явным методом (explicitly). Для демонстрации действия этой функции воспользуемся примером из ее справочной страницы:



Шаг 6

Функция:
regularsp(des,ivar,dvar)
вычисляет регулярные особые (сингулярные) точки для дифференциального уравнения второго порядка или системы дифференциальных уравнений des. Следующий пример поясняет применение данной функции:
> coefs := [21*(х^2 - х + 1),0,100*х^2*(х-1)^2]:
> regularsp(coefs. х);
[0,1]
Еще две функции пакета DEtools:
translate(des,ivar.pt,dvar) 
untranslate(des,ivar,pt,dvar)
выполняют особую операцию трансляции дифференциального уравнения (или списка дифференциальных уравнений) из центрированного относительно 0 в центрированное относительно 1 и наоборот. С деталями этого специфического процесса заинтересованный читатель может познакомиться в справочной базе данных. И еще одна полезная функция пакета: 
varparam(sols.v.ivar) 
находит общее решение дифференциального уравнения (или системы уравнений) sols методом вариации параметров. Параметр v задает правую часть уравнения; если он равен 0, ищется только частичное решение:



Шаг 7

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

Содержание раздела