А его, в свою очередь, можно представить рядом Тейлора:
(11)где
- сумма элементов ряда Тейлора, степень которых не ниже 3.Осталось найти неизвестные значения
(12)В результате таких бесхитростных манипуляций получаем искомый ряд Тейлора:
(13)Приравняем коэффициенты при одинаковых степенях
в выражениях(11) и (13). В итоге получим систему уравнений вида:
(14)Из свойств системы (14) следует отметить, что она не обладает единственным решением. При
значение , значение , а (15)Подставив полученные коэффициенты в соотношение (8), получаем следующие формулы метода Рунге-Кутты 2-ого порядка:
(16)Составленная в ходе курсовой работы программа вычисляет решения дифференциального уравнения, с предварительно заданными начальными условиями. Интегрирование происходит согласно двум методам: Рунге-Кутты второго и четвертого порядков.
Программа состоит из следующих модулей:
1) Основная программа;
2) Процедура вычисления точного решения ДУ;
3) Процедура вычисления правых частей;
4) Процедура выполняющая шаг интегрирования методом Рунге-Кутты 2-ого порядка;
5) Процедура выполняющая шаг интегрирования методом Рунге-Кутты 4-ого порядка.
2.1 Основная программа
Блок программы осуществляет следующие операции:
· запрашивает у нерадивого пользователя величину шага интегрирования и шаг вывода на экран;
· вычисляет количество шагов;
· с заданным шагом вызывает процедуры интегрирования методом Рунге-Кутты 2-ого и 4-ого порядков на отрезке интегрирования;
· вычисляет погрешность и оценку погрешности интегрирования;
· выводит замечательные результаты работы программы с заданным шагом вывода на экран.
Для простоты понимания укажем следующие переменные, содержащиеся в программе:
· h - шаг интегрирования. Вводится нерадивым пользователем с клавиатуры;
· n – число шагов интегрирования;
· h_screen - шаг вывода результатов на экран. Вводится нерадивым пользователем с клавиатуры;
· i_screen – счётчик вывода результатов на экран. Когда i_screen > h_screen, то происходит вывод результатов и обнуление i_screen;
· i, j – переменные, используемые циклом;
· e2, e4– ошибки интегрирования для методов Рунге-Кутты 2-ого и 4-ого порядков соответственно. Подсчитываются из соотношения(1):
(1)· e2max, e4max – оценки погрешностей интегрирования для методов Рунге-Кутты 2-ого и 4-ого порядков соответственно. Подсчитываются из соотношения(2):
(2)· t – значения независимой переменной;
· t0, tf – пределы интегрирования
· y2, y4 – вектора решения для методов Рунге-Кутты 2-ого и 4-ого порядка соответственно в узле tk;
· outfile– переменная файлового типа. Определена для вывода результатов в текстовой файл;
· name – переменная строкового типа. Используется для передачи имени файла.
Текст основной программы приведён в приложении А, схема в приложении Б.
2.2 Функция вычисления точного решения
function clearsolve (t: real): real
Функция предназначена для вычисления точного решения для дифференциального уравнения по формуле (3):
(3)Текст функции приведен в приложении 2, схема в приложение 7.
2.3 Процедура вычисления правых частей системы уравнений в нормальной форме Коши
procedure right(t: real; var x,f: vector_n);
Процедура вычисляет правые части системы однородных дифференциальных уравнений в нормальной форме Коши по формуле (4):
(4)Текст процедуры приведен в приложении А, а схема в приложение Б.
2.4 Процедура RK2
procedure RK2(t: real; h: real; var x: vector_n);
Укажем формальные параметры:
t – независимая переменная ;
h– шаг интегрирования;
x – массив решений. При входе в процедуру решение в текущем узле интегрирования, при выходе в следующем.
Процедура RK2 выполняет шаг интегрирования системы ОДУ методом Рунге-Кутты 2-ого порядка из соотношения (5):
(5)где
(6)Процедура обращается к процедуре вычисления правых частей right с различными параметрами для вычисления
и (6). Затем с Божьей помощью (5) считает значение .Текст процедуры приведен в приложении А, схема в приложение Б.
2.5 Процедура RK4
procedure RK4(t: real; h: real; var x_4: vector_n);
Формальные параметры:
t – независимая переменная ;
h– шаг интегрирования;
x – массив решений. При входе в процедуру решение в текущем узле интегрирования, при выходе в следующем.
Процедура RK4 выполняет шаг интегрирования системы обыкновенных дифференциальных уравнений (1.1.2) методом Рунге-Кутты 4-ого порядка (7).
(7)где
(8)Процедура четыре раза обращается к процедуре вычисления правых частей right с разными параметрами для вычисления
, , , (8). Затем с Божьей помощью (7) считает значение .Текст процедуры приведен в приложении А, схема в приложение Б.
3 ЭКСПЕРИМЕНТАЛЬНОЕ ИССЛЕДОВАНИЕ МЕТОДОВ РУНГЕ-КУТТЫ
3.1 Анализ влияния величины шага на точность интегрирования методами Рунге-Кутты второго и четвертого порядков
Рисунок 1 – Зависимость оценки e2 от шага интегрирования
Рисунок 2 – Зависимость оценки e4 от шага интегрирования
На рисунках изображены зависимости оценки погрешности интегрирования от величины шага интегрирования для обоих методов. Из него видно, что практические результаты соответствуют теоретическим положениям, но не совсем.
При шаге от 0.1 до 1 бесспорно влияние погрешности интегрирования как в методе второго, так и в методе четвертого порядков. Ошибка на данном интервале начинает лавинообразно возрастать, что связано с нарушением устойчивости алгоритма.
С дальнейшим уменьшением шага до 0.1 – 0.001 величина погрешности уменьшается за компанию, и наблюдается достаточно большая точность вычислений.
Дальнейшее уменьшение шага (менее 0.001) вызывает увеличение полной ошибки, а также скверное её поведение. Это связано с возрастанием влияния ошибки вычислений из-за увеличения количества вычислений, необходимых для получения решения. На фоне уменьшения алгоритмической погрешности решающую роль играет погрешность вычислений, которая представляет собой сумму всех ошибок округления при реализации данного метода на конкретной ПЭВМ.
Из двух методов 2-го и 4-го порядков при одинаковых значениях шага точнее метод четвертого порядка, но при уменьшении шага, точность методов постепенно выравнивается.
3.2 Проверка гипотезы Рунге
Рисунок 3 – Зависимость отношения оценки погрешности к величине шага интегрирования в степени, равной порядку метода от шага интегрирования
Гипотеза Рунге экспериментально подтверждается только при таких значениях шага (1-0.01), где погрешность вычисления ПЭВМ влияет на результат в благоразумных пределах. При дальнейшем уменьшении шага пропорциональность скрывается из виду. Это можно истолковать тем, что предположение Рунге не учитывает влияния ошибки вычисления ПЭВМ на полученный результат.