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

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

Рубрика Программирование, компьютеры и кибернетика
Вид лабораторная работа
Язык русский
Дата добавления 15.07.2009
Размер файла 47,2 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Кафедра: Информационные Технологии

Лабораторная Работа

На тему: РЕШЕНИЕ ОБЫКНОВЕННЫХ ДИФФЕРЕНЦИАЛЬНЫХ УРАВНЕНИЙ

Москва, 2008 год

РЕШЕНИЕ ОБЫКНОВЕННЫХ ДИФФЕРЕНЦИАЛЬНЫХ УРАВНЕНИЙ

Цели работы:

знать команды, используемые при решении обыкновенных дифференциальных уравнений в системе вычислений Maple;

уметь применять указанные команды для решения математических задач.

ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ

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

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

dsolve (уравнения, неизвестные, [опции]);

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

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

(D@@n) (функция) (переменная);

В этой записи n представляет целое число, определяющее порядок производной, параметр функция - используемый идентификатор функции, а параметр переменная - независимую переменную функции. Например, производная второго порядка функции f (х) с использованием этого оператора задается так:

(D@@ 2) (f) (x);

Ниже представлены несколько примеров задания дифференциальных уравнений и систем дифференциальных уравнений:

> ex1:=diff(y(x),x$3)+k^2*y(x)=0;

> ex2:=(D@@3)(y)(x)+k^2*y(x)=cos(k1*x);

> sys1:={D(y1)(x)=a[1,1]*y1(x)+a[1,2]*y2(x),

D(y2)(x)=a[2,1]*y1(x)+a[2,2]*y2(x)};

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

Решим одно из известных уравнений:

> ex3:=diff(y(x),x$2)+k^2*y(x)=0;

> dsolve(ex3,y(x));

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

> ex4:=diff(y(x),x)=-sqrt(x^2-y(x))+2*x;

> dsolve(ex4,y(x));

> isolate(%,y(x));

Команда isolate ( ) в этом примере выражает заданное вторым параметром выражение (у(х)) из уравнения, определяемого первым параметром (в нашем случае из неявного вида общего решения дифференциального уравнения).

По умолчанию команда dsolve ( ) сначала пытается найти общее реше-ние в явном виде, и если таковое не удается найти, то решение выдается в неявном виде (конечно, при условии его существования). Можно "озадачить" Maple поиском общего решения в явном виде, используя опцию explicit = true (по умолчанию используется explicit = false):

> dsolve(ex4,y(x),explicit=true);

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

Не для любого дифференциального уравнения удается найти общее решение в явном или неявном виде. В этом случае можно построить приближенное решение в форме ряда Тейлора. Для этого нужно задать опцию

type=series в команде dsolve ( ) (по умолчанию используется type=exact), а также установкой значения системной переменной Order определить, до какого порядка малости относительно независимой переменной функции ищется разложение решения в ряд Тейлора в окрестности нулевой точки:

> Order:=4;

> eqq:=(D@@2)(y)(x)+(a*x^2)*D(y)(x)+y(x)=0;

> dsolve(eqq,y(x),type=series);

Заметим, что в решении дифференциального уравнения второго порядка, представленном рядом Тейлора, в качестве постоянных используются значения искомой функции и ее первой производной в точке х=0: у(0), D(y)(0).

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

> eqn1:=diff(y(x),x$2)+k^2*y(x)=0;

Задача Коши для этого дифференциального уравнения второго порядка требует задания в нулевой точке значения неизвестной функции и ее первой производной. Ее решение представлено ниже:

> dsolve({eqn1,y(0)=0,D(y)(0)=1},y(x));

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

> dsolve({eqn1,y(0)=0,y(1)=1},y(x));

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

Если точное решение задачи Коши или краевой задачи системой Maple не найдено, а приближенное решение в виде ряда Тейлора нас не устраивает, то можно построить численное решение, опять-таки с использованием все той же команды dsoive ( ). Для этого задают опцию type = numeric, а с помощью опции method = метод определяют используемый для построения численного решения метод. Параметр метод принимает одно из значений, представленных в табл. 1.

Таблица 1. Значения опции method при численном решении дифференциальных уравнений.

Значение

Описание

Rkf45

Метод Рунге-Кутта-Фальберга порядка 4-5

Dverk78

Метод Рунге-Кутта порядка 7-8

По умолчанию (если не задана опция method) применяется метод Рунге-Кутта-Фальберга порядка 4-5. При использовании численного решения следует помнить, что все параметры дифференциального уравнения (символьные константы) должны быть определены. Например, для задачи Коши уравнения eqn1 предыдущего примера следует задать численное значение для параметра k.

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

> eqn1:=diff(y(x),x$2)+k^2*y(x)=0;

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

> F:=dsolve({eqn1,y(0)=0,D(y)(0)=1},y(x),type=numeric);

Если не присвоить параметру k конкретного числового значения, то попытка получить значение решения в точке, например х = 1, приведет к ошибке:

> F(1);

