Численные методы решения дифференциального уравнения
Понятие дифференциальных уравнений. Рассмотрение теоретических знаний в вопросе численного решения дифференциальных уравнений на основе метода Рунге-Кутты и основных свойств данного метода. Приобретение опыта решения дифференциального уравнения.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | реферат |
Язык | русский |
Дата добавления | 22.03.2014 |
Размер файла | 808,0 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http:www.allbest.ru/
Федеральное агентство по образованию
Государственное образовательное учреждение
высшего профессионального образования «Алтайский государственный технический университет
им. И.И. Ползунова»
БИЙСКИЙ ТЕХНОЛОГИЧЕСКИЙ ИНСТИТУТ (филиал)
Кафедра информатики и вычислительной математики
УДК 681.3.06
Численные методы решения дифференциального уравнения
по дисциплине «Информатика»
Бийск 2010
Содержание
Введение
1 Теоретическая часть
1.1 Обыкновенные дифференциальные уравнения
1.2 Метод Рунге-Кутта
2 Практическая часть
2.1 Задание
2.2 Алгоритм решения
2.3 Листинг программы
2.4 Результат работы программы
Заключение
- Список использованных источников
Введение
В различных сферах технических и даже экономических отраслей приходится достаточно часто сталкиваться с математическими задачами, для которых не представляется возможным описать точное решение классическими методами или это решение крайне трудно реализовать на практике.
Разрабатываемые вычислительной математикой численные методы носят в основном ориентировочный характер, однако они позволяют получить итоговый числовой результат с достаточной для практических нужд точностью. Численные методы представляют собой алгоритмы вычисления приблизительных значений искомого решения на определенной сетке значений аргумента. При определенных условиях значения аргумента могут являться точными.
Численные методы не позволяют найти общее решение: полученное решение является частным. Но одним из многочисленных плюсов данных методов можно назвать высокую степень применимости к обширным классам уравнений и всем типам вопросов и заданий к ним. С появлением электронных вычислительных машин численные методы стали одними из основных технологий решения определенных практических задач решения ОДУ. дифференциальный уравнение численный метод
Целью курсовой работы является приобретение опыта решения дифференциального уравнения.
Задание предполагает:
- закрепление теоретических навыков и знаний в вопросе численного решения дифференциальных уравнений на основе метода Рунге-Кутты и основных характеристик и свойств данного метода;
- приобретение основных навыков составления и отладки процедур и функций программ для решения дифференциальных уравнений на основе метода Рунге-Кутты.
1 Теоретическая часть
1.1 Обыкновенные дифференциальные уравнения
Обыкновенные дифференциальные уравнения (ОДУ) широко используются для математического моделирования процессов и явлений в различных областях науки и техники. Переходные процессы в радиотехнике, кинетика химических реакций, динамика биологических популяций, движение космических объектов, модели экономического развития исследуются с помощью ОДУ.
В дифференциальное уравнение n-го порядка в качестве неизвестных величин входят функция y(x) и ее первые n производных по аргументу x
( x, y, y1, ... y(n) )=0. 1.1
Из теории ОДУ известно, что уравнение (1.1) эквивалентно системе n уравнений первого порядка
k(x, y1, y1' ,y2 ,y2 ', ... ,yn ,yn ')=0. 1.2
где k=1, ... , n.
Уравнение (1.1) и эквивалентная ему система (1.2) имеют бесконечное множество решений. Единственные решения выделяют с помощью дополнительных условий, которым должны удовлетворять искомые решения. В зависимости от вида таких условий рассматривают три типа задач, для которых доказано существование и единственность решений.
Первый тип - это задачи Коши, или задачи с начальными условиями. Для таких задач кроме исходного уравнения (1.1) в некоторой точке x0 должны быть заданы начальные условия, т.е. значения функции y(x) и ее производных
y(x0)=y0' , y'(x0)=y10, ... , y(n-1)(x0)=yn-1,0.
Для системы ОДУ типа (1.2) начальные условия задаются в виде
y1(x0)=y10 , y2(x0)=y20, ... , yn(x0)=yn0. 1.3
Ко второму типу задач относятся так называемые граничные, или краевые задачи, в которых дополнительные условия задаются в виде функциональных соотношений между искомыми решениями. Количество условий должно совпадать с порядком n уравнения или системы. Если решение задачи определяется в интервале x є x0 ,xk, то такие условия могут быть заданы как на границах, так и внутри интервала. Минимальный порядок ОДУ, для которых может быть сформулирована граничная задача, равен двум.
Третий тип задач для ОДУ - это задачи на собственные значения. Такие задачи отличаются тем, что кроме искомых функций y(x) и их производных в уравнения входят дополнительно m неизвестных параметров 12хm которые называются собственными значениями Для единственности решения на интервале [x0xk] необходимо задать m+n граничных условий В качестве примера можно назвать задачи определения собственных частот коэффициентов диссипации структуры электромагнитных полей и механических напряжений в колебательных системах задачи нахождения фазовых коэффициентов коэффициентов затухания распределения напряженностей полей волновых процессов и тд
К численному решению ОДУ приходится обращаться когда не удается построить аналитическое решение задачи через известные функции Хотя для некоторых задач численные методы оказываются более эффективными даже при наличии аналитических решений
Большинство методов решения ОДУ основано на задаче Коши алгоритмы и программы для которой рассматриваются в дальнейшем
1.2 Метод Рунге-Кутта
Все методы Рунге-Кутта являются одношаговыми методами: для получения решения yi+1 при xi+1 надо знать решение в одной точке (yi, xi) . Это позволяет начать решение используя начальные условия. Указанная особенность допускает изменение шага интегрирования в любой точке в процессе счета, что дает возможность строить численные алгоритмы с автоматическим выбором шага.
Методы Рунге-Кутта обладают следующими свойствами:
1 Эти методы являются одноступенчатыми: чтобы найти уm+1 нужна информация о предыдущей точке xmym
2 Они согласуются с рядом Тейлора вплоть до членов порядка hp где степень р различна для различных методов и называется порядковым номером или порядком метода
3 Они не требуют вычисления производных от f(xy) а требуют вычисления самой функции
Рассмотрим сначала геометрическое построение и выведем некоторые формулы на основе геометрических аналогий После этого мы подтвердим полученные результаты аналитически
Предположим нам известна точка xmym на искомой кривой Тогда мы можем провести прямую линию с тангенсом угла наклона уm=f(xmym) которая пройдет через точку xmym Это построение показано на рис1 где кривая представляет собой точное но конечно неизвестное решение уравнения а прямая линия L1 построена так как это только что описано
Рис. 1
Тогда следующей точкой решения можно считать ту где прямая L1 пересечет ординату проведенную через точку x=xm+1=xm+h
Уравнение прямой L1 выглядит так: y=ym+ym(x-xm) так как y=f(xmym) и кроме того xm+1=xm+h тогда уравнение примет вид
ym+1=ym+h*f(xmym) 14
Ошибка при x=xm+1 показана в виде отрезка е Очевидно найденное таким образом приближенное значение согласуется с разложением в ряд Тейлора вплоть до членов порядка h так что ошибка ограничения равна
е t=Кh2
Хотя точка на рис. 1 была показана на кривой в действительности ym является приближенным значением и не лежит точно на кривой
Формула 14 описывает метод Эйлера один из самых старых и широко известных методов численного интегрирования дифференциальных уравнений Отметим что метод Эйлера является одним из методов Рунге-Кутта первого порядка
Рассмотрим исправленный метод Эйлера и модификационный метод Эйлера В исправленном методе Эйлера мы находим средний тангенс угла наклона касательной для двух точек: xmym и xm+hym+hym Последняя точка есть та самая которая в методе Эйлера обозначалась xm+1ym+1 Геометрический процесс нахождения точки xm+1ym+1 можно проследить по рис2 С помощью метода Эйлера находится точка xm+hym+hym лежащая на прямой L1 В этой точке снова вычисляется тангенс дает прямую Наконец через точку xmym мы проводим прямую L параллельную Точка в которой прямая L пересечется с ординатой восстановленной из x=xm+1=xm+h и будет искомой точкой xm+1ym+1
Тангенс угла наклона прямой и прямой L равен
Ф(xmymh)=[f(xmym)+f(xm+hym+ymh)] 15
где ym=f(xmym) 16
Уравнение линии L при этом записывается в виде
y=ym+(x-xm)Ф(xmymh)
так что
ym+1=ym+hФ(xmymh) 17
Соотношения 15 16 17 описывают исправленный метод Эйлера
Рис. 2
Чтобы выяснить насколько хорошо этот метод согласуется с разложением в ряд Тейлора вспомним что разложение в ряд функции f(xy) можно записать следующим образом:
f(xy)=f(xmym)+(x-xm)f/x+(y-ym)f/x+ 18
где частные производные вычисляются при x=xm и y=ym
Подставляя в формулу 18 x=xm+h и y=ym+hym и используя выражение 16 для ym получаем
f(xm+hym+hym)=f+hfx+hfy+O(h2)
где снова функция f и ее производные вычисляются в точке xmym Подставляя результат в 15 и производя необходимые преобразования получаем
Ф(xmymh)=f+h/2(fx+fy)+O(h2)
Подставим полученное выражение в 17 и сравним с рядом Тейлора
ym+1=ym+hf+h2/2(fx+fy)+O(h3)
Как видим исправленный метод Эйлера согласуется с разложением в ряд Тейлора вплоть до членов степени h2 являясь таким образом методом Рунге-Кутты второго порядка
Рассмотрим модификационный метод Эйлера Рассмотрим рис3 где первоначальное построение сделано так же как и на рис2 Но на этот раз мы берем точку лежащую на пересечении этой прямой и ординатой x=x+h/2 На рисунке эта точка образована через Р а ее ордината равна y=ym+(h/2)ym Вычислим тангенс угла наклона касательной в этой точке
Ф(xmymh)=f+(xm+h/2ym+h/2*ym) 19
где ym=f(xmym) 110
Прямая с таким наклоном проходящая через Р обозначена через * Вслед за тем мы проводим через точку xmym прямую параллельную * и обозначаем ее через L0 Пересечение этой прямой с ординатой x=xm+h и даст искомую точку xm+1ym+1 Уравнение прямой можно записать в виде
y=ym+(x-xm)Ф(xmymh)
где Ф задается формулой 16 Поэтому
ym+1=ym+hФ(xmymh) 111
Соотношения 19 110 111 описывают так называемый модификационный метод Эйлера и является еще одним методом Рунге-Кутта второго порядка Обобщим оба метода Заметим что оба метода описываются формулами вида
ym+1=ym+hФ(xmymh) 112
и в обоих случаях Ф имеет вид
Ф(xmymh)=a1f(xmym)+a2f(xm+b1hym+b2hym) 113
где ym=f(xmym) 114
В частности для исправленного метода Эйлера
a1=a2=1/2;
b1=b2=1
Рис. 3
В то время как для модификационного метода Эйлера
a1=0 a2=1
b1=b2=1/2
Формулы 112 113 114 описывают некоторый метод типа Рунге-Кутты Посмотрим какого порядка метод можно рассчитывать получить в лучшем случае и каковы допустимые значения параметров a1 a2 b1 и b2
Чтобы получить соответствие ряду Тейлора вплоть до членов степени h в общем случае достаточно одного параметра Чтобы получить согласование вплоть до членов степени h2 потребуется еще два параметра так как необходимо учитывать члены h2fx и h2fy Так как у нас имеется всего четыре параметра три из которых потребуются для создания согласования с рядом Тейлора вплоть до членов порядка h2 то самое лучшее на что здесь можно рассчитывать - это метод второго порядка
В разложении f(xy) в ряд 18 в окрестности точки xmym положим
x=xm+b1h
y=ym+b2hf
Тогда f(xm+b1hym+b2hf)=f+b1hfx+b2hfy+O(h2) где функция и производные в правой части равенства вычислены в точке xmym
Тогда 112 можно переписать в виде
ym+1=ym+h[a1f+a2f+h(a2b1fx+a2b2fy)]+O(h3)
Сравнив эту формулу с разложением в ряд Тейлора можно переписать в виде
ym+1=ym+h[a1f+a2f+h(a2b1fx+a2b2ffy)]+O(h3)
Если потребовать совпадения членов hf то a1+a2=1
Сравнивая члены содержащие h2fx получаем a2b1=1/2
Сравнивая члены содержащие h2fy получаем a2b2=1/2
Так как мы пришли к трем уравнениям для определения четырех неизвестных то одно из этих неизвестных можно задать произвольно исключая может быть нуль в зависимости от того какой параметр взять в качестве произвольного
Положим например a2=0 тогда a1=1- b1=b2=1/2 и соотношения 112 113 114 сведутся к
ym+1=ym+h[(1-)f(xmym)+f(xm+h/2ym+h/2f(xmym))]+O(h3) 115
Это наиболее общая форма записи метода Рунге-Кутта второго порядка При =1/2 мы получаем исправленный метод Эйлера при =1 получаем модификационный метод Эйлера Для всех отличных от нуля ошибка ограничения равна
et=kh3 116
Методы Рунге-Кутта третьего и четвертого порядков можно вывести совершенно аналогично тому как это делалось при выводе методов первого и второго порядков Мы не будем воспроизводить выкладки а ограничимся тем что приведем формулы описывающие метод четвертого порядка один из самых употребляемых методов интегрирования дифференциальных уравнений Этот классический метод Рунге-Кутта описывается системой следующих пяти соотношений
ym+1=ym+h/6(R1+2R2+2R3+R4) 117
где R1=f(xmym) 118
R2=f(xm+h/2ym+hR1/2) 119
R3=f(xm+h/2ym+hR2/2) 120
R4=f(xm+h/2ym+hR3/2). 121
Ошибка ограничения для этого метода равна et=kh5
так что формулы 117-121 описывают метод четвертого порядка Заметим что при использовании этого метода функцию необходимо вычислять четыре раза
2 Практическая часть
2.1 Задание
Написать программу решения дифференциального уравнения первого порядка методом Рунге-Кутты четвертого порядка.
Исходные данные:
Дифференциальное уравнения первого порядка:
,
где T=2; k=1; x(t)=1.
Аналитическое решение дифференциального уравнения первого порядка:
.
2.2 Алгоритм решения
Основная программа
Размещено на http:www.allbest.ru/
Вычисление функции
Размещено на http:www.allbest.ru/
Алгоритм Рунге-Кутта
Размещено на http:www.allbest.ru/
2.3 Листинг программы
Uses Crt;
const
k=1;
T=2;
type
TFunc = function(x,y: extended): extended;
Var
f1: Text;
n: word; {количество точек разбиения}
x0,x_end,y0: extended;
function func(x,y: extended): extended; far;
begin
func := (k*x-y)/T;
end;
function RungeKutt(f: TFunc; x0_,x_end,y0_: extended; n: word): extended;
{ где x0_ и y0_ - начальное условие
x_end - точка, в которой необходимо вычислить результат
n - количество шагов для вычисления результата }
var
i : word; { счетчик цикла }
x,h : extended; { текущая точка и длина шага }
res : extended; {переменная для накопления конечного результата функции }
k1,k2,k3,k4: extended; {вспомогательные переменные вычисления результата }
begin
h:= (x_end - x0_)/n; { Находим длину шага }
res:= y0_; { устанавливаем начальные значения}
x:=x0_;
writeln(F1,x:0:3,' ',res:0:3); {Вывод расчитанных значений в файл}
for i:=1 to n do
begin { вычисляем результат по методу Рунге-Кутта 4го порядка }
k1:=f(x,res);
k2:=f(x+h/2,res+h*k1/2);
k3:=f(x+h/2,res+h*k2/2);
k4:=f(x+h,res+h*k3);
res:=res+h*(k1+2*k2+2*k3+k4)/6;
x:=x+h; { переходим к следующей точке }
writeln(F1,x:0:3,' ',res:0:3); {Вывод расчитанных значений в файл}
end;
RungeKutt:=res; { присваиваем конечный результат функции }
end;
begin
ClrScr;
assign(F1,'C:\runge.txt'); {Настройка записи в текстовый файл}
rewrite(F1);
writeln('Численное решение дифференциальных уравнений:');
writeln('Алгоритм Рунге-Кутты 4-го порядка');
writeln(' Tdy(y)/dt + y(t)=kx T=2; k=1');
writeln;
{Считывание данных для расчета}
write('Введите x0='); readln(x0);
write('Введите x_end='); readln(x_end);
write('Введите n='); readln(n);
write('Введите y0='); readln(y0);
writeln;
writeln(' x y') {Вывод "шапки" таблицы на экран}
writeln(F1,' x y'); {Вывод "шапки" таблицы в фай}
writeln('n=',n, ' Результат: ',RungeKutt(func, x0, x_end, y0, n):5:5);
Close(F1);
readln;
end.
Заключение
В процессе выполнения курсовой работы закреплены теоретические навыки и знания в вопросе численного решения дифференциальных уравнений на основе метода Рунге-Кутты, приобретены основные навыки составления и отладки процедур и функций программ для решения дифференциальных уравнений на основе метода Рунге-Кутты.
При реализации на практике задания для курсовой работы, заключающегося в решении дифференциального уравнения методом Рунге-Кутты, была составлена и отлажена программа.
Установлено, что при задании определенного интервала значений шага интегрирования ошибка интегрирования уменьшается с уменьшением шага. Однако нельзя обойти вниманием тот факт, что для довольно малых значений с уменьшением шага интегрирования ошибке свойственно увеличивается. Это связано с лавинообразным ростом числа требуемых для получения решения вычислений и c увеличением ошибки вычислений.
Список использованных источников
Самарский А.А., Гулин А.В. Численные методы - М.: Наука, ГРФМЛ, 1989.- 432с.
Бахвалов Н.С. Численные методы - М.: Наука, ГРФМЛ,1987.-600 с.
Маликов В.Т. Вычислительные методы и применение - Киев: В.Ш.-1989.-213 с.
1. Мудров А.Е.Численные методы для ПЭВМ на языках Паскаль, Фортран и Бейсик - Томск, МП “Раско”, 1991 г.
Размещено на Allbest.ru
...Подобные документы
Численные методы решения задачи Коши для обыкновенных дифференциальных уравнений: Эйлера, Рунге-Кутта, Адамса и Рунге. Техники приближенного решения данных уравнений: метод конечных разностей, разностной прогонки, коллокаций; анализ результатов.
курсовая работа [532,9 K], добавлен 14.01.2014Реализация решения обыкновенных дифференциальных уравнений 1-го и 2-го порядка методом Рунге-Кутты. Построение на ЭВМ системы отображения результатов в табличной форме и в виде графика. Архитектура и требования к разрабатываемым программным средствам.
курсовая работа [2,7 M], добавлен 05.11.2011Обзор методов решения в Excel. Рекурентные формулы метода Эйлера. Метод Рунге-Кутта четвертого порядка для решения уравнения первого порядка. Метод Эйлера с шагом h/2. Решение дифференциальных уравнений с помощью Mathcad. Модифицированный метод Эйлера.
курсовая работа [580,1 K], добавлен 18.01.2011Анализ предметной области объектно-ориентированного программирования. Языки Delphi, Object Pascal - объектно-ориентированная среда программирования. Основные алгоритмические решения. Решение дифференциального уравнения методом Рунге-Кутта в среде Excel.
курсовая работа [1,5 M], добавлен 02.04.2011Команды, используемые при решении обыкновенных дифференциальных уравнений в системе вычислений Maple. Произвольные константы решения дифференциального уравнения второго порядка, представленном рядом Тейлора. Значения опции method при численном решении.
лабораторная работа [47,2 K], добавлен 15.07.2009Программа вычисления интеграла методом прямоугольников. Решение задачи Коши для дифференциальных уравнений. Модифицированный метод Эйлера. Методы решения краевой задачи для обыкновенного дифференциального уравнения. Задачи линейного программирования.
методичка [85,2 K], добавлен 18.12.2014Численный метод для решения однородного дифференциального уравнения первого порядка методом Эйлера. Решение систем дифференциальных уравнений методом Рунге–Кутта. Решение краевой задачи. Уравнения параболического типа, а также Лапласа и Пуассона.
курсовая работа [163,5 K], добавлен 27.05.2013Особенности точных и итерационных методов решения нелинейных уравнений. Последовательность процесса нахождения корня уравнения. Разработка программы для проверки решения нелинейных функций с помощью метода дихотомии (половинного деления) и метода хорд.
курсовая работа [539,2 K], добавлен 15.06.2013Решение системы обыкновенных дифференциальных уравнений в программе Matlab. Применение метода Рунге–Кутты. Априорный выбор шага интегрирования. Построение трехмерного графика движения точки в декартовой системе координат и создание видеофайла формата AVI.
контрольная работа [602,8 K], добавлен 04.05.2015Численные методы решения нелинейных уравнений, систем линейных и нелинейных алгебраических уравнений, дифференциальных уравнений, определенных интегралов. Методы аппроксимации дискретных функций и методы решения задач линейного программирования.
методичка [185,7 K], добавлен 18.12.2014Основные уравнения газовой динамики, численные методы решения дифференциальных уравнений и его структура. Сущность метода контрольного объема центрированного по узлу и ячейке в программном пакете ANSYS CFX. Основы моделирования нестационарного обтекания.
дипломная работа [1,8 M], добавлен 01.06.2010Изучение численных методов решения нелинейных уравнений. Построение годографа АФЧХ, графиков АЧХ и ФЧХ с указанием частот. Практическое изучение численных методов интегрирования дифференциальных уравнений высокого порядка, метод Рунге-Кутта 5-го порядка.
курсовая работа [398,3 K], добавлен 16.06.2009Решение дифференциальных уравнений первого порядка. Варианты методов Рунге-Кутта различных порядков. Основные методы численного решения задачи Коши. Повышение точности вычислений и итерационный метод уточнения. Дискретная числовая последовательность.
лабораторная работа [33,3 K], добавлен 14.05.2012Автоматизация решения системы уравнения методом Гаусса (классического метода решения системы линейных алгебраических уравнений, остоящего в постепенном понижении порядка системы и исключении неизвестных) и решения уравнения методами хорд и Ньютона.
курсовая работа [578,2 K], добавлен 10.02.2011Метод половинного деления как один из методов решения нелинейных уравнений, его основа на последовательном сужении интервала, содержащего единственный корень уравнения. Алгоритм решения задачи. Описание программы, структура входных и выходных данных.
лабораторная работа [454,1 K], добавлен 09.11.2012Численные методы решения задач. Решение алгебраических и трансцендентных уравнений. Уточнение корня по методу половинного деления. Решение систем линейных уравнений методом итераций. Методы решения дифференциальных уравнений. Решение транспортной задачи.
курсовая работа [149,7 K], добавлен 16.11.2008Проектирование схемы решения дифференциального уравнения, обеспечивающей управление процессом решения и задания начальных условий с помощью ЦВМ. Этапы программирования задач на аналоговых вычислительных машинах. Проверка результатов моделирования.
курсовая работа [71,6 K], добавлен 24.09.2010Математическое описание задачи решения обыкновенного дифференциального уравнения численным явным методом Рунге-Кутта, разработка схемы алгоритма и написание программы в среде программирования Microsoft Visual Studio 2010. Тестирование работы программы.
курсовая работа [1,1 M], добавлен 22.01.2014Аналитическое и численное исследование уравнения Дуффинга и его странных аттракторов. Регулярные и хаотические явления в вынужденном осцилляторе Дуффинга. Стробоскопическое исследование явления. Метод Рунге-Кутты решения дифференциальных уравнений.
дипломная работа [4,3 M], добавлен 29.06.2012Использование повторяющегося процесса. Нахождение решения за определенное количество шагов. Применение метода хорд и метода простой итерации. Методы нахождения приближенного корня уравнения и их применение. Построение последовательного приближения.
курсовая работа [849,1 K], добавлен 15.06.2013