Схемы Рунге-Кутты
Изучение и анализ влияния величины шага на точность интегрирования методами Рунге–Кутты второго и четвертого порядков. Ознакомление с основными программными модулями. Исследование поведения ошибки интегрирования, как функции независимой переменной.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 09.12.2015 |
Размер файла | 682,2 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Содержание
Введение
1. Постановка задачи
1.1 Приведение уравнения ОДУ к нормальной форме Коши
1.2 Вывод формул метода Рунге - Кутты 2-го порядка
1.3 Методы Рунге-Кутты 4-го порядка
2. Описание программных модулей
2.1 Основная программа main
2.2 Функция touch
2.3 Функция right
2.4 Функция RK2
2.4 Функция RK4
3. Экспериментальное исследование методов Рунге-Кутты
3.1 Анализ влияния величины шага на точность интегрирования методами Рунге-Кутты второго и четвертого порядков
3.2 Проверка гипотезы Рунге
3.3 Исследование поведения ошибки интегрирования как функции независимой переменной для обоих методов Рунге-Кутты при различных значениях шага
3.4 Сравнительный анализ методов Рунге-Кутты при различных требованиях к точности вычислений
Заключение
Перечень ссылок
Приложения
Введение
Данная курсовая работа посвящена составлению и отладке программ для ЭВМ интегрирования обыкновенных дифференциальных уравнений и проведению с помощью этих программ экспериментальных исследований свойств методов Рунге-Кутты, наиболее часто встречающихся в практике моделирования и проектирования систем управления.
Цели и задачи работы:
a) Закрепить и углубить теоретические знания о проблематике интегрирования обыкновенных дифференциальных уравнений и, в частности, численного решения задачи Коши, методах Рунге-Кутты, их основных свойствах (устойчивости, точности, эффективности) и основных характеристиках этих свойств (порядке метода, локальной и глобальной алгоритмических ошибках, ошибке вычислений).
б) Приобрести навыки составления и отладки подпрограмм интегрирования на основе методов Рунге-Кутты и программ интегрирования систем дифференциальных уравнений с использованием подпрограмм.
в) Провести экспериментальные исследования на ЭВМ зависимости точности, эффективности и устойчивости алгоритмов интегрирования от величины шага интегрирования и порядка метода Рунге-Кутты.
В различных сферах технических и даже экономических отраслей приходится достаточно часто сталкиваться с математическими задачами, для которых не представляется возможным описать точное решение классическими методами или это решение выражено крайне неудобно читаемыми соотношениями. Разрабатываемые вычислительной математикой численные методы носят в основном ориентировочный характер, однако они позволяют получить итоговый числовой результат со сносной для практических нужд точностью. Численные методы представляют собой алгоритмы вычисления приближенных значений искомого решения на определенной сетке значений аргумента.
Численные методы не позволяют найти общее решение: полученное решение является частным. Но одним из многочисленных плюсов данных методов можно назвать высокую степень применимости к обширным классам уравнений и всем типам вопросов и заданий к ним. Поэтому с появлением электронных вычислительных машин численные методы стали одними из основных технологий решения определенных практических задач решения ОДУ.
Большую значимость имеет вопрос о верности вычислений на ЭВМ, поскольку при практической реализации имеет место обширный объем обрабатываемой, подсчитываемой информации и погрешности могут достаточно сильно исковеркать конечный результат, принимаемый нами за действительный. Кроме сказанного, оценка точности численного метода немаловажна и потому, что увеличить точность в некоторых пределах можно за счет увеличения объемов вычислений, а уменьшить временные затраты при решении задачи - за счет снижения точности получаемого результата.
Для понижения погрешности методов интегрирования ОДУ, использующего разложения искомого решения в ряд Тейлора, необходимо принимать во внимание большое количество членов ряда. При всем при этом появляется потребность аппроксимации производных правых частей ОДУ. Ключевая идея методов Рунге-Кутты заключается в том, что производные аппроксимируются через значения функции f(x,y) в точках на интервале (x0, x0+h), которые выбираются из условия наибольшей близости алгоритма к ряду Тейлора. В зависимости от старшей степени h, с коей учитываются члены ряда, построены всевозможные вычислительные схемы Рунге-Кутты разных порядков точности. рунге программный модуль
Схемы Рунге-Кутты имеют ряд важных достоинств:
1. Все они имеют высокую точность.
2. Они являются явными (одноступенчатыми): чтобы найти х(tk+1), нужна информация только о предыдущей точке х(tk) .
3. Они согласуются с рядом Тейлора вплоть до членов порядка hp, где степень p различна для различных методов и называется порядком метода.
4. Они не требуют вычисления производных от F(х, t), а требуют только вычисления самой функции.
1. Постановка задачи коши
1.1 Приведение ОДУ к нормальной форме Коши
Нормальной формой Коши принято называть общую форму записи ОДУ, то есть его представление в виде системы n дифференциальных уравнений первого порядка [1].
разрешённых относительно производных. К такому виду может быть приведено любое дифференциальное уравнение n-го порядка, допускающее возможность разрешения относительно старшей производной.
ДУ второго порядка имеет вид
1 (1.1)
точное решение:
(1.2)
Необходимо найти численное решение х(t) на интервале при заданных начальных условияx:
2 (1.3)
Для применения любого численного метода, ОДУ необходимо представить в форме Коши. Введем вспомогательные функции:
(1.4)
В итоге получаем систему ДУ второго порядка:
(1.5)
Подставляя (1.4) в (1.1) и (1.3) и проводя преобразования, получим систему ОДУ, разрешенных относительно производных, с начальными условиями
3 (1.6)
Значение полной ошибки интегрирования уравнения (1.1) вычисляется по формуле
, (1.7)
где - точное, - приближенное решения уравнения (1.1) в узле tk.
1.2 Bывод формулы метода Рунге-Кутты второго порядка
Методы Рунге-Кутты являются одношаговыми методами решения систем обыкновенных дифференциальных уравнений, представленными в нормальной форме Коши. При этом точное решение дифференциального уравнения описывается формулой:
(1.8)
В методах Рунге - Кутты интеграл заменяется линейной комбинацией значений подинтегральной функции, вычисленных при разных значениях аргумента
,
где m - порядок метода.
благодаря чему все методы Рунге - Кутты можно представить в следующем общем виде:
Из вышеуказанных общих формул получают формулы метода Рунге-Кутты 2-ого порядка (m=2):
(1.9)
Для определения метода необходимо определить значения коэффициентов: . Для этого интеграл, заменяемый линейной комбинацией значений подынтегральной функции, вычисленных при разных значениях аргумента, представим в виде частичной суммы ряда Тейлора
. (1.10)
Остаточный член есть ни что иное как локальная алгоритмическая ошибка
(1.11)
где сал - коэффициент пропорциональности, слабо зависящий от h.
Окончательно получим выражения производных в нуле:
,
Дифференцирование можно продолжать, однако очевидно что коэффициенты будут выражаться через форму Коши (1.6) в tk-1, и ее производной по х(t), и по t. Подставляя, полученные выше результаты в (1.8), получаем разностную схему численного интегрирования ОДУ:
(1.12)
Осталось определить значения коэффициентов формул (1.9). Для этого введем вспомогательную функцию: , выражение (1.12) примет вид:
где .
Коэффициенты должны удовлетворять условию:
, , (1.13)
где .
Для нахождения коэффициентов необходимо определить . Продифференцируем по h, учитывая, что S(h) - сложная функция:
Из условия (1.13) получаем:
(1.14)
Находим 2-ю производную
Из условия (1.13) получим второе и третье уравнения:
(1.15)
Объединив (1.14) и (1.15) получим СЛАУ
Полученная СЛАУ имеет бесконечное число решений. Нужное решение выбираем исходя из метода, указанного в варианте задания. В данной курсовой работе используется следующее решение:
1.3 Метод Рунге-Кутты четвертого порядка
Наибольшее распространение в инженерной практике получил метод Рунге-Кутты четвёртого порядка (m=4), описываемый следующими формулами:
(1.16)
Векторы Fi , i=1,2,3,4 - суть значения вектор- функции правых частей f(x(t),t), вычисленных при различных значениях аргумента. Зависимость каждого вектора Fi , от предыдущего обусловливает необходимость последовательного их вычисления в порядке нумерации.
Методы Рунге-Кутты второго порядка на каждом шаге требуют лишь двух вычислений правой части уравнения (1.6), т.е. в два раза меньше, чем метод (1.16). Однако допускаемая на каждом шаге локальная ошибка алгоритма (1.11), в отличие от h5 для m=4, пропорциональна величине h3 . Следовательно, для достижения одинаковой точности интегрирования, методы второго порядка требуют меньшего значения шага, а значит, большего числа шагов. Кроме того, эти методы накладывают более жёсткие ограничения на интервал допустимых значений шага интегрирования, при которых достигается устойчивость вычислительного алгоритма[3].
2. Описание программных модулей
В ходе работы была составлена программа на языке Pascal , вычисляющая точное и приближенные решения дифференциального уравнения (1.1) с начальными условиями (1.3), полученные двумя методами: Рунге-Кутты второго и четвёртого порядка.
Программа имеет четыре части:
1. Основная программа.
2. Процедура Right вычисления правых частей системы уравнений.
3. Процедура TochSolve вычисления точного решения.
4. Процедура RK_2 реализации одного шага интегрирования методом Рунге-Кутты второго порядка.
5. Процедура RK_4 реализации одного шага интегрирования методом Рунге-Кутты четвертого порядка.
2.1 Основная программа
Программа содержит в себе следующие переменные:
toch - переменная для хранения точного решения ДУ;
tf - величина, определяющая конец интервала интегрирования;
h - шаг интегрирования (вводиться пользователем с клавиатуры);
et - ошибка интегрирования при текущем узле;
Emax - оценка ошибок интегрирования на отрезке.
x - решение, полученное методом Рунге-Кутты второго или четвертого порядков. Типа vector, который определяется, как матрица-вектор вещественных чисел, размерностью (1x2), т.е. vektor = array[1..2]of real;
f - переменная файлового типа. Здесь text - имя стандартного типа текстового файла, т.е. f : text;
name - переменная типа string с максимальным количеством символов = 20,т. е. name: string[20];
str - шаг вывода результатов на экран;
n0 - счетчик печати;
n - порядок метода (вводится пользователем с клавиатуры);
t0, tf - пределы интегрирования, определённые вариантом задания;
tk - переменная интегрирования.
Ошибка интегрирования вычисляется по формуле
Оценка ошибки интегрирования вычисляется по формуле
Основная программа работает следующим образом:
Для проведения исследования процедура запрашивает имя файла для вывода результатов, порядок метода, величину шага интегрирования, а также с каким шагом будут выводиться результаты на каждом шаге интегрирования. Результаты выводятся в файл и на экран (точное решение, приближенное решение и ошибка, оценка ошибки интегрирования).
Схема программы приведена в приложении А.
Текст программы приведен в приложении Б.
2.2 Процедура вычисления правых частей системы уравнений Right
Заголовок процедуры вычисления правых частей системы дифференциальных уравнений имеет вид: procedure Right (t: real; var x, f1: vektor);
Назначение: процедура вычисляет правые части системы однородных дифференциальных уравнений в нормальной форме Коши по формуле (1.6)
Схема процедуры приведена в приложении А.
Программная реализация процедуры приведена в приложении Б.
2.3 Процедура реализации одного шага интегрирования методом Рунге-Кутты второго порядка RK 2
Заголовок процедуры имеет вид: Procedure RK_2 (t: real; var x: vektor);
Назначение: процедура RK_2 выполняет один шаг интегрирования системы обыкновенных дифференциальных уравнений методом Рунге-Кутты 2-ого порядка по формуле (1.8) и имеет следующие входные параметры:
t - значение независимой переменной;
h - шаг интегрирования;
x - вектор решения в точке tk-1;
Выходные параметры:
х - вектор решений в точке tk=tk-1+h.
Для вычисления значений правых частей процедура два раза обращается к процедуре Right. Первый раз вычисляется F1 по известному значению x(tk-1), хранящемуся в переменной х, а второй - F2 по значению вектора xr, которое перед этим вычисляется по формуле
Затем пересчитывается значение вектора решений в новой точке интегрирования.
Схема процедуры приведена в приложении А.
Текст процедуры приведён в приложении Б.
2.4 Процедура реализации одного шага интегрирования методом Рунге-Кутты четвертого порядка RK 4
Заголовок процедуры имеет вид: Procedure RK_4(tk: real; n: integer; ,h:real; var X:vector_n);
Назначение: процедура RK_4 выполняет один шаг интегрирования системы обыкновенных дифференциальных уравнений методом Рунге-Кутты 4-го порядка по формуле
, (2.1)
(2.2)
и имеет следующие формальные параметры:
t - значение независимой переменной;
h - шаг интегрирования;
x- вектор решения в точке tk-1;
Выходные параметры:
x- вектор решений в точке tk=tk-1+h.
Процедура четыре раза обращается к процедуре вычисления правых частей Right с разными параметрами для вычисления ,,,(2.2). Затем с помощью (2.1) пересчитывает значение . Увеличивает значение независимой переменной на шаг интегрирования h.
Схема процедуры приведена в приложении А.
Текст процедуры приведён в приложении Б.
2.5 Функция вычисления точного решения TochSolve
Заголовок функции имеет вид: function TochSolve(t: real):real;
Назначение: функция вычисляет точное решение для дифференциального уравнения по формуле
Текст функции приведён в приложении А.
Схема функции приведена в приложении Б.
3. Экспериментальное исследование свойств методов Рунге-Кутты
3.1 Анализ влияния величины шага на точность интегрирования методами Рунге-Кутты второго и четвёртого порядков
Оценка ошибки интегрирования на интервале определяется как
.
На рисунке 3.1 представлен график зависимости оценки ошибки от величины шага интегрирования, для методов Рунге - Кутты 2-го и 4-го порядков.
Рисунок 3.1 - График зависимости оценки ошибки от шага интегрирования для методов Рунге - Кутты 2-го и 4-го порядков
Из графика видно, что при уменьшении шага интегрирования, оценка ошибки интегрирования уменьшается для обоих методов. При дальнейшем уменьшении шага интегрирования, оценка ошибки возрастает, что объясняется увеличением вычислительной ошибки. При значениях шага меньше 10-6, оценки ошибок методов второго и четвертого порядков совпадают. Так же из графика видно, что для метода четвертого порядка минимальная оценка ошибки достигается при гораздо большем значением шага, чем для метода второго порядка.
3.2 Проверка гипотезы Рунге
Согласно гипотезе Рунге, глобальная ошибка алгоритма при интегрировании дифференциального уравнения с постоянным шагом пропорциональна величине шага в степени, равной порядку метода[2]. Для проверки гипотезы вычислим отношения величины оценки ошибки к величине шага интегрирования в степени, равной порядку метода.
На основании полученных данных построим графики зависимости коэффициента пропорциональности С от шага интегрирования h, для методов Рунге - Кутты 2-го и 4-го порядков. График зависимости коэффициента C от шага интегрирования h, приведены на рисунке 3.2.
Рисунок 3.2 - График зависимости коэффициента С от шага интегрирования h для методов Рунге - Кутты 2-го и 4-го порядков
Из графика видно, что гипотеза Рунге подтверждается только на интервале значений шага [2;10-3], на котором влияние вычислительной ошибки незначительно. При дальнейшем уменьшении шага, пропорциональность нарушается, это объясняется тем, что гипотеза Рунге не учитывает влияние вычислительной ошибки. Гипотеза Рунге также не подтверждается для значений шага больше единицы, так как для них нарушается устойчивость алгоритма, и увеличивается влияние знаменателя.
Так же можно наблюдать, что коэффициент пропорциональности для метода четвертого порядка на несколько порядков меньше, чем для метода второго порядка, что согласуется с теорией.
3.3 Исследование поведения ошибки интегрирования как функции независимой переменной для обоих методов Рунге-Кутты при различных значениях шага
Для экспериментальных исследований выберем три различных значения шага. И с помощью разработанной программы вычислим точные решения, решения полученные исследуемыми методами и ошибки интегрирования этих методов. На рисунках 3.3., 3.4, 3.5, 3.6 приведены графики ошибки интегрирования, как функции независимой переменной для обоих методов при различных значениях шага, графики точного значения функции и значений функции, найденных с помощью методов Рунге - Кутты 2 - го и 4 - го порядков.
Рисунок 3.3 - График зависимости ошибки интегрирования методами 2-го и 4-го порядка, как функции независимой переменной, для нескольких значений шага.
Рисунок 3.4 - Точное значение функции, значения функции найденные с помощью методов 2го и 4го порядка(h = 2).
Рисунок 3.5 - Точное значение функции, значения функции найденные с помощью методов 2го и 4го порядка(h = 1e-3).
Рисунок 3.6 - Точное значение функции, значения функции найденные с помощью методов 2го и 4го порядка(h = 1e-7).
Исходя из графиков, можно сделать следующие выводы:
Для значения шага h = 2, наблюдается лавинообразный рост ошибки, что объясняется тем, что при заданном значении шага нарушается устойчивость алгоритма как для метода второго, так и для метода четвёртого порядка. На рис.3.4 наблюдается заметное отклонение решения, полученного численно, от точного значения искомой функции. Но даже для этого значения шага, наблюдается значительная разница между ошибками для методов второго и четвёртого порядков.
Для значения шага h = 1e-3, можно заметить более плавный рост ошибки, особенно для метода четвертого порядка, это объясняется тем, что влияние алгоритмической ошибки уменьшается, а вычислительной - возрастает. Графики точного значения функции и приближенных значений, полученных численно, совпадают, что говорит о хорошей точности методов Рунге - Кутты второго и четвертого порядков.
Для значения шага h = 1e- 7 графики ошибок для методов второго и четвертого порядков совпадают. Это можно объяснить тем, что для данного значения шага алгоритмическая ошибка мала для обоих методов и основное влияние на локальную ошибку оказывает вычислительная погрешность. Графики точного значения функции и приближенных значений, полученных численно, совпадают, что говорит о хорошей точности методов Рунге - Кутты второго и четвертого порядков.
3.4 Сравнительный анализ методов Рунге - Кутты при различных требованиях к точности вычислений
При интегрировании уравнения (1.1) основное время занимает вычисление правой части. Поэтому в качестве оценки затрат машинного времени естественно принять количество вычислений правых частей уравнений (1.6) на всём отрезке интегрирования. Эту величину легко определить, умножив количество шагов интегрирования N на порядок метода m .
На рисунке 3.7 представлен график зависимости оценки ошибки интегрирования от количества вычислений правой части.
Рисунок 3.7 - График зависимости оценки ошибки интегрирования от количества вычислений правой части
Из графика видно, что на интервале шага [1;0.001] , где влияние вычислительной ошибки не велико, при одинаковых вычислительных затратах, метод Рунге - Кутты 4-го порядка, позволяет получить ошибку, значительно меньшую, чем метод 2-го порядка.
Так же из графика можно увидеть, что существует такое значение шага, после которого дальнейшее его уменьшение ведёт только к увеличению вычислительных затрат и росту оценки ошибки, программа тратит машинное время впустую.
Заключение
В ходе работы была составлена и отлажена программа для интегрирования обыкновенных дифференциальных уравнений и с помощью этой программы проведено ряд экспериментальных исследований свойств методов Рунге-Кутты второго и четвёртого порядка.
На определённом интервале значений шага интегрирования, с уменьшением шага ошибка интегрирования уменьшается (что согласуется с теорией), но на остальном интервале с уменьшением шага интегрирования ошибка увеличивается. Это связано с ростом числа вычислений и, следовательно, увеличением ошибки вычислений.
На интервале значений шага интегрирования, где влияние ошибки вычисления не велико, метод 4-го порядка даёт ошибку гораздо меньшую, чем метод 2-го порядка.
Гипотеза Рунге подтверждается только для таких значений шага, при которых влияние вычислительной ошибки незначительно. При дальнейшем уменьшении шага, пропорциональность нарушается, это объясняется тем, что гипотеза Рунге не учитывает влияние вычислительной ошибки. Коэффициент пропорциональности для метода четвертого порядка на несколько порядков меньше, чем для метода второго порядка, что согласуется с теорией.
Для значения шага h = 2, наблюдается лавинообразный рост ошибки, что объясняется тем, что при заданном значении шага нарушается устойчивость алгоритма как для метода второго, так и для метода четвёртого порядка. На рис.3.4 наблюдается заметное отклонение решения, полученного численно, от точного значения искомой функции. Но даже для этого значения шага, наблюдается значительная разница между ошибками для методов второго и четвёртого порядков.
Для значения шага h = 1e-3, можно заметить более плавный рост ошибки, особенно для метода четвертого порядка, это объясняется тем, что влияние алгоритмической ошибки уменьшается, а вычислительной - возрастает. Графики точного значения функции и приближенных значений, полученных численно, совпадают, что говорит о хорошей точности методов Рунге - Кутты второго и четвертого порядков.
Для значения шага h = 1e- 7 графики ошибок для методов второго и четвертого порядков совпадают. Это можно объяснить тем, что для данного значения шага алгоритмическая ошибка мала для обоих методов и основное влияние на локальную ошибку оказывает вычислительная погрешность. Графики точного значения функции и приближенных значений, полученных численно, совпадают, что говорит о хорошей точности методов Рунге - Кутты второго и четвертого порядков. На интервале шага, где влияние вычислительной ошибки не велико, при одинаковых вычислительных затратах, метод Рунге - Кутты 4-го порядка, позволяет получить ошибку, значительно меньшую, чем метод 2-го порядка.
Существует такое значение шага, после которого дальнейшее его уменьшение ведёт только к увеличению вычислительных затрат и росту оценки ошибки, программа тратит машинное время впустую.
Перечень ссылок
Боглаев Ю.П. Вычислительная математика и программирование / Ю.П.Боглаев. - М. Высшая школа, 1990. -544с.
Марчук Г.И. Методы вычислительной математики / Г.И.Марчук. -М.: Мир, 1989. -375с.
Бахвалов Н.С. Численные методы / Н.С.Бахвалов, Н.П.Жидков,Г.М. Кобельков. - М.: Наука, 1987. -487с.
Райс Дж. Матричные вычисления и математическое обеспечение / Дж.Райс. - М.: Мир, 1984. -563с.
Шуп Т. Решение инженерных задач на ЭВМ / Т.Шуп. - М.: Мир, 1982. -238с.
Приложения
Приложение А
Текст программы
program Kursach;
uses crt;
const
{Начальные условия задачи Коши}
t=1;
tf=30; 33333
x0=2;
x1=3.5;
type vektor = array[1..2] of real;
var
f:text;
name:string[20];
E, Emax,et:real;{ошибка в узле,её модуль,максимальная ошибка}
toch,tk,h:real;{точное решение,переменная интегрирования,шаг интегрирования}
x:vektor;
str,n0,n:integer;
{Процедура вычисления правой части}
procedure Right(t:real;var x, f1:vektor);
begin
f1[1]:=x[2]; 33333
f1[2]:=(-2.5*x[2])/t+x[1]/sqr(t);
end;
{Функция вычисления точного решения}
function TochSolve(t:real):real;
begin
TochSolve:=3*exp(0.5*ln(t))-1/sqr(t); точное решение
end;
{RK_2}
procedure RK_2P(t:real;h:real;var x:vektor);
var
xr, f1, f2:vektor;
i:integer;
begin
right(t,x,f1); {1 этап}
for i:=1 to 2 do
xr[i]:=x[i]+2*h/3*f1[i];
right(t,xr,f2); {2 этап}
for i:=1 to 2 do
x[i]:=x[i]+h/4*(f1[i]+3*f2[i]);
end;
{RK_4}
procedure RK_4P(t:real;h:real;var x:vektor);
var
xr,f1,f2,f3,f4:vektor;
h2,h6:real;
i:integer;
begin
h2:=0.5*h;
h6:=0.166666666666*h;
right(t,x,f1); {1 этап}
for i:=1 to 2 do
xr[i]:=x[i]+h2*f1[i];
right(t+h2,xr,f2); {2 этап}
for i:=1 to 2 do
xr[i]:=x[i]+h2*f2[i];
right(t+h2,xr,f3); {3 этап}
for i:=1 to 2 do
xr[i]:=x[i]+h*f3[i];
right(t+h,xr,f4);{4 этап}
for i:=1 to 2 do
x[i]:=x[i]+h6*(f1[i]+2*(f2[i]+f3[i])+f4[i]);
end;
{Вызывающая программма}
begin
clrscr;
write('Введите имя файла:');
readln(name);
assign(f,name);
rewrite(f);
writeln(f, 'Результаты вычислений:');
repeat
write('Введите порядок метода Рунге-Кутты (2 или 4) ->');
read(n);
until (n=2)or(n=4);
clrscr;
writeln ('========Метод Рунге-Кутты ',n,'-го порядка=========');
write('Введите шаг интегрирования: ');
readln(h);
write('Введите шаг вывода на экран и в файл: ');
readln(str);
writeln;
n0:=0;
x[1]:=x0;
x[2]:=x1;
tk:=t;
eMax:=0;
E:=0;
et:=0;
writeln(' tk Точное решение Выч-е решение Ошибка');
writeln(f,' tk Точное реш-е Выч-е реш-е Ошибка');
while tk<tf do
begin
if n=4 then RK_4P(tk,h,x) else RK_2P(tk,h,x);
toch:=TochSolve(tk);
et:=toch-x[1];
E:=abs(et);
if E>EMax then
EMax:=E;
if n0=str then
begin
writeln(tk:3:1,' ',toch:10:5,' ',x[1]:10:5,' ',et:5);
writeln(f,tk:3:1,' ',toch:10:5,' ',x[1]:10:5,' ',et:5);
n0:=0;
end;
if (tf-tk<h) then begin
h:=tf-tk;
tk:=tk+h;
end else
tk:=tk+h;
n0:=n0+1;
end;
if n=2 then RK_2P(tf,h,x) else RK_4P(tf,h,x);
toch:=TochSolve(tk);
et:=toch-x[1];
E:=abs(et);
if E>eMax then
eMax:=E;
writeln(tf:5,' ',toch:10:5,' ',x[1]:10:5,' ',et:5);
writeln(f,tf:5,' ',toch:10:5,' ',x[1]:10:5,' ',et:5);
writeln('Максимальная ошибка, max=',eMax);
writeln(f,'Максимальная ошибка, max=',eMax);
if n=2 then
begin
writeln('Оценка ошибки интегрирования, C=',eMax/sqr(h));
writeln(f,'Оценка ошибки интегрирования, C=',eMax/sqr(h));
end else
begin
writeln('Оценка ошибки интегрирования, C=',eMax/sqr(sqr(h)));
writeln(f,'Оценка ошибки интегрирования, C=',eMax/sqr(sqr(h)));
end;
close(f);
readkey;
end.
Приложение Б
Приложение В
Результаты работы программы
Метод 2-го порядка:
h=0.001
h=0.1
h=1
Метод 4-го порядка:
h=0.001
h=0.1
h=1
Размещено на Allbest.ru
...Подобные документы
Опытное исследование свойств методов Рунге-Кутты. Реализация численных методов приближенного интегрирования обыкновенных дифференциальных уравнений, наиболее часто применяющихся в практике моделирования и проектирования систем автоматизации и управления.
курсовая работа [311,5 K], добавлен 05.03.2009Решение системы обыкновенных дифференциальных уравнений в программе Matlab. Применение метода Рунге–Кутты. Априорный выбор шага интегрирования. Построение трехмерного графика движения точки в декартовой системе координат и создание видеофайла формата AVI.
контрольная работа [602,8 K], добавлен 04.05.2015Реализация решения обыкновенных дифференциальных уравнений 1-го и 2-го порядка методом Рунге-Кутты. Построение на ЭВМ системы отображения результатов в табличной форме и в виде графика. Архитектура и требования к разрабатываемым программным средствам.
курсовая работа [2,7 M], добавлен 05.11.2011Численное решение задачи Коши для обыкновенного дифференциального уравнения первого и второго порядка методом Эйлера и Рунге-Кутты и краевой задачи для ОДУ второго порядка с применением пакета MathCad, электронной таблицы Excel и программы Visual Basic.
курсовая работа [476,2 K], добавлен 14.02.2016Изучение численных методов решения нелинейных уравнений. Построение годографа АФЧХ, графиков АЧХ и ФЧХ с указанием частот. Практическое изучение численных методов интегрирования дифференциальных уравнений высокого порядка, метод Рунге-Кутта 5-го порядка.
курсовая работа [398,3 K], добавлен 16.06.2009Составление программы на алгоритмическом языке Turbo Pascal. Разработка блок-схемы алгоритма её решения. Составление исходной Pascal-программы и реализация вычислений по составленной программе. Применение методов Рунге-Кутта и Рунге-Кутта-Мерсона.
курсовая работа [385,0 K], добавлен 17.09.2009Аналитическое и численное исследование уравнения Дуффинга и его странных аттракторов. Регулярные и хаотические явления в вынужденном осцилляторе Дуффинга. Стробоскопическое исследование явления. Метод Рунге-Кутты решения дифференциальных уравнений.
дипломная работа [4,3 M], добавлен 29.06.2012Математическое описание задачи решения обыкновенного дифференциального уравнения численным явным методом Рунге-Кутта, разработка схемы алгоритма и написание программы в среде программирования Microsoft Visual Studio 2010. Тестирование работы программы.
курсовая работа [1,1 M], добавлен 22.01.2014Особенности метода численного интегрирования обыкновенных дифференциальных уравнений. Расчет переходного процесса в нелинейной электрической цепи, вызванного ее включением или отключением. Метод численного интегрирования Рунге-Кутта с переменным шагом.
отчет по практике [740,1 K], добавлен 10.10.2011Анализ преимуществ и недостатков различных численных методов решения дифференциальных уравнений высших порядков. Обоснование выбора метода Рунге-Кутта четвертого порядка. Разработка программы, моделирующей физическое и математическое поведение маятника.
курсовая работа [1,6 M], добавлен 11.07.2012Исследование внутренней сходимости численного интегрирования методами Симпсона и трапеций различных функций, задаваемых с помощью функций языка C. Результаты исследования, их анализ, описание применения. Условия и характеристики выполнения программы.
курсовая работа [385,2 K], добавлен 14.03.2011Реализация интегрирования функции методами прямоугольников, трапеций, Симпсона. Построение графика сравнения точности решения методов интегрирования в зависимости от количества разбиений. Алгоритм расчета энтропии файлов с заданным расширением.
контрольная работа [1011,0 K], добавлен 04.05.2015Методи чисельного розв'язання рівнянь. Рух тіла у в’язкому середовищі. В'язкість (внутрішнє тертя) і в'язкопружність. Метод Рунге-Кутти четвертого порядку. Функції та макроси вводу та виводу даних у стилі мови програмування Сі. Параметри фізичної моделі.
курсовая работа [947,5 K], добавлен 23.08.2014Розгляд та аналіз основних способів розв’язання звичайних диференціальних рівнянь за методом Рунге-Кутта з автоматичним вибором кроку. Способи оцінки погрішності і збіжності методу Рунге-кутти четвертого порядку з автоматичним вибором довжини кроку.
контрольная работа [31,0 K], добавлен 18.01.2013Математическое моделирование. Изучение приёмов численного и символьного интегрирования на базе математического пакета прикладных программ, а также реализация математической модели, основанной на методе интегрирования. Интегрирование функций MATLAB.
курсовая работа [889,3 K], добавлен 27.09.2008Решение задачи Коши для дифференциального уравнения методом Рунге-Кутта и Адамса с автоматическим выбором шага и заданным шагом. Интерполирование табличной функции. Численное решение системы линейных алгебраических уравнений методами простой итерации.
методичка [35,8 K], добавлен 15.03.2009Метод численного интегрирования. Использование метода половинного деления для решения нелинейного уравнения. Определение отрезка неопределенности для метода половинного деления. Получение формулы Симпсона. Уменьшение шага интегрирования и погрешности.
курсовая работа [3,0 M], добавлен 21.05.2013Рассмотрение методов приближенного численного анализа. Формулы интегрирования, прямоугольников, трапеций, формула Симпсона. Оценка погрешностей интегрирования. Вычисление интеграла по формуле трапеций с тремя десятичными знаками и по формуле Симпсона.
курсовая работа [995,7 K], добавлен 09.07.2012Обыкновенное дифференциальное уравнение первого порядка. Задача Коши, суть метода Рунге-Кутта. Выбор среды разработки. Программная реализация метода Рунге-Кутта 4-го порядка. Определение порядка точности метода. Применение языка программирования C++.
курсовая работа [163,4 K], добавлен 16.05.2016Постановка задачи численного интегрирования. Классификация методов интегрирования: методы Ньютона-Котеса; методы статистических испытаний; сплайновые методы; методы наивысшей алгебраической точности. Метод Симпсона: суть; преимущества и недостатки.
реферат [165,3 K], добавлен 01.03.2011