регистрация / вход

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

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

Методы и алгоритмы компьютерного решения

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

Введение

Для того, чтобы описать динамику различных процессов, протекающих в природных и в технических системах, составляют, опираясь на физические законы, дифференциальные уравнения. Так, в частности, приходится поступать при исследовании функционирования автоматических систем; работы судовых энергетических комплексов, электрических агрегатов, судовых вспомогательных механизмов, систем навигации и т.д. В ряде случаев эти уравнения допускают линеаризацию и могут быть записаны в виде:

,

где y (t ) – неизвестная функция, a 0 , a 1 ,...a n – постоянные коэффициенты, а j(x ) – некоторая известная функция независимого аргумента t , которая обычно выражает внешнее воздействие, оказываемое на систему.

1. Цель контрольной работы

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

В результате выполнения контрольной работы студент обязан:

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

2. Ознакомиться с основными алгоритмами существующих компьютерных методов.

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

2 . Аналитические методы

Общее решение дифференциального уравнения n-го порядка – неизвестная функция y (t ) – содержит n произвольных постоянных. Их можно определить, зная начальные условия, накладываемые на неизвестную функцию и на ее производные вплоть до (n-1)-порядка включительно. Аналитически (в символьном виде) такие уравнения решают классическим и операционным методами.

2 .1 Классический метод

В ограниченном числе случаев вида левой части (1) допускает такое преобразование, которое позволяет найти решение путем непосредственного интегрирования, однако в общем случае порядок решения – иной.

Решение неоднородного дифференциального уравнения (с ненулевой правой частью) является суммой общего решения соответствующего однородного дифференциального уравнения y 1 (t ) и частного решения y 2 (t ) неоднородного дифференциального уравнения (1).

Решение однородного уравнения ищем в виде: . Подстановка его в дифференциальное уравнение приводит к характеристическому алгебраическому уравнению n -ного порядка:

,

которое имеет n корней – . В частном случае отсутствия кратных корней общее решение может быть записано в виде:

,


где Сi – произвольные постоянные, которые находятся из начальных условий.

Имеются правила, позволяющие определить вид y2 (t ) частного решения в зависимости от вида правой части – функции j(t ). Последующая подстановка общего решения в исходное дифференциальное уравнение позволяет найти неопределенные константы Ci в выражении для y 1 (t ).

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

2 .2 Метод операционного исчисления

Суть метода состоит в проведении интегрального преобразования Лапласа функции, входящей в состав дифференциального уравнения, по правилу:

,

где s = a + j × b – комплексная переменная величина.

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

Преобразование Лапласа можно выполнить, используя блок символьных вычислений MathCAD. Этот же блок позволяет выполнить и обратное преобразование Лапласа, в соответствии с соотношением:

,

где , т. е. интегрирование проводится по прямой, лежащей в плоскости комплексного переменного s и проходящей параллельно мнимой оси jw на расстоянии s от нее, при этом Лаплас образ Y (s ) должен иметь особенности слева от этой линии.

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

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

- выполняя преобразование Лапласа левой и правой части дифференциального уравнения, учитываем начальные условия и переходим от дифференциального уравнения для функции оригинала y (t ) к алгебраическому уравнению для Лаплас образа – Y (s ) ;

- решая алгебраическое уравнение, находим в пространстве изображений в явном виде выражение для Y (s );

- выполняя обратное преобразование мы находим неизвестную функцию y (t ).

Все этапы этой процедуры могут быть автоматизированы и выполнены в рамках пакета MathCAD (пример 1).

Следует заметить, что пакет MathCAD далеко не всегда способен выполнить в символьной форме результат обратного Лаплас преобразования. Дело в том, что в блок символьных преобразований пакета заложены правила выполнения данной процедуры для выражений записанных в виде элементарных дробей. Поэтому Лаплас образ предварительно разлагается на элементарные дроби. Однако, если корни полинома в знаменателе представляются в виде комбинации сложных радикалов, то MathCAD «отказывается» работать. В этом случае ему необходимо «помочь» врукопашную выполнив разложения полинома в знаменателе в соответствии с соотношением:

,