Error, (in dsolve/numeric/rkf45) cannot evaluate boolean: 2.+abs(.2511886433e-1-.2016799760e-5*k^2-.3377712687e-4*k^2*(.2318664400e-1-.3700729218e-5*k^2)+.6309573448e-5*k^2*(.2511886433e-1-.6603721651e-5*k^2)) <= 0.

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

> k:=1:

> F(0);F(1);F(2);

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

Задачи для самостоятельного решения.

1. Решить уравнения:

1.1. ; 1.13. ;

1.2. ; 1.14. ;

1.3. ; 1.15. ;

1.4. ; 1.16. ;

1.5. ; 1.17. ;

1.6. ; 1.18. ;

1.7. ; 1.19. ;

1.8. ; 1.20. ;

1.9. ; 1.21. ;

1.10. ; 1.22.

1.11. ; 1.23. ;

1.12. ; 1.24.

Варианты заданий.

. 1.1; 1.2; . 1.12; 1.21;

. 1.3; 1.4; . 1.13; 1.22

. 1.5; 1.6; . 1.14; 1.23;

. 1.7; 1.8; . 1.15; 1.24;

. 1.9; 1.18; . 1.16; 1.14;

. 1.10; 1.19; . 1.17; 1.15;

. 1.11; 1.20;

Контрольные вопросы.

1. Команда dsolve ( ), ее предназначение и синтаксис.

2. Оператор D, его предназначение и синтаксис.

3. Команда isolate ( ), ее предназначение и синтаксис.

4. Какая опция в команде dsolve ( ) используется для построения приближенного решения дифференциального уравнения в форме ряда Тейлора?

5. Как решить задачу Коши с помощью команды dsolve ( )?

6. Как решить краевую задачу с помощью команды dsolve ( )?

7. Можно ли с помощью команды diff ( ) задавать производные в начальных или краевых условиях?

8. Как с помощью команды dsolve ( ) построить численное решение дифференциального уравнения?

Литература

1. Говорухин В.Н., Цибулин В.Г. Введение в Maple. Математический пакет для всех. - М.: Мир, 1997. - 208 с.

2. Дьяконов В.П. Математическая система Maple V. - М.: Издательство “Солон”,1998.

3. Двайт Г.Б. Таблицы интегралов и другие математические формулы. - М.: Наука. Главная редакция физико-математической литературы, 1983. - 176 с.

4. Матросов А.В. Maple 6. Решение задач высшей математики и механики. - СПб.:БХВ - Петербург, 2001.- 528 с.

5. Манзон Б.М. Maple V Power Edition - М.: Информационно-издательский дом “Филинъ”,1998г.


Подобные документы

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

    курсовая работа [226,6 K], добавлен 05.04.2013

  • Команды, используемые при решении уравнений и их систем, неравенств и их систем в системе аналитических вычислений Maple. Выражения, соединенные знаком равенства. Проверка типа переменной. Решение одного уравнения относительно заданной переменной.

    лабораторная работа [41,7 K], добавлен 15.07.2009

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

    курсовая работа [1,9 M], добавлен 05.01.2013

  • Реализация решения обыкновенных дифференциальных уравнений 1-го и 2-го порядка методом Рунге-Кутты. Построение на ЭВМ системы отображения результатов в табличной форме и в виде графика. Архитектура и требования к разрабатываемым программным средствам.

    курсовая работа [2,7 M], добавлен 05.11.2011

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

    дипломная работа [1,6 M], добавлен 19.06.2012

  • Разработка программы для решения системы обыкновенных дифференциальных уравнений на базе языка программирования Паскаль АВС. Чтение исходных данных из внешнего файла. Вывод исходных данных и результатов на дисплей и во внешний файл. Суть метода Ейлера.

    реферат [126,1 K], добавлен 12.01.2012

  • Решение системы обыкновенных дифференциальных уравнений в программе Matlab. Применение метода Рунге–Кутты. Априорный выбор шага интегрирования. Построение трехмерного графика движения точки в декартовой системе координат и создание видеофайла формата AVI.

    контрольная работа [602,8 K], добавлен 04.05.2015

  • Решение уравнения методом половинного деления. Программа в Matlab для уравнения (x-2)cos(x)=1. Решение нелинейных уравнений методом Ньютона. Интерполяция заданной функции. Решение системы линейных алгебраических и обыкновенных дифференциальных уравнений.

    курсовая работа [1,4 M], добавлен 15.08.2012

  • Численные методы решения задачи Коши для обыкновенных дифференциальных уравнений: Эйлера, Рунге-Кутта, Адамса и Рунге. Техники приближенного решения данных уравнений: метод конечных разностей, разностной прогонки, коллокаций; анализ результатов.

    курсовая работа [532,9 K], добавлен 14.01.2014

  • Обзор методов решения в Excel. Рекурентные формулы метода Эйлера. Метод Рунге-Кутта четвертого порядка для решения уравнения первого порядка. Метод Эйлера с шагом h/2. Решение дифференциальных уравнений с помощью Mathcad. Модифицированный метод Эйлера.

    курсовая работа [580,1 K], добавлен 18.01.2011

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.