Описание используемой математической модели и применяемых методов просчета для решения дифференциального уравнения. Анализ полученных алгоритмов подпрограмм и обзор их функций. Характеристика формы программы. Листинг и решения в работе с MathCad.
Аннотация к работе
Дифференциальные уравнения используются при решении различных задач из разделов физики, химии и математики, но такие уравнения не всегда удается решить без помощи компьютера. Решить методами Эйлера и Рунге-Кутта 4 порядка задачу Коши для дифференциального уравнения 1-го порядка на отрезке [X0; Xk] с шагом hи начальным условием: Y*(X0) = Y0 Где: Y(1),Y(2) - решения, полученные различными численными методами, YT-точное решение дифференциального уравнения. В данной работе предполагается использование двух методов решения дифференциальных уравнений: - Методом Эйлера (Рунге-Кутта 1-го порядка). Метод Эйлера называют методом Рунге-Кутта первого порядка точности.При расчете уравнения двумя методами (Эйлера и Рунге-Кутта 4-го порядка) получили значения сходные с общим решением, метод Рунге-Кутта 4-го порядка является более точным, так как шаг делится на 4 отрезка. В курсовой работе были выполнены все поставленные задачи: написана программа для решения данного дифференциального уравнения двумя численными методами в программе VISUALBASIC, проверено решение с помощью приложения MATHCAD.
Введение
Выбранная тема работы «Визуализация численных методов. Решение обыкновенных дифференциальных уравнений» актуальна, в виду того, что является самостоятельной инженерно-расчетной работой. Она является завершающей по информатике и служит основой для дальнейшего прохождения специальных дисциплин. Дифференциальные уравнения используются при решении различных задач из разделов физики, химии и математики, но такие уравнения не всегда удается решить без помощи компьютера. Именно поэтому создание программ для решения таких уравнений всегда будет актуальным вопросом в улучшении точности получения результатов.
Цель работы: получение навыков решения обыкновенных дифференциальных уравнений путем написания программы на языке VISUALBASIC и проверки решения с помощью приложения MATHCAD.
1. Постановка задач. Описание математической модели
Решить методами Эйлера и Рунге-Кутта 4 порядка задачу Коши для дифференциального уравнения 1-го порядка на отрезке [X0; Xk] с шагом hи начальным условием: Y*(X0) = Y0
Ответ должен быть получен в виде таблицы результатов (таблица 1): Таблица 1. - Вывод результатов: XY(1)Y(2)YT
X0Y0(1)Y0(2)Y(X0)
X1Y1(1)Y1(2)Y(X1)
…………
XkYk(1)Y<k(2)Y(Xk)>Y(X<k)>
Где: Y(1),Y(2) - решения, полученные различными численными методами, YT- точное решение дифференциального уравнения.
Возможно представление результатов решения не в виде таблицы, а в виде списков.
Данные таблицы визуализировать на форме в виде графиков.
Перед вычислением последнего столбца таблицы результатов необходимо из начальных условий вычесть значение коэффициента c, используемого в общем решении.
Таблица 2. - Начальные условия: Дифференциальное уравнениеX0XkhY0Общее решение
х2-х*y’=у?/23 ?/4?/201y=sin(x)
Для достижения поставленных целей определим следующие задачи: 1) Изучение теоретического материала по дифференциальным уравнениям.
2) Решение дифференциального уравнения методами Эйлера и Эйлера модифицированного.
3) Написание программы, для решения уравнения, на языке VISUALBASIC.
4) Построение модели решения в MATHCAD.
5) Построение блок-схемы основных процедур.
6) Сравнение результатов, полученных в разных программах.
2. Описание используемых методов
В данной работе предполагается использование двух методов решения дифференциальных уравнений: - Методом Эйлера (Рунге-Кутта 1-го порядка).
- Методом Рунге-Кутта 4-го порядка).
2.1 Метод Эйлера
Метод Эйлера называют методом Рунге-Кутта первого порядка точности. Данный метод является одношаговым. Табулирование функции происходит поочередно в каждой точке. Для расчета значений функции в очередном узле необходимо использовать значение функции в одном предыдущем узле.
Пусть дано дифференциальное уравнение первого порядка: y’ = f * (x,y)
С начальным условием: y * (x0) = y0
Выберем шаг h и введем обозначения: xi = x0 ih yi = y * (x<i)>Где: i = 0,1,2,3, … xi -узлы сетки, yi -значение интегральной функции в узлах.
Проведем прямую АВ через точку (xi, yi) под углом ?.
При этом: tg ? = f * (x<i, yi)>В соответствии с геометрическим смыслом задачи, прямая АВ является касательной к интегральной функции. Произведем замену точки интегральной функции точкой, лежащей на касательной АВ.
Тогда: yi 1 = y<i ?y>Из прямоугольного треугольника АВС:
IMG_6ec8c8e5-7964-4610-8e44-b0db3a3f7e5d
IMG_b86df343-0e9d-4674-8086-e3c04888cf41
Приравниваем правые части. Получим:
IMG_6fa9f5dd-a696-4de9-b228-3cda1a8b6d81
IMG_8971fcd0-d5d6-4778-943f-307baa152d77
Отсюда:
IMG_1b190307-3dc7-4415-af6a-841b01eab3a7
IMG_b35b1962-447e-4c25-ba6c-484482d5bcaf
Подставим в это выражение формулу, а затем преобразуем его. В результате получаем формулу расчета очередной точки интегральной функции:
IMG_0030ba24-76cf-4631-b8dd-28193d9709a5
IMG_63014516-48d7-4c11-8c9a-08c399139c09
IMG_7f4fdb7b-abdb-492e-89f2-a500800f862d
Из формулы видно, что для расчета каждой следующей точки интегральной функции необходимо знать значение только одной предыдущей точки. Таким образом, зная начальные условия, можно построить интегральную кривую на заданном промежутке.
Метод Эйлера - один из простейших методов численного решения обыкновенных дифференциальных уравнений.
Но существенным его недостатком является большая погрешность вычислений.
На рисунке погрешность вычислений для i-го шага обозначена ?. С каждым шагом погрешность вычислений увеличивается.
2.1.1 Применение метода Эйлера (Рунге-Кутта I порядка) для просчета первой точки дифференциального уравнения курсовой работы
1) Строим оси координат;
2) Отмечаем точку А (1,0) - первая точка интегральной кривой;
3) Ищем угол наклона касательной к графику в точке А:
IMG_3fe67868-5b04-407e-8d4b-e467f349c859
4) Строим касательную l0в точке А под углом ?<0;>5) Находим х1 по формуле: хі = x0 ih
- до пересечения с прямой l0, отмечаем точку В(х<1,у1);>7) Ищем координату у1 для точки В: ?у = у1 - у0 ?х = h f(x0,y0) = (y1 - y0)/h =>y1 = y0 h• (f(x0,y0)) = 1
Точка В имеет координаты: 11 ? / 20,1.
2.1.2 Метод Рунге-Кутта
Для уменьшения погрешности вычислений используется и метод Рунге-Кутта. Этот метод имеет так же название метод Рунге-Кутта четвертого порядка точности.
Для решения поставленной задачи выполняем следующие действия: - Строим оси координат;
- Отмечаем А(1; 1) - первую точку интегральной кривой;
- Ищем угол наклона касательной к графику в точке A:
IMG_49edfa20-6f03-4533-aa13-905c552496e7
- Строим касательную AB в точке А под углом ?0;
- Находим х1 по формуле: xi= х0 ih
Где: h - шаг интегрирования x1 = 1 1 · 0,1 = 1,1;
- Делим шаг интегрирования на четыре отрезка и отмечаем x1/4= x0 h/4, проводим прямую из этой точки до прямой AB, отмечаем ТОЧКУВ(x1/4; y1/4);
Следовательно, точка C имеет координаты (1,1; 1,169): yi 1 = yi h • f(xi h/4, yi h/4 • f(x<i, yi))>
IMG_472191fe-0a7d-4889-8a16-a9093b8bc204
3. Алгоритм решения задачи
3.1 Алгоритмы подпрограмм
3.1.1 Подпрограмма метода Эйлера
IMG_334f6196-8365-443a-a6a4-06d9cd6830ff
3.1.2 Подпрограмма метода Рунге-Кутта 4-го порядка
IMG_2c1aa581-5558-4f46-9861-5cbf66b10d3e
3.1.3 Подпрограмма Общего решения
IMG_bf326a29-ab6c-4f42-a28f-2a0f228e507f
3.2 Алгоритм функции f
IMG_c77769fc-47c3-49de-91fe-f4f397f1d6cf
3.3 Алгоритм программы
IMG_211bcb10-7698-4286-98ce-29e045154f63
IMG_f1b6f5fc-8888-4160-b500-8072257191bd
4. Форма программы
В среде MSVISUALBASIC была разработана программа для решения дифференциального уравнения.
IMG_73034a9b-7093-4901-a7d9-eb64bebf67c5
5. Листинг программы
IMG_49041bb6-a89a-4427-8e83-71012e9bfcd5
IMG_765e2475-a9ab-4a2e-8681-6cc0b4631aa8
IMG_da47fa1b-8adc-4b9b-986f-59a9efeab76f
IMG_7ca171f1-a4ad-45bf-aa44-5f30bb8350fc
7. Решение в MATHCAD
В среде MATHCADБЫЛ разработан проект, производящий вычисление численных методов (Эйлера и Рунге-Кутта 4-го порядка) и общего решения.
IMG_c09f0265-3a0f-49b8-8c2e-48bbc49e0f26
IMG_7a219d2b-4040-4e81-9f65-1d2a6cbfd9aa
IMG_537bcc56-9abd-44df-839a-28b06924c9e0
Вывод
При расчете уравнения двумя методами (Эйлера и Рунге-Кутта 4-го порядка) получили значения сходные с общим решением, метод Рунге-Кутта 4-го порядка является более точным, так как шаг делится на 4 отрезка. При решении методом Эйлера присутствует большая погрешность, которая с каждым шагом увеличивается. дифференциальный подпрограмма mathcad
В курсовой работе были выполнены все поставленные задачи: написана программа для решения данного дифференциального уравнения двумя численными методами в программе VISUALBASIC, проверено решение с помощью приложения MATHCAD. Полученные разными методами результаты мы сравнили с общим решением. При сравнении были получены идентичные результаты, что свидетельствует о правильности решения.