Решение систем обыкновенных дифференциальных уравнений методами Рунге-Кутты

Программа интегрирования имеет пять основных частей: Главная вызывающая программа; Процедура вычисления правых частей; Процедура одного шага интегрирования методом РунгеКутты второго порядка RК_2; Процедура одного шага интегрирования методом РунгеКутты четвертого порядка RК_4; Функция вычисления точного решения TochSolve. Текст программы приведен в приложение Б Программа содержит в себе следующие переменные: tochпеременная для хранения точного решения ДУ; tfвеличина определяющая конец интервала интегрирования; h текущее...

2014-06-16

520.86 KB

113 чел.


Поделитесь работой в социальных сетях

Если эта работа Вам не подошла внизу страницы есть список похожих работ. Так же Вы можете воспользоваться кнопкой поиск



Решение систем обыкновенных дифференциальных уравнений методами Рунге-Кутты на http://refleader.ru/

12

Министерство Образования и Науки Украины

Севастопольский национальный технический университет

Кафедра технической кибернетики

Курсовая работа

по дисциплине

“Вычислительные методы ”

 

                                                                                  

                                                                                  Выполнила студентка гр. А-23д

Серехан Е.Э.                                                                                                                                

№ уравнения 17 № метода 2

                                               Проверил: Захаров  Виктор Вячеславович

Дата защиты_________ Оценка        ______

Севастополь

2006


Севастопольский национальный технический университет

Кафедра   Технической кибернетики  

Дисциплина Вычислительные методы

Специальность Компьютеризированные системы, автоматика и управление

Курс   II    Группа    А-23д       Семестр      IV    

ЗАДАНИЕ

на курсовую работу студента

                                                       Серехан  Елена Эдуардовна   

