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

Изучение методов решения систем обыкновенных дифференциальных уравнений. Моделирование заданного физического процесса движения тележки, помещенной в ящик с использованием системы линейных уравнений. Анализ программирования в среде C++Builder XE2.

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

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

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

Размещено на http://www.allbest.ru/

Реферат

по прикладному программированию

но тему

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

Введение

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

Для этого необходимо разработать программу в среде C++Builder XE2, реализующую математическое моделирование физического процесса, а также решение дифференциальных уравнений тремя методами - Эйлера, Рунге-Кутта, Адамса. Сравнить результаты, полученные тремя методами. Выполнить проверку в математическом пакете Matlab.

1. Описание объекта

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

Рисунок 1. - Схематическое изображение системы:

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

(1.1)

Где:

m 1 - масса нижнего тела (тележки);

m 2 - масса верхнего тела (груза);

C1 - жесткость левой пружины;

C2 - жесткость правой пружины;

C3 - жесткость верхней пружины;

l1 -длина покоя левой пружины;

l2 - длина покоя правой пружины;

l3 - длина покоя верхней пружины;

w - длина нижнего тела;

h - высота нижнего тела;

k - коэффициент трения среды;

L - ширина всей площадки, на которой перемещаются тела;

nyu - коэффициент трения о поверхность.

2. Математическое описание методов интегрирования для уравнения динамики системы тел

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

Решить дифференциальное уравнение численным методом - значит для заданной последовательности аргументов х0, х1…, хn и числа у0, не определяя функцию у=F, найти такие значения у1, у2,…, уn.

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

h = xk - xk - 1

Что называется шагом интегрирования.

Рассмотрим некоторые методы.

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

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

Найдём решения уравнения на отрезке [a,b].

Разобьем отрезок [a, b] на n равных частей и получим последовательность, где:

xi = x0 + ih (i=0,1,…, n)

а * h= (b - a) / n

- шаг интегрирования.

В методе Эйлера приближенные значения ?yi вычисляются последовательно по формулам:

yi+1 = уi + hf (xi, yi) * (i=0,1,2…)

При этом искомая интегральная кривая:

у = у * (х)

Проходящая через точку A0, заменяется ломаной A0A1A2.

Ai (xi, * yi) * (i = 0,1,2,…)

Каждое звено AiAi этой ломаной, называемой ломаной Эйлера, имеет направление, совпадающее с направлением той интегральной кривой уравнения, которая проходит через точку Ai.

Рисунок 2. - Ломаная Эйлера:

Вычисления по методу Эйлера с пересчетом делаются в два этапа.

Прогноз:

Коррекция:

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

Заметим, что метод Эйлера с пересчетом представляет собой разновидность методов Рунге-Кутты.

2. Методы Рунге-Кутта обладают следующими свойствами:

1. Эти методы являются одноступенчатыми: чтобы найти ук1, нужна информация о предыдущей точке (xк,yк).

2. Методы согласуются с рядом Тейлора вплоть до членов порядка hp, где степень р различна для различных методов и называется порядковым номером или порядком метода.

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

Алгоритм Рунге-Кутта четвертого порядка:

Рассмотрим задачу Коши.

Приближенное значение в последующих точках вычисляется по формуле:

Вычисление нового значения проходит в четыре стадии:

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

3. Метод Адамса относится к многошаговым схемам решения ДУ, характеризующихся тем, что решение в текущем узле зависит от данных не в одном предыдущем или последующем узле сетки, как это имеет место в одношаговых методах. Это зависит от данных в нескольких соседних узлах.

Идея методов Адамса заключается в том, чтобы для повышения точности использовать вычисленные уже на предыдущих шагах значения:

Если используются значения в k предыдущих узлах, то говорят о k-шаговом методе интегрирования уравнения.

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

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

(k - 1) -

Который используется при интегрировании дифференциального уравнения по выражению:

Интеграл при этом выражается через квадратурную формулу:

,

лi - квадратурные коэффициенты, значения которых k от 2 до 4 приведены в таблице ниже.

k

лi

2

3/2

-1/2

3

23/12

-16/12

5/12

4

55/24

-59/24

37/24

-9/24

Полученное таким образом семейство формул называется явной k-шаговой схемой Адамса.

Как видно, при k=1 в качестве частного случая получается формула Эйлера.

