Визуализация численных методов. Решение обыкновенных дифференциальных уравнений
Решение дифференциального уравнения с помощью численных методов (Рунге-Кутта и Эйлера модифицированного). Особенности построения графиков в программе Microsoft Visual Basic 10 с использованием ответа задачи, который имеет незначительную погрешность.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 27.05.2013 |
Размер файла | 1017,3 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
14
Размещено на http://www.allbest.ru/
Сибирский государственный университет телекоммуникации
и информатики
Уральский технический институт связи и информатики
Кафедра физики, прикладной математики и информатики.
Курсовая работа
по информатике
Визуализация численных методов.
Решение обыкновенных дифференциальных уравнений
Введение
дифференциальный уравнение программа
Информатика - это области человеческой деятельности, связанная с процессами преобразования информации с помощью компьютеров и их взаимодействием со средой применения.
Информатика в таком понимании нацелена на разработку общих методологических принципов построения информационных моделей. Поэтому методы информатики применимы по - всюду, где существует возможность описания объекта, явления, процесса и т.п. с помощью информационных моделей. Таким образом, информатика намного ускоряет решение математических задач.
Уравнения, связывающие независимую переменную, искомую функцию и её производные называют дифференциальным уравнением. Решение дифференциального уравнения называется функция, которая при подстановке в уравнение обращает его в тождество.
Цель и задача данной курсовой работы заключается в том чтобы рассчитать и научиться пользоваться несколькими способами решение дифференциального уравнения, добиться вывода графических изображений в программах используемых для этой работы.
1.Убедиться в том, что данные методы решений совпадают и сделать вывод о сходимости.
2.Проанализировать результаты, которые получатся в обоих методах
3.Также в соответствующих программах создать данные формы объекта
1. Постановка задачи
Чтобы решить обыкновенное дифференциальное уравнение, необходимо знать значения зависимой переменной и (или) её производных при некоторых значениях независимой переменной. Если эти дополнительные условия задаются при одном значении независимой переменной, то такая задача называется задачей с начальными условиями, или задачей Коши. Часто в задаче Коши в роли независимой переменной выступает время.
Задачу Коши можно сформулировать следующим образом.
Пусть дано дифференциальное уравнение
и начальное условие y(x0) = y0. Требуется найти функцию y(x), удовлетворяющую как указанному уравнению, так и начальному условию.
Численное решение задачи Коши сводится к табулированию искомой функции.
График решения дифференциального уравнения называется интегральной кривой.
Геометрический смысл задачи:
- тангенс угла наклона касательной к графику решения в точке (x, y) к оси ОХ, - угловой коэффициент (рис.1).
Существование решения:
Если правая часть f(x,y) непрерывна в некоторой области R, определяемой неравенствами
|x - x0| < a ; |y - y0| < b ,
то существует, по меньшей мере, одно решение y = y(x), определённое в окрестности |x - x0| < h, где h - положительное число.
Размещено на http://www.allbest.ru/
14
Размещено на http://www.allbest.ru/
Это решение единственно, если в R выполнено условие Липшица
где N - некоторая постоянная (константа Липшица), зависящая, в общем случае, от a и b. Если f(x, y)имеет ограниченную производную в R, то можно положить
N = max|| при .
Моя задача:
Решить методами Эйлера модифицированного и Рунге Кутта 4 порядка задачу Коши для дифференциального уравнения 1-го порядка на отрезке [X0; Xk] с шагом h и начальным условием: Y(X0) = Y0.
Ответ должен быть получен в виде таблицы результатов:
X |
Y(1) |
Y(2) |
YT |
|
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) - решения, полученные различными численными методами, YT - точное решение дифференциального уравнения.
Возможно представление результатов решения не в виде таблицы, а в виде списков.
Данные таблицы визуализировать на форме в виде графиков.
Перед вычислением последнего столбца таблицы результатов необходимо из начальных условий вычесть значение коэффициента c, используемого в общем решении.
Дифференциальное уравнение |
X0 |
Xk |
h |
Y0 |
Общее решение |
|
(x-y)dx+xdy=0 |
1 |
2 |
0,1 |
2 |
y = x(c-ln(x)) |
2. Описание методов решения
Чтобы решить обыкновенное дифференциальное уравнение, необходимо знать значения зависимой переменной и (или) её производных при некоторых значениях независимой переменной. Если эти дополнительные условия задаются при одном значении независимой переменной, то такая задача называется задачей с начальными условиями, или задачей Коши. Часто в задаче Коши в роли независимой переменной выступает время. Задачу Коши можно сформулировать следующим образом:
Пусть дано дифференциальное уравнение
и начальное условие y(x0) = у0. Требуется найти функцию у(x), удовлетворяющую как указанному уравнению, так и начальному условию.
Численное решение задачи Коши сводится к табулированию искомой функции. График решения дифференциального уравнения называется интегральной кривой.
3. Метод Эйлера модифицированный
Для уменьшения погрешности вычислений часто используется модифицированный метод Эйлера. Этот метод имеет так же следующие названия: метод Эйлера-Коши или метод Рунге-Кутта второго порядка точности.
Пусть дано дифференциальное уравнение первого порядка
с начальным условием:
Выберем шаг h и введём обозначения:
xi = x0 + ih и yi = y(xi),
где i = 0, 1, 2, ...,
xi - узлы сетки,
yi - значение интегральной функции в узлах.
При использовании модифицированного метода Эйлера шаг h делится на два отрезка.
Иллюстрации к решению приведены на рисунке 4.
Проведем решение в несколько этапов:
Обозначим точки: А(хi, yi,), C(xi + h/2, yi + h/2 • f(xi, yi)) и B(xi+1, yi+1);
Через точку А проведем прямую под углом б, где tg б = f(xi, yi);
На этой прямой найдем точку С(хi + h/2, yi + h/2 • f(xi, yi));
Через точку С проведем прямую под углом б1, где tg б1 = f(xi + h/2,yi + h/2 • f(xi, yi));
Через точку А проведем прямую, параллельную последней прямой;
Найдем точку B(xi+1, yi+1). Будем считать B(xi+1, yi+1) решением дифференциального уравнения при х = xi+1;
После проведения вычислений, аналогичных вычислениям, описанным в методе Эйлера, получим формулу для определения значения уi+1:
yi+1 = yi + h • f(xi + h/2, yi + h/2 • f(xi, yi)).
Модифицированный метод Эйлера дает меньшую погрешность. На рисунке 4 это хорошо видно. Так величина еl характеризует погрешность метода Эйлера, а е - погрешность метода Эйлера модифицированного.
Блок-схема процедуры решения дифференциального уравнения методом Эйлера модифицированным приведена на рисунке 5.
F(x, у) - заданная функция - должна
быть описана отдельно.
Входные параметры:Х0, XК - начальное и конечное
значения независимой
переменной;
Y0 - значение y0 из начального условия
y(x0)=y0;
N - количество отрезков разбиения;
Рисунок 4. Метод Эйлера модифицированный.
Выходные параметры:
Y - массив значений искомого решения
в узлах сетки.
Рисунок 5. Блок-схема процедуры решения дифференциального уравнения методом Эйлера модифицированным.
4. Метод Рунге-Кутта 4 порядка
Пусть дано дифференциальное уравнение первого порядка с начальным условием y(x0)=y0. Выберем шаг h и введем обозначения:
xi = x0 + ih и yi = y(xi), где i = 0, 1, 2, ... .
Аналогично описанному выше методу производится решение
дифференциального уравнения. Отличие состоит в делении шага на 4 части.
Согласно методу Рунге-Кутта четвертого порядка, последовательные значения yi искомой функции y определяются по формуле:
yi+1 = yi +?yi
где i = 0, 1, 2 ...
?y=(k1+2*k2+2*k3+k4)/6
a числа k1, k2 ,k3, k4 на каждом шаге вычисляются по формулам:
k1 = h*f(xi, yi )
k2 = f (xi +h/2, yi +k1 /2)*h
k3 = F(xi +h/2, yi +k2 /2)*h
k4 = F(xi +h, yi +k3 )*h
Это явный четырехэтапный метод 4 порядка точности.
Блок-схема процедуры решения дифференциального уравнения методом Рунге-Кутта приведена на рисунке 6.
F(x, у) - заданная функция - должна быть описана отдельно.
Входные параметры:
Х0, XК - начальное и конечное
значения независимой
переменной;
Y0 - значение y0 из начального условия
y(x0)=y0;
N - количество отрезков разбиения;
Выходные параметры:
Y - массив значений искомого решения
в узлах сетки.
Алгоритм решения задачи
Решение в MathCAD
Формы
Листинг программы на языке Visual Basic
Dim xr(), yr(), xe(), ye(), xo(), yo() As Single
Private x0, y0, h, xk, k1, k2, c, k3, k4, yd As Single
Private n, i As Integer
Public Function f(ByVal a, ByVal b) As Single
f = -(a - b) / a
End Function
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
x0 = Val(TextBox1.Text)
xk = Val(TextBox2.Text)
y0 = Val(TextBox4.Text)
h = Val(TextBox3.Text)
n = (xk - x0) / h
c = y0 / x0 + Math.Log(x0)
ReDim xr(n)
ReDim yr(n)
ReDim xe(n)
ReDim ye(n)
ReDim xo(n)
ReDim yo(n)
xr(0) = x0
yr(0) = y0
xe(0) = x0
ye(0) = y0
xo(0) = x0
yo(0) = y0
DataGridView1.ColumnCount = 4
DataGridView1.RowCount = n + 2
DataGridView1.Item(0, 0).Value = "x"
DataGridView1.Item(1, 0).Value = "Общее"
DataGridView1.Item(2, 0).Value = "Ейлер М"
DataGridView1.Item(3, 0).Value = "Рунге Кутт"
For i = 0 To n - 1
xe(i) = Math.Round((xe(0) + i * h), 2)
ye(i + 1) = ye(i) + h * f(xe(i) + h / 2, ye(i) + h / 2 * f(xe(i), ye(i)))
DataGridView1.Item(2, 1).Value = ye(0)
DataGridView1.Item(0, 1).Value = xe(0)
DataGridView1.Item(0, i + 1).Value = xe(i)
DataGridView1.Item(2, i + 1).Value = Str(ye(i))
Next
For i = 0 To n - 1
xr(i) = Math.Round((xe(0) + i * h), 2)
k1 = h * f(xr(i), yr(i))
k2 = h * f(xr(i) + h / 2, yr(i) + k1 / 2)
k3 = h * f(xr(i) + h / 2, yr(i) + k2 / 2)
k4 = h * f(xr(i) + h, yr(i) + k3)
yd = (k1 + 2 * k2 + 2 * k3 + k4) / 6
yr(i + 1) = yr(i) + yd
DataGridView1.Item(3, 1).Value = yr(0)
DataGridView1.Item(3, i + 1).Value = Str(yr(i))
Next
For i = 0 To n - 1
xo(i) = Math.Round((xe(0) + i * h), 2)
yo(i) = xo(i) * (c - Math.Log(xo(i)))
DataGridView1.Item(1, 1).Value = yo(0)
DataGridView1.Item(1, i + 1).Value = Str(yo(i))
Next
Chart1.Series.Add("Общее решение")
Chart1.Series("Общее решение").ChartType = SeriesChartType.Line
For i = 0 To n - 1
Chart1.Series("Общее решение").Points.AddXY(xo(i), yo(i))
Chart1.Series("Общее решение").ChartArea = "ChartArea1"
Next i
Chart1.Series.Add("Эйлер М")
Chart1.Series("Эйлер М").ChartType = SeriesChartType.Point
For i = 0 To n - 1
Chart1.Series("Эйлер М").Points.AddXY(xe(i), ye(i))
Chart1.Series("Эйлер М").ChartArea = "ChartArea1"
Chart1.Series("Эйлер М").Color = Color.Blue
Next i
Chart1.Series.Add("Рунге Кутт")
Chart1.Series("Рунге Кутт").ChartType = SeriesChartType.Line
For i = 0 To n - 1
Chart1.Series("Рунге Кутт").Points.AddXY(xr(i), yr(i))
Chart1.Series("Рунге Кутт").ChartArea = "ChartArea1"
Chart1.Series("Рунге Кутт").Color = Color.Green
Next i
End Sub
Заключение
Выполняя курсовую работу, я решил данное мне дифференциальное уравнение с помощью численных методов (Рунге-Кутта и Эйлера модифицированного) и общего решения построил графики их решения в программе Microsoft Visual Basic 10. Как и следовало ожидать графики, построенные с помощью метода Эйлера модифицированного и Рунге-Кутта, полностью совпали с графиком точного решения. Точность методов достаточно высока, следовательно, их можно применять в ситуации, когда нет возможности вычислить интеграл, и получить ответ с незначительной погрешностью.
Список литературы
1. Минина Е.Е. Информатика: методические указания для курсовой работы для студентов очной формы обучения. Екатеринбург: УрТИСИ ГОУ ВПО «СибГУТИ».
2. http://msdn.microsoft.com/ru-ru/library/
Размещено на Allbest.ru
Подобные документы
Решение дифференциальных уравнений с использованием классических алгоритмов численных методов Эйлера и Рунге-Кутта 4-го порядка. Команды, используемые при решении обыкновенных дифференциальных уравнений в системе вычислений. Результат работы программы.
курсовая работа [226,6 K], добавлен 05.04.2013Изучение численных методов решения нелинейных уравнений. Построение годографа АФЧХ, графиков АЧХ и ФЧХ с указанием частот. Практическое изучение численных методов интегрирования дифференциальных уравнений высокого порядка, метод Рунге-Кутта 5-го порядка.
курсовая работа [398,3 K], добавлен 16.06.2009Обзор методов решения в Excel. Рекурентные формулы метода Эйлера. Метод Рунге-Кутта четвертого порядка для решения уравнения первого порядка. Метод Эйлера с шагом h/2. Решение дифференциальных уравнений с помощью Mathcad. Модифицированный метод Эйлера.
курсовая работа [580,1 K], добавлен 18.01.2011Математическое описание численных методов решения уравнения, построение графика функции. Cтруктурная схема алгоритма с использованием метода дихотомии. Использование численных методов решения дифференциальных уравнений, составление листинга программы.
курсовая работа [984,2 K], добавлен 19.12.2009Численные решения задач методом Коши, Эйлера, Эйлера (модифицированный метод), Рунге Кутта. Алгоритм, форма подпрограммы и листинг программы. Решение задачи в MathCad. Подпрограмма общего решения, поиск максимальных значений. Геометрический смысл задачи.
курсовая работа [691,4 K], добавлен 17.05.2011Численный метод для решения однородного дифференциального уравнения первого порядка методом Эйлера. Решение систем дифференциальных уравнений методом Рунге–Кутта. Решение краевой задачи. Уравнения параболического типа, а также Лапласа и Пуассона.
курсовая работа [163,5 K], добавлен 27.05.2013Анализ методов объектно-ориентированного программирования на примере численных. Детальная характеристика модулей и связь их в одну общую программу. Принципы интегрирования по общей формуле трапеции и решение дифференциального уравнения методом Эйлера.
курсовая работа [511,6 K], добавлен 25.03.2015Опытное исследование свойств методов Рунге-Кутты. Реализация численных методов приближенного интегрирования обыкновенных дифференциальных уравнений, наиболее часто применяющихся в практике моделирования и проектирования систем автоматизации и управления.
курсовая работа [311,5 K], добавлен 05.03.2009Решение системы обыкновенных дифференциальных уравнений в программе Matlab. Применение метода Рунге–Кутты. Априорный выбор шага интегрирования. Построение трехмерного графика движения точки в декартовой системе координат и создание видеофайла формата AVI.
контрольная работа [602,8 K], добавлен 04.05.2015Математическая модель, описание теории, применяемой к задаче. Обсчет точек методом Рунге-Кутта, модифицированным методом Эйлера, схема и листинг программы. Решение дифференциальных уравнений и построение графиков, решение уравнений в среде Turbo Pascal.
курсовая работа [76,7 K], добавлен 18.11.2009