где s 1 , s 2 ,…sn – корни уравнения . В примере 1 рассмотрено выполнение обратного преобразования Лапласа и для такого случая.

Рассмотренная методика нахождения аналитического решения дифференциальных уравнений может быть распространена на задачу решения системы дифференциальных уравнений. В этом случае необходимо решить не одно алгебраическое уравнение для Лаплас-образов, а систему алгебраических уравнений с помощью той же процедуры блока решений Given – Find. Отметим, что в отличие от систем компьютерной математики Mathematica 2.2.2 и Maple V R3/R4, которые легко позволяют аналитически решить линейное дифференциальное уравнение с помощью встроенных средств. Система MathCAD предполагает «ручные процедуры» запуска прямого преобразования Лапласа, составления по его результатам алгебраического уравнения и, после его решения, запуска процедуры обратного преобразования Лапласа.

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

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

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

И наконец, точные методы не пригодны для случая, если правая часть дифференциального уравнения представлена не в аналитической форме, а в виде таблицы или графика.

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

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

Использование для численного решения дифференциальных уравнений компьютерного пакета MathCAD предполагает знание алгоритма работы численных методов для разумного их применения (знание границ применимости, оценки точности, затрат компьютерных ресурсов и др.). Дело в том, что к результатам компьютерных вычислений всегда нужно относиться критически; анализировать их на правдоподобность, и для того, чтобы избежать "подводных камней" при использовании любого стандартного пакета, реализующего численные методы, нужно иметь хотя бы минимальное представление о том, какой именно численный метод реализован для решения той или иной задачи и как он «работает».

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

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

Поэтому, идея применения численных методов для решения уравнения старших порядков, в принципе, ничем не отличается от идеи численного решения уравнения первого порядка, которые рассматривались в лабораторной работе №10.

Нетрудно расширить применение описанной выше методики на случай системы линейных уравнений. В примерах 2 и 3 представлены реализации метода Эйлера в рамках векторной процедуры и с помощью программы-функции. В обоих случаях получены одинаковые результаты, которые поверяются по полученному ранее (см. пример 1) аналитическому решению. Решение приближенное и точное сильно отличаются и величина относительной ошибки (для выбранного шага) составляет ~13%. Пример 3 нетрудно оптимизировать и придать ему более компактный вид, считая начальные условия и правые части системы уравнений компонентами некоторых векторов. Также допустима доработка программы-функции на случай любого числа уравнений путем изменения числа аргументов программы-функции, а также числа строк в программе: в задании начальных условий и в цикле вычисления массива решений.

Аналогично методу Эйлера векторная и программная реализации вычислений по методу Рунге-Кутта могут быть распространены на случай решения системы дифференциальных уравнений. Прямое решение задачи в этом случае представляется достаточно громоздким и желательно предусмотреть расчета констант метода в рамках внутренних циклов. В пакете MathCAD имеются встроенные функции, решающие подобные задачи. Так, процедуру расчета приближенного решения по методу Рунге-Кутта решается с помощью функций rkfixed и Rkadapt. Пример решения той же системы дифференциальных уравнений дан в примере 4. Отличие в точности полученных решений для данного дифференциального уравнения невелико, однако, если решением дифференциального уравнения является сильно осциллирующая функция, то метод с переменным шагом обеспечивает большую точность.


Примеры решения различных уравнений с помощьюкомпьютерного пакета MathCAD.

Пример №1
Пример №2
Пример №3
Пример №4


Задание к контрольной роботе:

Дифференцируем левые части уравнения методом Лапласа, а затем суммируем их.


Заменяя функцию y(x) на Y, получим выражение, которое потом упрощаем с помощью функции collect.

Находим правую часть уравнения таким же способом

Получаем исходное алгебраическое уравнение которое решаем в символьном виде:

Решение уравнения

Теперь выполняем обратное преобразование и находим решение исходной дифференциальной задачи

Ответ

.

Проводим проверку правильности начальных условий, используя функцию subtitute

Графическое представление результатов решения:

ОТКРЫТЬ САМ ДОКУМЕНТ В НОВОМ ОКНЕ

ДОБАВИТЬ КОММЕНТАРИЙ [можно без регистрации]

Ваше имя:

Комментарий