(фамилия, имя, отчество)

  1.  Решение систем обыкновенных дифференциальных уравнений методами Рунге-Кутты
  2.  Срок сдачи студентом законченной работы 05.06.2006г.  
  3.  Исходные данные к работе  уравнение: ;  его точное решение         отрезок интегрирования to=0 tf=6; начальные условия yo=1; y`o=2;  № метода – 2;  
  4.  Содержание расчетно-пояснительной записки (перечень подлежащих разработке вопросов):

Введение

1  Постановка задачи

2 Описание программных модулей

3  Экспериментальные исследования методов Рунге-Кутты

Заключение

Перечень ссылок

Приложение А  Схемы программных модулей

Приложение Б  Текст программы

Приложение В  Таблицы результатов вычислений на ЭВМ

            

  1.  Дата выдачи задания 8.02.2006г.  


СОДЕРЖАНИЕ

[0.0.0.1] ЗАДАНИЕ

[1]
СОДЕРЖАНИЕ

[2] ВВЕДЕНИЕ

[3] 1  МАТЕМАТИЧЕСКОЕ ОПИСАНИЕ ЗАДАЧИ

[3.1] 1.1 Типы задач для обыкновенных дифференциальных уравнений.

[3.2] 1.2 Постановка задачи Коши.

[3.3] 1.3 Преобразование уравнения к нормальной форме Коши

[3.4] 1.4 Методы Рунге-Кутты интегрирования систем обыкновенных дифференциальных уравнений. Метод Рунге-Кутты 4-го порядка.

[3.5] 1.5 Вывод формулы Рунге-Кутты второго  порядка.

[3.6] 1.6 Свойства исследуемых методов.

[4]
2 ОПИСАНИЕ ПРОГРАММНЫХ МОДУЛЕЙ

[4.1] 2.1 Основная программа.

[4.2] 2.2 Процедура вычисления правых частей.

[4.3] 2.3 Процедура RK_2.

[4.4] 2.4 Процедура RK_4

[5] 3 Экспериментальные исследования методов Рунге-Кутты.

[5.1] 3.1 Анализ влияния величины шага на точность интегрирования методами Рунге-Кутты второго и четвертого порядка.

[5.2] 3.2 Проверка гипотезы Рунге.

[5.3] 3.3  Исследование поведения ошибки интегрирования как функции независимой переменной для обоих методов Рунге-Кутты при различных значениях шага.

[5.4] 3.4 Сравнительный анализ эффективности методов Рунге-Кутты при различных требованиях к точности вычислений.

[6]
ПЕРЕЧЕНЬ ССЫЛОК

[7]
ЗАКЛЮЧЕНИЕ

[8]
ПРИЛОЖЕНИЕ А

[8.0.0.1] ПРИЛОЖЕНИЕ Б

[8.0.0.2] Текст программы

[9] ПРИЛОЖЕНИЕ В

[10]
ПРИЛОЖЕНИЕ В


ВВЕДЕНИЕ

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

В процессе выполнения работы необходимо:

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

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

Провести экспериментальные исследования на ЭВМ зависимости точности, эффективности и устойчивости алгоритмов интегрирования от величины шага интегрирования и порядка метода Рунге-Кутты.

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

В качестве исходных данных берется дифференциальное уравнение второго порядка:

его точное решение:

отрезок интегрирования:

а также начальные условия:

В разных областях техники и экономики приходится сталкиваться с математическими задачами, для которых невозможно описать точное решение классическими методами или решение может быть выражено огромными формулами, которые неприемлемы для практического использования. Разрабатываемые вычислительной математикой численные методы носят в основном приближенный характер, позволяя, тем не менее, получить окончательный числовой результат с приемлемой для практических целей точностью. Численные методы - это алгоритмы вычисления приближенных значений искомого решения на некоторой выбранной  сетке значений аргумента. Решение при этом получается в виде таблицы. Численные методы не позволяют найти общее решение; они могут дать только частное. Зато эти методы применимы к очень широким классам уравнений и всем типам задач для них. Поэтому с появлением ЭВМ численные методы решения стали одним из основных способов решения конкретных практических задач. Вопрос о точности вычислений на ПЭВМ имеет большое значение, так как объем вычислений для получения результатов приближенными методами велик и погрешности могут существенно их исказить. Кроме того, оценка точности численного метода важна и потому, что в некоторых пределах увеличить точность можно за счет увеличения количества вычислений, а уменьшить временные затраты при решении задачи за счет снижения точности получаемого решения.

1  МАТЕМАТИЧЕСКОЕ ОПИСАНИЕ ЗАДАЧИ

1.1 Типы задач для обыкновенных дифференциальных уравнений.

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

В дифференциальное уравнение n-го порядка в качестве неизвестных величин входят функция y(x) и ее первые n производных по аргументу х.

(1.1)

Из теории ОДУ известно, что уравнение (1.1) эквивалентно системе n уравнений первого порядка

(1.2)

где k=1,...n.

Уравнение (1.1) и эквивалентная ему система (1.2) имеют бесконечное множество решений. Единственные решения выделяют с помощью дополнительных условий, которым должны удовлетворять искомые решения. В зависимости от вида таких условий рассматривают три типа задач, для которых доказано существование и единственность решений.

Первый тип – это задачи Коши, или задачи с начальными условиями. Для таких задач кроме исходного уравнения (1.1) в некоторой точке xо должны быть заданы начальные условия, т.е. значения функции  y(х) и ее производных.

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

Третий тип задач для ОДУ – это задачи на собственные значения. Такие задачи отличаются тем, что кроме искомой функции у(х)  и их производных в уравнения входят дополнительно m неизвестных параметров, которые называются собственными значениями. В качестве примера можно назвать задачи определения собственных частот, структуры электромагнитных полей и механических напряжений в колебательных системах.

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

1.2 Постановка задачи Коши.

Общей формой записи обыкновенных дифференциальных уравнений, называемой нормальной формой Коши, является представление в виде системы n дифференциальных уравнений первого порядка, разрешённых относительно производных.

(1.3)

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

Задачей Коши интегрирования уравнения (1.3) называется задача определения функций xi(t), i=l,2,...,n     на заданном отрезке изменения независимой переменной t (отрезке интегрирования)

(1.4)

Удовлетворяющих заданным начальным условиям и являющихся решениями системы (1.3).

(1.5)

Во многих практических задачах требуется найти только одну из n функций, например Xi(t) . Но и в этом случае, поскольку первое уравнение системы (1.3) зависит от решений других уравнений системы, приходится решать, совместно все n уравнений. Для  теоретических  исследований  и  программирования более удобной формой описания задачи Коши является следующая векторная форма записи системы (1.3),(1 .4),(1.5):

(1.6)

(1.7)

Здесь и далее x(t), x(t0) и f(x(t),t) есть n-мерные векторы решений х(t) , начальных значений решений xi(to) и правых частей fi соответственно уравнений системы (1.3),(1 .4),(1.5).

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

1.3 Преобразование уравнения к нормальной форме Коши

В данной работе методы Рунге-Кутты применяются к интегрированию обыкновенных дифференциальных уравнений второго порядка вида:

Требуется найти на отрезке  решение x(t) уравнения с заданными в t0 начальными условиями:

(1.9)

В конкретном случае дифференциальное уравнение имеет следующий вид:

Необходимо найти решение на интервале 0<t<6 с заданными начальными условиями:

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

(1.12)

Подставим  (1.12) в (1.10) и в (1.11), проведем преобразования и получим систему из двух дифференциальных уравнений в нормальной форме Коши:

Кроме того, необходимо вычислить значение ошибки интегрирования по формуле:

Где x(tk)- определенное по формуле точное решение

       x0(t0)  – приближенное решение, полученное по результатам интегрирования уравнения методом Рунге-Кутты.

Формула точного решения для данного дифференциального уравнения:

Формула (1.15) может быть применена в любом узле интегрирования, поскольку в каждом узле определяется точное решение. Значение узлов при постоянном шаге интегрирования h определяются  по формуле:

Заметим, что при интегрировании с постоянным шагом формула (1.16) даст точное значение заданной правой границы отрезка tn=tk лишь при правильном выборе величины шага h.

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

Формула (1.17) приближенно оценивает норму разности между точным и приближенным решением уравнения (1.8) , определенную как максимум абсолютной величины разности функций на отрезке интегрирования.

1.4 Методы Рунге-Кутты интегрирования систем обыкновенных дифференциальных уравнений. Метод Рунге-Кутты 4-го порядка.

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

где х – вектор решений;

      f -  вектор функций – правых частей уравнений.

Для системы (1.13), вектор решений состоит из двух переменных, а вектор правых частей – из двух функций этих переменных и независимой переменной t, стоящих в правых частях уравнений. Если известно решение в некотором узле интегрирования tk-1, то, применив, формулы Рунге-Кутты, можно выполнить один шаг интегрирования и вычислить приближенное решение в следующем узле tk=tk-1+h. Для выполнения шага потребуется несколько раз вычислить правые части уравнения (1.18) при различных значениях аргументов. Количество вычислений правых частей на шаге определяется порядком метода. Процедура шага интегрирования повторяется рекуррентно до тех пор, пока значение независимой переменной не достигнет правого конца отрезка интегрирования.

В приложении Б приведена программа реализующая метод Рунге-Кутты второго и четвертого порядка.

Метод Рунге-Кутты четвертого описывается следующими формулами:

где

Для вычисления правых частей по формуле (1.20) подпрограмма четыре раза обращается к специальной подпрограмме вычислений правых частей, которая составляется заново для каждого конкретного вида уравнения (1.18). Перед каждым таким обращением вычисляются аргументы правых частей для очередной формулы (1.20), а после этого добавляется очередное слагаемое в формулу (1.19). После последнего (четвертого) обращения с помощью формулы (1.20) пересчитывается значение вектора решений в новом узле интегрирования. Если решение в предыдущем узле известно точно, то формулы (1.19) и (1.20) позволяют получить приближенное решение в следующем узле, допустив при этом локальную ошибку алгоритма.:

Она является величиной (m+1)-го порядка малости относительно шага интегрирования. В первом  приближении  можно считать , что коэффициент в (1.21) не зависит от величины шага интегрирования. Формула  (1.21) позволяет оценить точность  выполнения  шага интегрирования, применяя правило Рунге для определения значения коэффициента.

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

 

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

1.5 Вывод формулы Рунге-Кутты второго  порядка.

При решении задачи Коши вместо поиска вектора решений x(t) на отрезке интегрирования ограничиваются определением значений вектора при N значениях независимой переменной. Чаще всего шаг интегрирования выбирается постоянным. При выводе формулы Рунге-Кутта второго порядка будем считать дифференциальное уравнение в форме Коши скалярным. Его точное решение описывается формулой

Обозначим

Представим в виде ряда Тейлора φ(h)

      (1.24)

где  содержит сумму членов ряда по , со степенями не менее m+1.

Определим коэффициенты в ряде:

(1.25)

Можно продолжать и получать коэффициенты для ряда Тейлора, но ясно, что f(i) (0) зависит от X(tk-1) и tk-1 и выражается через частные производные от f. 

Для метода Рунге-Кутты второго порядка 

(1.26)

 

Или:

(1.27)

Чтобы определить метод достаточно найти значения 1, 2,  , и . Для метода второго порядка ряды Тейлора для точного решения  и для   должны совпадать до члена   включительно,  т. е.

(1.28)

Ряды будут совпадать, если выполняется

(1.29)

Найдем разложение в ряд Тейлора приближенного решения, определяемого методом Рунге-Кутты (m = 2 ).

Введем новую переменную .

Для нахождения коэффициентов необходимо вычислить Продифференцируем S по h, учитывая, что S – сложная функция

(1.30)

(1.31)

Находим вторую производную

(1.32)

Производную от S находим, воспользовавшись правилом дифференцирования сложных функций.

(1.33)

(1.34)

Используя соотношение ( 1.30), получаем:

 

(1.35)

           Решение определяет метод, исследуемый в данной курсовой работе.  

Для него                                     

1=1/2

2=1/2

(1.36)

=1

=1

1.6 Свойства исследуемых методов.

Так как при численном решении задачи Коши интеграл  заменяется приближенной формулой, то метод Рунге-Кутты  позволяет приближённо определить значения Xа(tk). При этом на каждом шаге возникает ошибка, называемая ошибкой алгоритма:

(1.37)

                                                                                                  

Если в предыдущих узлах известно решение точно, то по формуле (1.37) определяется локальная ошибка алгоритма (или ошибка алгоритма на одном шаге). Величина локальной ошибки пропорциональна hm+1, где m – порядок метода.

При численном решении задачи Коши ошибка (1.37) не является локальной, так как в предыдущих узлах решения определены приближённо, и не является суммой локальных ошибок на предыдущих шагах. Зависимость глобальной ошибки от локальных ошибок определяет устойчивость алгоритма. При неустойчивом алгоритме глобальная ошибка алгоритма быстро растёт, даже если локальные ошибки малы. При устойчивом алгоритме величина глобальной ошибки оказывается пропорциональной величине шага в степени равной порядку метода:

(1.38)

Величина коэффициента C в (1.38) зависит от вида уравнения и от длины интервала интегрирования.

На практике для характеристики точности численного метода вводят скалярную оценку ошибки алгоритма:

(1.39)

При численном решении производится N шагов (вычисление значений в N узлах). В этом случае оценку ошибки интегрирования на отрезке (t0 , tf) определяют как:

(1.40)

 

При решении задачи на ЭВМ дополнительно возникает ошибка, связанная с особенностями представления вещественных чисел в памяти ЭВМ и округления результатов при вычислениях. Поэтому метод Рунге-Кутты позволяет находить приближённое решение:

(1.41)

Поэтому полную ошибку (учитывает алгоритмическую ошибку и ошибку вычислений) можно представить как сумму ошибки алгоритма и ошибки вычислений:

(1.43)

 


2 ОПИСАНИЕ ПРОГРАММНЫХ МОДУЛЕЙ

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

Программа интегрирования имеет пять  основных частей:

  1.  Главная (вызывающая) программа;
  2.  Процедура вычисления правых частей;
  3.  Процедура одного шага интегрирования методом Рунге-Кутты второго порядка _2;
  4.  Процедура одного шага интегрирования методом Рунге-Кутты четвертого порядка RК_4;
  5.  Функция вычисления точного решения TochSolve.

2.1 Основная программа.

Текст программы приведен в приложение Б

Программа содержит в себе следующие переменные:

toch-переменная для хранения точного решения ДУ;

tf-величина, определяющая конец интервала интегрирования;

h- текущее значение шага интегрирования;

et- ошибка интегрирования при текущем узле;

Max- оценка ошибок интегрирования на отрезке.

X – решение , полученное методом Рунге-Кутты второго или четвертого порядков. Типа vect_n, который определяется, как матрица-вектор вещественных чисел, размерностью (1x2),т.е.

Vect_n=array[1..2] of real;

pr- шаг печати;

n0- счетчик печати;

resultat- файл для вывода результатов.

Основная программа работает следующим образом:

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

2.2 Процедура вычисления правых частей.

Procedure Right (var t:real; y,f:vect_n);

Процедура выполняет вычисление правых частей, в соответствии с нормальной формой Коши.

t- значение независимой переменной;

2.3 Процедура RK_2.

Procedure RK_2 (tk: real; n: integer; h: real; x: vect_n);

Входные параметры:

tк- значение независимой переменной;

n-число уравнений в нормальной форме Коши;

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

x- вектор решения в точке tk-1;

Выходные параметры:

x- вектор решений в точке tk=tk-1+h.

Процедура RK_2 производит вычисление одного шага интегрирования методом Рунге-Кутты второго порядка. Метод представляется формулами (1.24).

Для вычисления значений правых частей процедура два раза обращается к процедуре Right. Первый раз вычисляется F1 по известному значению x(tk-1), хранящемуся в переменной х, а второй- F2 по значению вектора xr, которое перед этим вычисляется по формуле:

Затем пересчитывается значение вектора решений в новой точке интегрирования.

2.4 Процедура RK_4

Procedure RK_4(tk: real; n: integer; ,h:real; var X:vector_n);

tk – значение независимой переменной;

n- число уравнений в нормальной форме Коши;

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

x- вектор решения в точке tk-1;

Выходные параметры:

x- вектор решений в точке tk=tk-1+h.

Процедура RK_4 производит вычисление одного шага интегрирования методом Рунге-Кутты четвертого порядка. Метод представляется формулами (1.20) и (1.21).

Для вычисления значений правых частей процедура четыре раза обращается к процедуре Right. После четвертого обращения пересчитывается значение вектора решений в новой точке интегрирования по формуле (1.20).


3 Экспериментальные исследования методов Рунге-Кутты.

3.1 Анализ влияния величины шага на точность интегрирования методами Рунге-Кутты второго и четвертого порядка.

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

На рисунке 3.1 графически  изображена зависимость оценки ошибки интегрирования от величины шага интегрирования для обоих методов. При сравнительно больших значениях шага (от 0.01 до 0.5) очевидно влияние ошибок алгоритмов интегрирования, как в методе второго порядка, так и в методе четвертого порядка.

С дальнейшим уменьшением шага  величина ошибок алгоритмов уменьшается. Также мы наблюдаем и то, что оба метода дают одинаковые результаты, причем при очень малых шагах ошибка не увеличивается, хотя, бесспорно то, что количество вычислений, необходимых для получения решения велико. Можно сделать вывод, что для нашего конкретного случая одинаково хорошо подходят оба метода Рунге-Кутты.  

Рисунок 3.1 – Графики зависимости оценки ошибки от величины шага для двух методов.

 

3.2 Проверка гипотезы Рунге.

Согласно гипотезе Рунге полная  ошибка алгоритма пропорциональна величине шага интегрирования в степени,  равной  порядку метода:

Выражая С из формулы и использую зависимость погрешности интегрирования от шага h, получаем графики зависимости коэффициента Рунге как функцию аргумента

Графики представлены на рисунке 3.2. Из графиков  видно, что коэффициент С  имеет  постоянное   значение только на определенном интервале значений шага интегрирования. Это связано с тем, что в гипотезе Рунге  учитывается только ошибка алгоритма и не учитывается ошибка вычислений, роль которой сильно возрастает при уменьшении шага интегрирования. Увеличение коэффициента С на рисунке 3.2 соответствует этому факту.

Рисунок 3.2 – Графики зависимости коэффициента С от hm для двух методов. 

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

Для исследования поведения ошибки интегрирования как функции независимой переменной для обоих методов Рунге-Кутты при различных значениях шага с помощью составленной программы вычислялись точное  и приближенное решение, а также величины ошибок интегрирования. Для каждого метода вычисления проводились при следующих значениях шага: h1=0.01, h2=0.001, h3=0.00001. Результаты представлены на  рисунках 3.3-3.7.

Из графиков   видно, что точность численного решения ДУ увеличивается при уменьшении шага интегрирования, так как в этом случае уменьшается ошибка алгоритма. Также видно, что оба метода при одинаковых шагах дают одинаковые ошибки.

Рисунок 3.3 – Графики точного и приближенного решения ДУ для h=0.01

Рисунок 3.4 –  Графики точного и приближенного решения ДУ для h=0.01 (увеличенный)

Рисунок 3.5 –  Графики точного и приближенного решения ДУ для h=0.00001.

Рисунок 3.6 –  Графики зависимости ошибки интегрирования от величины независимой переменной для метода Рунге-Кутты 2-го порядка.

Рисунок 3.7 –  Графики зависимости ошибки интегрирования от величины независимой переменной для метода Рунге-Кутты 4-го порядка.

3.4 Сравнительный анализ эффективности методов Рунге-Кутты при различных требованиях к точности вычислений.

При интегрировании ДУ основное время занимает вычисление правой части. Поэтому в качестве оценки затрат машинного времени принимают количество вычислений правых частей уравнений, умноженных на порядок метода. Из рисунка 3.8 видно, что при одних и тех же затратах (больших вычислительных затратах) машинного времени метод Рунге-Кутты второго порядка имеет меньшую ошибку, чем метод Рунге-Кутты четвертого порядка. Хотя на практике чаще используется метод Рунге-Кутты четвертого порядка, так как при правильном выборе шага, он позволяет получить решение с заданной точностью и меньшими вычислительными затратами, в нашем случае мы наблюдаем обратное. Это означает,  что при вычисление правой части не происходит «тяжелых» расчетов, и ошибка не накапливается (данное утверждение применимо именно к конкретному случаю).

Рисунок 3.8 –  Графики зависимости величины ошибки от количества вычисления правой части для двух методов.


ПЕРЕЧЕНЬ ССЫЛОК

  1.  Боглаев Ю.П. Вычислительная математика и программирование М.: В.Ш. – 1990.-544с
  2.  Самарский А.А., Гулин А.В. Численные методы. М.: Наука, ГРФМЛ,1989.-432с.
  3.  Бахвалов Н.С. Численные методы. М.:Наука, ГРФМЛ,1987.-600 с.
  4.  Маликов В.Т. Вычислительные методы и применение Киев: В.Ш.-1989.  -213 с.


ЗАКЛЮЧЕНИЕ

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

С помощью  этой программы  проведено ряд экспериментальных исследований свойств методов Рунге-Кутты второго и четвёртого порядка, наиболее часто применяющихся в практике моделирования  и проектирования систем управления.

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

Проведены    экспериментальные  исследования на ЭВМ зависимости точности, эффективности  и устойчивости    алгоритмов    интегрирования   от шага  интегрирования и порядка метода.

Практические  результаты  соответствуют  теоретическим положениям. На  определённом интервале  значений шага интегрирования, с уменьшением шага,  ошибка  интегрирования уменьшается.  Хотя для нашего конкретного случая не удалось показать, что метод Рунге-Кутты 4-го порядка имеет большую точность и меньшие вычислительные затраты при определенном выборе шага, что связано с видом нашего дифференциального уравнения.

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

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


ПРИЛОЖЕНИЕ А

 

ПРИЛОЖЕНИЕ Б

Текст программы

Program RK;

uses crt;

const

 t0=0; tf=6; x0=1; x1=2;

 type vector_n =array [1..2] of real;

 var x:vector_n;

     t,max,toch,h,E,et:real;

     n0,n,pr:integer;

     num,N2,N4:longint;

     resultat:text;

(*Процедура вычисления правых частей*)

  Procedure Right (t:real; var x,f:vector_n);

   begin

    f[1]:=x[2];

    f[2]:=2*x[2]-x[1]+exp(t)*t;

   end;

(*Процедура решения Д.У. методом Рунге-кутты 2-го порядка*)

 Procedure RK_2 (t:real; h:real; var x:vector_n);

   var f1,f2,xr:vector_n;

       h2:real;

       i:integer;

   begin

     h2:=h*0.5;

     Right(t,x,f1);

     for i:=1 to 2 do xr[i]:=x[i]+h*f1[i];

     Right (t+h,xr,f2);

     for i:=1 to 2 do x[i]:=x[i]+h2*(f1[i]+f2[i]);

   end;

(*Процедура решения Д.У. методом Рунге-Кутты 4-го порядка*)

  Procedure RK_4 (t:real; h:real; var x:vector_n);

       var xr,f1,f2,f3,f4:vector_n;

       i:integer;

       h2,h6:real;

       begin

       h2:=0.5*h;

       h6:=0.166666666666*h;

       right (t,x,f1);

       for i:=1 to 2 do xr[i]:=x[i]+h2*f1[i];

       right (t+h2,xr,f2);

       for i:=1 to 2 do xr[i]:=x[i]+h2*f2[i];

       right (t+h2,xr,f3);

       for i:=1 to 2 do xr[i]:=x[i]+h*f3[i];

       right (t+h,xr,f4);

       for i:=1 to 2 do

       x[i]:=x[i]+h6*(f1[i]+2*(f2[i]+f3[i])+f4[i]);

end;

{============================================================}

Function TochSolve(t:real):real;

 Begin

  TochSolve:=(t*t*t/6+t+1)*exp(t);

 End;

{============================================================}

{Основная программа}

BEGIN

clrscr;

textcolor(13);

assign(resultat,'my_res.txt');

rewrite(resultat);{}

repeat

write('Введите порядок метода:'); readln(n);

until (n=2) or (n=4);

write('Введите значение шага интегрирования h:'); readln(h);

write('Введите шаг печати:'); readln(pr);

writeln;

writeln('h=',h:4:4);

n0:=0;{счетчик вывода на экран}

x[1]:=x0;

x[2]:=x1;

t:=t0;

max:=0;

num:=round((tf-t0)/h); {расчет кол-ва шагов}

N2:=2*num;             {подсчет временных затрат для РК2}

N4:=4*num;             {подсчет временных затрат для РК4}

writeln(resultat, 'Порядок метода=',n,'  Шаг=',h);

toch:=tochsolve(t); {*Вычисление точного решение*}

et:=toch-x[1];

E:=abs(et);

writeln(resultat,t:5:4,'  ',toch:6:4,'   ',x [1]:6:4,' ',et:10);

writeln('При t=',t:5:4,'  toch=',toch:6:4,'  x=',x[1]:6:4,'  et=',et:10);

 while t<tf do

 begin

   if n<>2 then RK_4(t,h,x) else RK_2(t,h,x);

   toch:=tochsolve(t); {*Вычисление точного решение*}

   et:=toch-x[1];

   E:=abs(et);

   if E>max then max:=E;

   if n0=pr then

      begin

      writeln(resultat,t:5:4,'  ',toch:6:4,' ',x [1]:6:4,' ',et:10);

      writeln('При t=',t:5:4,'  toch=',toch:6:4,'  x=',x[1]:6:4,'  et=',et:10);

      n0:=0;

     end;

   n0:=n0+1;

   if (t+h)>tf then begin h:=tf-t; t:=t+h; end else{расчет последнего шага}

   t:=t+h;

   end;

   if n<>2 then RK_4(t,h,x) else RK_2(t,h,x);

   toch:=tochsolve(t); {*Вычисление точного решение*}

   et:=toch-x [1];

   E:=abs(et);

   if E>max then max:=E;

writeln(resultat,t:5:4,'    ',toch:6:4,'   ',x [1]:6:4,'  et=',et:10);

writeln('При t=',t:5:4,'  toch=',toch:6:4,'  x=',x[1]:6:4,'  et=',et:10);

writeln('N=',num);

if n=2 then

writeln('Коэф-т пропорциональности глобальной ошибки алгоритма C=',max/(h*h))

         else

writeln('Коэф-т пропорциональности глобальной ошибки алгоритма C=',max/(h*h*h*h));

 writeln(resultat,'Максимальная ошибка',max);

 writeln('Максимальная ошибка',max);

       close(resultat);

       readkey;

END.

ПРИЛОЖЕНИЕ В

Результаты работы программы

Порядок метода=2  Шаг= 1.0000000000E-02

При t=0.0000  toch=1.0000  x=1.0000  et= 0.000E+00

При t=0.5000  toch=2.5074  x=2.5513  et=-4.389E-02

При t=1.0000  toch=5.8896  x=5.9897  et=-1.001E-01

При t=1.5000  toch=13.7252  x=13.9584  et=-2.333E-01

При t=2.0000  toch=32.0192  x=32.5623  et=-5.430E-01

При t=2.5000  toch=74.3640  x=75.6116  et=-1.248E+00

При t=3.0000  toch=170.7271  x=173.5400  et=-2.813E+00

При t=3.5000  toch=385.6570  x=391.8705  et=-6.213E+00

При t=4.0000  toch=855.3710  x=868.8235  et=-1.345E+01

При t=4.5000  toch=1862.2294  x=1890.8156  et=-2.859E+01

При t=5.0000  toch=3982.4198  x=4042.1381  et=-5.972E+01

При t=5.5000  toch=8375.6009  x=8498.4514  et=-1.229E+02

При t=6.0000  toch=17347.4381  x=17596.6916  et=-2.166E+02

Максимальная ошибка 2.4925345495E+02

Порядок метода=2  Шаг= 1.0000000000E-03

При t=0.0000  toch=1.0000  x=1.0000  et= 0.000E+00

При t=0.1000  toch=1.2159  x=1.2182  et=-2.328E-03

При t=0.6000  toch=2.9810  x=2.9861  et=-5.134E-03

При t=1.1000  toch=6.9752  x=6.9870  et=-1.180E-02

При t=1.6000  toch=16.2592  x=16.2867  et=-2.756E-02

При t=2.1000  toch=37.9196  x=37.9837  et=-6.410E-02

При t=2.6000  toch=87.9092  x=88.0561  et=-1.469E-01

При t=3.1000  toch=201.2281  x=201.5582  et=-3.301E-01

При t=3.6000  toch=452.9397  x=453.6664  et=-7.267E-01

При t=4.1000  toch=1000.8543  x=1002.4225  et=-1.568E+00

При t=4.6000  toch=2171.0131  x=2174.3355  et=-3.322E+00

При t=5.1000  toch=4626.8120  x=4633.7342  et=-6.922E+00

При t=5.6000  toch=9700.0149  x=9714.2214  et=-1.421E+01

При t=6.0000  toch=17347.4380  x=17372.4420  et=-2.500E+01

Максимальная ошибка 2.5004058033E+01

Порядок метода=2  Шаг= 2.0000000000E-03

При t=0.0000  toch=1.0000  x=1.0000  et= 0.000E+00

При t=1.0000  toch=5.8896  x=5.9096  et=-1.995E-02

При t=2.0000  toch=32.0192  x=32.1277  et=-1.084E-01

При t=3.0000  toch=170.7271  x=171.2895  et=-5.624E-01

При t=4.0000  toch=855.3710  x=858.0639  et=-2.693E+00

При t=5.0000  toch=3982.4198  x=3994.3861  et=-1.197E+01

При t=6.0000  toch=17347.4381  x=17397.4285  et=-4.999E+01

Максимальная ошибка 4.9990416408E+01

Порядок метода=4  Шаг= 5.0000000000E-01

При t=0.0000  toch=1.0000  x=1.0000  et= 0.000E+00

При t=0.5000  toch=2.5074  x=5.8782  et=-3.371E+00

При t=1.0000  toch=5.8896  x=13.6889  et=-7.799E+00

При t=1.5000  toch=13.7252  x=31.9179  et=-1.819E+01

При t=2.0000  toch=32.0192  x=74.1025  et=-4.208E+01

При t=2.5000  toch=74.3640  x=170.0885  et=-9.572E+01

При t=3.0000  toch=170.7271  x=384.1595  et=-2.134E+02

При t=3.5000  toch=385.6570  x=851.9697  et=-4.663E+02

При t=4.0000  toch=855.3710  x=1854.7028  et=-9.993E+02

При t=4.5000  toch=1862.2294  x=3966.1231  et=-2.104E+03

При t=5.0000  toch=3982.4198  x=8340.9636  et=-4.359E+03

При t=5.5000  toch=8375.6009  x=17274.9902  et=-8.899E+03

При t=6.0000  toch=17347.4381  x=35283.2264  et=-1.794E+04

Максимальная ошибка 1.7935788297E+04

Порядок метода=4  Шаг= 2.0000000000E-03

При t=0.0000  toch=1.0000  x=1.0000  et= 0.000E+00

При t=0.1000  toch=1.2159  x=1.2205  et=-4.660E-03

При t=0.2000  toch=1.4673  x=1.4727  et=-5.435E-03

При t=0.8000  toch=4.1959  x=4.2102  et=-1.429E-02

При t=1.4000  toch=11.5871  x=11.6264  et=-3.930E-02

При t=2.0000  toch=32.0192  x=32.1278  et=-1.086E-01

При t=2.6000  toch=87.9092  x=88.2035  et=-2.942E-01

При t=3.2000  toch=237.0170  x=237.7925  et=-7.755E-01

При t=3.8000  toch=623.3729  x=625.3576  et=-1.985E+00

При t=4.4000  toch=1596.2198  x=1601.1595  et=-4.940E+00

При t=5.0000  toch=3982.4198  x=3994.4092  et=-1.199E+01

При t=5.6000  toch=9700.0150  x=9728.4769  et=-2.846E+01

При t=6.0000  toch=17347.4381  x=17397.5335  et=-5.010E+01

Максимальная ошибка 5.0095412672E+01

Порядок метода=4  Шаг= 1.0000000000E-03

При t=0.0000  toch=1.0000  x=1.0000  et= 0.000E+00

При t=0.8000  toch=4.1959  x=4.2030  et=-7.140E-03

При t=1.6000  toch=16.2592  x=16.2867  et=-2.758E-02

При t=2.4000  toch=62.8762  x=62.9819  et=-1.057E-01

При t=3.2000  toch=237.0170  x=237.4044  et=-3.875E-01

При t=3.8000  toch=623.3729  x=624.3645  et=-9.916E-01

При t=4.6000  toch=2171.0131  x=2174.3386  et=-3.326E+00

При t=5.4000  toch=7227.5910  x=7238.2758  et=-1.068E+01

При t=6.0000  toch=17347.4381  x=17372.4684  et=-2.503E+01

Максимальная ошибка 2.5030294418E+01


ПРИЛОЖЕНИЕ В

 

Решение систем обыкновенных дифференциальных уравнений методами Рунге-Кутты на http://refleader.ru/


 

Другие похожие работы, которые могут вас заинтересовать.
3551. Визуализация численных методов. Решение обыкновенных дифференциальных уравнений 143.97 KB
  Дифференциальными уравнениями называются уравнения, связывающее значение некоторой неизвестной функции в некоторой точке и значение её производных различных порядков в той же точке. Первые дифференциальные уравнения возникли из задач механики...
19443. Методы решения обыкновенных дифференциальных уравнений 72.36 KB
  Для начала рассмотрим метод Эйлера так как является самым простым из существующих численных методов решения дифференциальных уравнений и в конце сравним результаты. Метод Эйлера является явным одношаговым методом первого порядка точности основанном на аппроксимации интегральной кривой кусочно-линейной функцией...
6215. Численные методы решения обыкновенных дифференциальных уравнений 1.42 MB
  Порядком обыкновенного дифференциального уравнения называется порядок старшей производной от искомой функции. Общим интегралом уравнения. неявным образом причем число постоянных интегрирования равно порядку уравнения. Общим решением обыкновенного дифференциального уравнения называется функция.
13538. Понятие о численных методах решения обыкновенных дифференциальных уравнений 153.35 KB
  Недостатки метода Эйлера 4. Идея метода Эйлера очень проста. В результате приходим к приближённому уравнению: Поскольку по определению у= окончательно имеем следующее уравнение являющееся основой метода Эйлера: 8 Конечно это уравнение является лишь приближённым и мы надеемся что чем меньше величина шага h тем оно будет более точным уменьшается локальная погрешность метода то есть погрешность на одном его шаге.
13536. Элементы общей теории обыкновенных дифференциальных уравнений первого порядка 129.39 KB
  Такие уравнения называются дифференциальными. Аналогичное исследование с помощью дифференциального уравнения можно провести и для изучения экстратока замыкания. Для того чтобы найти эту функцию отделим переменные t и x друг от друга собрав члены с x в левой части уравнения а члены с t в правой: .
19491. Решение дифференциальных уравнений в частных производных 267.96 KB
  Экранированная двухпроводная линия РАСЧЕТ Для выполнения расчета необходимо запустить PDE Toolbox для этого необходимо выполнить команду pdetool в рабочей области MTLB.– Двухмерная модель проводящей линии Сначала из геометрических примитивов строиться модель системы см...
15763. Решение систем линейных уравнений 93.2 KB
  Решить систему линейных уравнений с помощью метода Крамара. Решить эту же систему уравнений методом обратной матрицы.
24. Экспериментальные исследования методов Рунге-Кутты 160.9 KB
  Настоящая курсовая работа по курсу «Вычислительные методы» посвящена экспериментальному исследованию свойств методов Рунге-Кутты, наиболее часто применяющихся в практике моделирования и проектирования систем управления и автоматики. Экспериментальные исследования проводятся на ЭВМ
841. Теоретическая информатика. Решение систем линейных уравнений методом Крамара 90.58 KB
  Информация ее виды и свойства Единицы количества информации: вероятностный и объемный подходы. Теоретическая информатика математическая дисциплина использующая методы математики для построения и изучения моделей обработки передачи и использования информации. Но как правило эти модели наполнены конкретным содержанием связанным со спецификой информации того объекта который нас интересует. В них разрабатываются методы позволяющие использовать достижения логики для анализа процессов переработки информации с помощью...
6396. Виды нелинейных дифференциальных уравнений 1-го порядка 163.25 KB
  Дифференциальное уравнение уравнение связывающее значение некоторой неизвестной функции в некоторой точке и значение её производных различных порядков в той же точке. Дифференциальное уравнение содержит в своей записи неизвестную функцию её производные и независимые переменные; однако не любое уравнение содержащее производные неизвестной функции является дифференциальным уравнением. Нелинейное дифференциальное уравнение дифференциальное уравнение обыкновенное или с частными производными в которое по крайней мере одна...
© "REFLEADER" http://refleader.ru/
Все права на сайт и размещенные работы
защищены законом об авторском праве.