Статья опубликована в рамках: XLIX Международной научно-практической конференции «Научное сообщество студентов XXI столетия. ТЕХНИЧЕСКИЕ НАУКИ» (Россия, г. Новосибирск, 30 января 2017 г.)
Наука: Информационные технологии
Скачать книгу(-и): Сборник статей конференции
отправлен участнику
ЧИСЛЕННОЕ РЕШЕНИЕ ДИФФЕРЕНЦИАЛЬНЫХ УРАВНЕНИЙ В ПРОГРАММНОЙ СРЕДЕ MICROSOFT VISUAL STUDIO
Для решения дифференциальных уравнений численными методами необходимо знать два параметра: начальное условие и заданный интервал. При наличии этих факторов решить дифференциальное уравнение не составляет особого труда. Однако существует множество методов решения дифференциальных уравнений, каждый из которых имеет как сильные, так и слабые стороны. Выбор оптимального метода решения варьируется в зависимости от результата, который необходимо получить (высокая точность, минимальное число итераций и т.д.).
К тому же, с учетом развития информационных технологий, решение дифференциального уравнения вручную выглядит длительным и не рациональным процессом при возможности написания программы, выполняющей решение поставленной задачи с минимальной затратой времени. При этом не исключается возможность того, чтобы пользователь самостоятельного мог ввести необходимые параметры, а также изменить дифференциальное уравнение для выполнения уже другой поставленной задачи.
Целью написания данной работы является решение заданного дифференциального уравнения в программной среде Microsoft Visual Studio следующими методами:
- метод Эйлера;
- уточненный метод Эйлера;
- метод прогноза и коррекции (Эйлера-Коши);
- метод Рунге-Кутта 4-го порядка.
Пример дифференциального уравнения, его начальное условие, заданный интервал и точное решение приведен в таблице 1.
Таблица 1
Пример дифференциального уравнения
Дифференциальное уравнение |
Начальное условие |
Интервал интегрирования |
Точное решение |
Для наглядного представления поставленной задачи в таблице 2 произведено раскрытие заданного интервала интегрирования.
Таблица 2
Точки заданного интервала
0 |
0 |
1,1 |
0,1155 |
1,2 |
0,264 |
1,3 |
0,4485 |
1,4 |
0,672 |
1,5 |
0,9375 |
1,6 |
1,248 |
1,7 |
1,6065 |
1,8 |
2,016 |
1,9 |
2.4795 |
2 |
3 |
Для метода Эйлера значения функции в заданных точках определяются по формуле (1):
(1) |
где – значение функции на начальном шаге; – значение функции на последующем шаге; - шаг функции; – результат подстановки точек в искомое дифференциальное уравнение.
В уточненном методе Эйлера производная берется не в начале, как в предыдущем методе, а в центре частичного интервала [1]. Поэтому значения функции для этого метода в заданных точках определяются по формуле (2):
(2) |
Для метода прогноза и коррекции значения функции в заданных точках определяется по формуле (3):
(3) |
Перед решением дифференциального уравнения методом Рунге-Кутта 4-го порядка необходимо найти значения коэффициентов , , и по следующим формулам:
(4) |
|
(5) |
|
(6) |
|
(7) |
Затем значения функции в заданных точках методом Рунге-Кутта 4-го порядка определяется по формуле (8):
(8) |
Алгоритм программы на языке C++, выполняющей решения заданного дифференциального уравнения при начальном условии и интервале интегрирования, выглядит следующим образом:
- Производится запись дифференциального уравнения в виде функции.
- Пользователь разбивает интервал на участки, тем самым задавая требуемый шаг.
- Заводятся массивы на значения входных и выходных данных (X и Y).
- Уточняются начальные условия и заданный интервал.
- Заводится цикл для решения дифференциального уравнения каждым методом.
- Заводится цикл для вывода полученных данных.
- Производится очистка памяти и удаление массивов после вывода полученных данных на экран.
Результат работы программы приведен на рисунке 1.
Рисунок 1. Результат работы программы без повышения точности
Как видно из полученных результатов, наилучшей точностью обладает методы Рунге-Кутты 4го порядка, а наихудшей точностью – метод Эйлера.
Для того, чтобы повысить точность, необходимо добавить дополнительное условие в программу, при котором меньше заданной погрешности. определяется по формуле (9):
(9) |
где - значение ординаты при заданном шаге; - значение ординаты при удвоенном шаге; – порядок уравнения.
Результат работы программы при заданной погрешности приведен на рисунке 2.
Рисунок 2. Результат работы программы c заданной точностью
Как видно из полученных результатов, повышение точности приводит к повышению количества итераций, и наилучший вариант соотношения точности и количества итерацией предоставляет метод Рунге-Кутта 4го порядка.
Список литературы:
- Численные методы и оптимизации: Учеб. пособие/В .Г. Рубанов, Д. В. Величко.- Белгород: Изд-во БГТУ им. В. Г. Шухова, 2004. – 161 с.
отправлен участнику
Комментарии (3)
Оставить комментарий