Решение уравнения методом Рунге-Кутта и методом Эйлера в среде MathCad
Решение заданного дифференциального уравнения двумя разными методами: методом Рунге-Кутта и методом Эйлера модифицированного. Описание используемых методов. Построение графика и блок-схемы решения задачи. Проверка правильности решения в среде MathCad.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 13.08.2012 |
Размер файла | 1,0 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Содержание
- Техническое задание
- Введение
- 1. Решение задачи
- 2. Описание используемых методов
- 2.1 Метод Рунге-Кутта
- 2.2 Метод Эйлера модифицированный
- 3. Решение задачи в MathCad
- 4. Алгоритм решения задачи
- Заключение
- Приложение
- Техническое задание
- Решить дифференциальное уравнение
- c начальным условием y0 = 2 и общим решением
- на отрезке х0 = 1 до хk = 1.4 с шагом h = 0.05 методом Рунге - Кутта и Эйлера модифицированным.
- дифференциальный уравнение решение
Введение
Информатика - это области человеческой деятельности, связанная с процессами преобразования информации с помощью компьютеров и их взаимодействием со средой применения.
21 век - век информационных технологий, в котором основная роль отводится науке. На данном этапе важнейшее значение приобретают проблемы, связанные с производством, преобразованием, передачей и потреблением информации.
Курсовой проект является важнейшей составляющей курса и первой объемной самостоятельной инженерно-расчетной работой студента.
Целью данной курсовой работы является закрепление знаний по дисциплине “Информатика”, которые были получены в течение всего учебного года.
В своей работе я поставила перед собой задачу: изучить основы программирования. Для этого необходимо было решить уравнение двумя разными методами: методом Рунге-Кутта и методом Эйлера модифицированного, а также построить график и блок-схему, и проверить правильность решения в среде MathCad.
1. Решение задачи
В курсовой работе необходимо двумя методами (Рунге-Кутт, Эйлер модифицированный) решить задачу Коши для дифференциального уравнения 1-го порядка на отрезке [1,1.4] с шагом h=0.05 и начальным условием Y(X0)=Y0(1), Y0=2,
Ответ должен быть получен в виде таблицы результатов:
X |
Y(1) |
Y(2) |
Y(T) |
|
X0 |
Y0(1) |
Y0(2) |
Y(X0) |
|
X1 |
Y1(1) |
Y1(2) |
Y(X1) |
|
… |
… |
… |
… |
|
Xk |
Yk(1) |
Yk(2) |
Y(Xk) |
Где: Y(1) , Y(2) - решения, полученные различными численными методами, Y(T) - точное решение дифференциального уравнения.
Возможно представление результатов решения не в виде таблицы, а в виде списков.
Данные таблицы визуализировать на форме в виде графиков.
Пред вычислением последнего столбца таблицы результатов необходимо из начальных условий вычислить значение коэффициента С, используемого в общем решении.
Входные данные: x0, xk, y0, h.
Выходные данные: массив значений y в каждой точке узла.
2. Описание используемых методов
Решить дифференциальное уравнение - это значит найти все значения yi на заданном отрезке.
Рассмотрим дифференциальное уравнение 1-го порядка в общем виде
Решением этого уравнения является интегральная кривая y = y(x), удовлетворяющая начальному условию y(x0 ) = y0 .
В геометрической интерпретации решением данного дифференциального уравнения является семейство интегральных кривых, описываемых y = y(x) и показанных на рис.1 штриховыми линиями и одной сплошной кривой, проходящей через точку H(x0 , y0 ) и являющейся решением уравнения при начальном условии y(x0 ) = y0 .
Необходимо отметить, что для существования хотя бы одного решения функция f(x,y) должна быть непрерывна в некоторой области около точки H(x0 , y0 ).
Рис. 1
Пусть интегральная кривая проходит через точку М(x1 , y1 ). Угловой коэффициент касательной в точке М равен
Таким образом, дифференциальное уравнение 1-го порядка определяет направления касательных в точках интегральной кривой решения. Решения дифференциального уравнения основаны на различных способах кусочно-линейной аппроксимации интегральной кривой решения. При этом аппроксимирующая ломаная должна выходить из начальной точки (x0 , y0 ) и состоять из отрезков, совпадающих с направлениями касательных на соответствующих участках интегральной кривой. Если отрезки ломаной формируются по значениям касательных в начальных или конечных точках кривой, то способ решения относят к методу Эйлера. Различные способы усреднения отрезков ломаной относят к методу Рунге-Кутта.
2.1 Метод Рунге-Кутта
Пусть дано дифференциальное уравнение первого порядка
с начальным условием
y(x0) = y0.
Выберем шаг h и введём обозначения:
xi = x0 + i.h и yi = y(xi) , где i = 0, 1, 2, …,
xi - узлы сетки,
yi- значение интегральной функции в узлах .
Решение дифференциального уравнения производится аналогично описанным ниже методом Эйлера модифицированного. Отличие состоит в делении шага на 4 части.
Согласно методу Рунге-Кутта четвертого порядка, последовательные значения yi искомой функции y определяются по формуле:
yi+1=yi+
где
=, i=0,1,2,…
а числа на каждом шаге вычисляются по формулам:
Это явный четырехэтапный метод четвертого порядка точности.
2.2 Метод Эйлера модифицированный
Для уменьшения погрешности вычислений часто используется модифицированный метод Эйлера. Этот метод имеет так же следующие названия: метод Эйлера-Коши или метод Рунге-Кутта второго порядка точности.
Пусть дано дифференциальное уравнение первого порядка
с начальным условием y(x0) = y0.
Выберем шаг h и введём обозначения:
xi = x0 + i.h и yi = y(xi) , где i = 0, 1, 2, …,
xi - узлы сетки,
yi- значение интегральной функции в узлах .
При использовании модифицированного метода Эйлера шаг h делится на два отрезка.
Иллюстрации к решению приведены на рисунке 4.
Размещено на http://www.allbest.ru/
Рисунок 4. Метод Эйлера модифицированный.
Проведем решение в несколько этапов.
1. Обозначим точки: A(xi, yi), C(xi+h/2, yi+h/2*f(xi,yi)) и B(xi+1, yi+1).
2. Через точку А проведем прямую под углом б, где
3. На этой прямой найдем точку C(xi+h/2, yi+h/2*f(xi,yi)).
4. Через точку С проведем прямую под углом б1, где
5. Через точку А проведем прямую, параллельную последней прямой.
6. Найдем точку В(xi+1, yi+1). Будем считать В(xi+1, yi+1) решением дифференциального уравнения при x=xi+1.
7. После проведения вычислений, аналогичных вычислениям, описанным в методе Эйлера, получим формулу для определения значения yi+1:
.
Модифицированный метод Эйлера дает меньшую погрешность. На рисунке 4 это хорошо видно. Так величина е1 характеризует погрешность метода Эйлера, а е - погрешность метода Эйлера модифицированного.
3. Решение задачи в MathCad
4. Алгоритм решения задачи
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Заключение
Выполняя курсовую работу, я решила данное мне дифференциальное уравнение и с помощью численных методов (Рунге-Кутта и Эйлера модифицированного) и общего решения построила графики их решения в программе Microsoft Visual Basic 6.0.
Как и следовало ожидать графики, построенные с помощью метода Эйлера модифицированного и Рунге-Кутта, полностью совпали с графиком точного решения.
Точность методов достаточно высока, следовательно, их можно применять в ситуации, когда нет возможности вычислить интеграл, и получить ответ с незначительной погрешностью.
Приложение
Код программы
Dim x(50) As Single
Dim y(50) As Single
Dim y1(50) As Single
Dim y2(50) As Single
Private y0 As Single
Private x0 As Single
Private xk As Single
Function f(l As Single, q As Single) As Single
f = (3 * q) / l
End Function
Private Sub Command1_Click()
x0 = Val(Text1.Text)
xk = Val(Text2.Text)
y0 = Val(Text4.Text)
h = Val(Text3.Text)
N = Round((xk - x0) / h)
MSFlexGrid1.Rows = N + 2
MSFlexGrid1.TextMatrix(0, 0) = "X"
MSFlexGrid1.TextMatrix(0, 1) = "Y1"
MSFlexGrid1.TextMatrix(0, 2) = "Y2"
MSFlexGrid1.TextMatrix(0, 3) = "Yt"
Max = 2.4
Min = 3.1
y(0) = y0
y1(0) = y0
y2(0) = y0
For i = 0 To N
x(i) = x0 + i * h
y(i + 1) = Round(y(i) + f(x(i), y(i)) * h, 4)
y1(i + 1) = Round(y1(i) + f(x(i) + h / 2, y1(i) + h / 2 * f(x(i), y1(i))) * h, 4)
y2(i) = Round((2 * (x(i)) ^ 3), 4)
If y(i) > Max Then Max = y(i)
If y(i) < Min Then Min = y(i)
MSFlexGrid1.TextMatrix(i + 1, 0) = Str(x(i))
MSFlexGrid1.TextMatrix(i + 1, 1) = Str(y(i))
MSFlexGrid1.TextMatrix(i + 1, 2) = Str(y1(i))
MSFlexGrid1.TextMatrix(i + 1, 3) = Str(y2(i))
Next i
Picture1.Cls
kx = (Picture1.Width - 1400) / (xk - x0)
ky = (Picture1.Height - 1500) / (Max - Min)
Label4.Caption = Str(Min)
Label5.Caption = Str(Max)
Label6.Caption = Str(x0)
Label7.Caption = Str(xk)
For i = 0 To N - 1
z1 = Round(720 + (x(i) - x0) * kx)
z2 = Round(5400 - (y(i) - Min) * ky)
z3 = Round(5400 - (y1(i) - Min) * ky)
z4 = Round(5400 - (y2(i) - Min) * ky)
z5 = Round(720 + (x(i + 1) - x0) * kx)
z6 = Round(5400 - (y(i + 1) - Min) * ky)
z7 = Round(5400 - (y1(i + 1) - Min) * ky)
z8 = Round(5400 - (y2(i + 1) - Min) * ky)
Picture1.Line (z1, z2)-(z5, z6), vbGreen
Picture1.Line (z1, z3)-(z5, z7), vbWhite
Picture1.Line (z1, z4)-(z5, z8), vbYellow
Next i
End Sub
Private Sub Command2_Click()
End
End Sub
Размещено на Allbest.ru
Подобные документы
Численный метод для решения однородного дифференциального уравнения первого порядка методом Эйлера. Решение систем дифференциальных уравнений методом Рунге–Кутта. Решение краевой задачи. Уравнения параболического типа, а также Лапласа и Пуассона.
курсовая работа [163,5 K], добавлен 27.05.2013Анализ предметной области объектно-ориентированного программирования. Языки Delphi, Object Pascal - объектно-ориентированная среда программирования. Основные алгоритмические решения. Решение дифференциального уравнения методом Рунге-Кутта в среде Excel.
курсовая работа [1,5 M], добавлен 02.04.2011Математическое описание задачи решения обыкновенного дифференциального уравнения численным явным методом Рунге-Кутта, разработка схемы алгоритма и написание программы в среде программирования Microsoft Visual Studio 2010. Тестирование работы программы.
курсовая работа [1,1 M], добавлен 22.01.2014Численные решения задач методом Коши, Эйлера, Эйлера (модифицированный метод), Рунге Кутта. Алгоритм, форма подпрограммы и листинг программы. Решение задачи в MathCad. Подпрограмма общего решения, поиск максимальных значений. Геометрический смысл задачи.
курсовая работа [691,4 K], добавлен 17.05.2011Рассмотрение двух методов нахождения приближенного корня дифференциального уравнения, применение их на практике. Графическая интерпретация метода Эйлера. Решение задачи усовершенствованным методом Эйлера. Программная реализация, блок-схемы и алгоритм.
курсовая работа [246,8 K], добавлен 17.06.2013Численное решение задачи Коши для обыкновенного дифференциального уравнения первого и второго порядка методом Эйлера и Рунге-Кутты и краевой задачи для ОДУ второго порядка с применением пакета MathCad, электронной таблицы Excel и программы Visual Basic.
курсовая работа [476,2 K], добавлен 14.02.2016Математическая модель, описание теории, применяемой к задаче. Обсчет точек методом Рунге-Кутта, модифицированным методом Эйлера, схема и листинг программы. Решение дифференциальных уравнений и построение графиков, решение уравнений в среде Turbo Pascal.
курсовая работа [76,7 K], добавлен 18.11.2009Решение дифференциального уравнения N-го порядка методом интегрирования при помощи характеристического уравнения, методом интегрирования и операторным методом для значений аргументов при заданных начальных условиях и нулевых уравнения 4–го порядка.
практическая работа [806,9 K], добавлен 05.12.2009Обзор методов решения в Excel. Рекурентные формулы метода Эйлера. Метод Рунге-Кутта четвертого порядка для решения уравнения первого порядка. Метод Эйлера с шагом h/2. Решение дифференциальных уравнений с помощью Mathcad. Модифицированный метод Эйлера.
курсовая работа [580,1 K], добавлен 18.01.2011Составление программы на алгоритмическом языке Turbo Pascal. Разработка блок-схемы алгоритма её решения. Составление исходной Pascal-программы и реализация вычислений по составленной программе. Применение методов Рунге-Кутта и Рунге-Кутта-Мерсона.
курсовая работа [385,0 K], добавлен 17.09.2009