Например, для формулы 4 порядка имеем:

Где:

-“прогноз”, вычисленный с использованием значений в предыдущих точках,

(Р) - приближенное значение функции, вычисленное в точке получения прогноза,

-«коррекция» прогнозного значения, искомое значение по Адамсу.

Достоинство такого метода решения ДУ заключается в том, что в каждой точке рассчитывается только одно значение функции F(x,y). К недостаткам можно отнести невозможность старта многошагового метода из единственной начальной точки, так как для вычислений по k-шаговой формуле необходимо значение значения функции в k узлах. Поэтому приходится (k-1) решение в первых узлах x1, x2, …, xk-1 получать с помощью какого-либо одношагового метода, например метода Рунге-Кутта 4-го порядка. Другой проблемой является невозможность изменения шага в процессе решения, что легко реализуется в одношаговых методах.

3. Описание программы на С++

Программа позволяет получить решение системы ДУ, представленной в формуле (1.1), методами математического моделирования (Эйлера, Рунге-Кутта, Адамса). Результаты решения представлены динамическим отображением физического процесса в режиме реального времени.

Интерфейс программы визуально можно разделить на 4 области:

1. Область обрисовки физической модели;

2. Область задания начальных значений;

3. Область выбора метода расчета;

4. Блок кнопок управления программой.

Рисунок 3. - Интерфейс программы:

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

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

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

Блок кнопок управления программой позволяет запустить моделирование физического процесса (кнопка «Старт») и поведения (движения заданной системы тел) физической модели, а так же, остановить моделирование (Кнопка «Стоп») до окончания заданного времени моделирования.

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

4. Краткое описание программы в пакете Matlab и представление результатов её выполнения

Описание программы в пакете Matlab:

Для решения полученной в формуле (1.1) системы ДУ в пакете MATLAB была использована стандартная функция ode45, где:

- f - вектор-функция для вычисления правой части уравнения системы уравнений;

- interval - массив из двух чисел, определяющий интервал интегрирования дифференциального уравнения или системы;

- Х0 - вектор начальных условий системы дифференциальных систем options - параметры управления ходом решения дифференциального уравнения или системы. Вектор-функция с именем Model (t,x), задаётся в файле «Model.m». После сохранения файла «Model.m» формируем код сценария обрисовки графиков, представляющий собой следующую последовательность команд в командной строке:

1) Вызываем функцию ode45 с требуемыми параметрами:

2) Результатом выполнения функции ode45 является массив. Для построения графиков задаем следующие команды:

3) Задаем команду обрисовки двух графиков на одной координатной оси заданными цветами:

4) Включаем сетку, подписываем оси и формируем легенду графиков:

В результате в окне «Figure 1» получаем изображение графиков.

Рисунок 4. - Результаты выполнения программы при начальных условиях:

Результаты выполнения программы при изменении начальных условий

1. Примем m2 равным 20, а остальные параметры оставим без изменений:

m1 = 2;

m2 = 20;

C1 = 200;

C2 = 200;

C3 = 200;

l1 = 0.4;

l2 = 0.4;

l3 = 0.4;

L = 5;

w = 2;

k = 0.5;

nyu = 0.2;

Изменив параметры системы, получаем следующие графики (Рис.5):

Рисунок 5. - Результаты выполнения программы при изменении начальных условий:

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

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

Заключение

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

Разработана программа в среде C++Builder XE2, реализующая моделирование физического процесса по его математической модели, используя методы Эйлера, Рунге-Кутта, Адамса.

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

Размещено на Allbest.ru


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

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

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

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

    контрольная работа [51,5 K], добавлен 07.05.2009

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

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

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

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

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

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

  • Решение системы дифференциальных уравнений, заданной в нормальной форме Коши. Определение аналитических зависимостей изменения переменных состояния системы с использованием преобразования Лапласа. Численный метод решения системы c помощью Mathcad.

    практическая работа [657,1 K], добавлен 05.12.2009

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

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

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

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

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

    курсовая работа [149,7 K], добавлен 16.11.2008

  • Суть метода Рунге-Кутта и его свойства. Решение дифференциальных уравнений первого порядка. Вычислительный блок Given/Odesolve. Встроенные функции rkfixed, Rkadapt, Bulstoer. Решения линейных алгебраических уравнений в среде MathCad и Microsoft Excel.

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

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