Визуализация численных методов

Численные решения задач методом Коши, Эйлера, Эйлера (модифицированный метод), Рунге Кутта. Алгоритм, форма подпрограммы и листинг программы. Решение задачи в MathCad. Подпрограмма общего решения, поиск максимальных значений. Геометрический смысл задачи.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 17.05.2011
Размер файла 691,4 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещенно на http://www.allbest.ru

Размещенно на http://www.allbest.ru

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

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

Выполнил:

студент гр.: ВЕ-01б

Хакимов А.Х.

Екатеринбург 2011г.

Содержание:

Введение

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

2. Описание методов решения

2.1 Суть задачи

2.2 Геометрический смысл задачи

2.3 Численные методы решения задачи Коши

2.4 Метод Эйлера

2.5 Метод Эйлера модифицированный

2.6 Метод Рунге-Кутта 4-го порядка

2.7 Решение поставленной задачи методами Эйлера и Эйлера модифицированного

2.7.1 Метод Эйлера

2.7.2 Метод Эйлера модифицированный

3. Алгоритм решения задачи

3.1 Алгоритмы подпрограмм

3.1.1 Подпрограмма метода Эйлера

3.1.2 Подпрограмма метода Эйлера модифицированного

3.1.3 Подпрограмма общего решения и поиска максимальных значений x и y

3.2 Алгоритм функции

3.3 Алгоритм программы

4. Форма программы

5. Листинг программы

6. Решение задачи в MathCad

Заключение

Введение

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

Целью данной курсовой работы является решение дифференциального уравнения двумя численными методами: методом Эйлера и методом Рунге-Кутта 4 порядка точности.

Для достижения цели я поставил перед собой следующие задачи:

· Написать программу для решения данного дифференциального уравнения двумя численными методами в программе Visual Basic.

· Проверить решение с помощью приложения MathCad.

· Сравнить полученные разными методами результаты с общим решением.

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

Решить методами Эйлера и Эйлера модифицированного задачу Коши для дифференциального уравнения 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)

листинг mathcad алгоритм программа

Где Y(1), Y(2) - решения, полученные различными численными методами, YT - точное решение дифференциального уравнения.

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

Данные таблицы визуализировать на форме в виде графиков.

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

Дифференциальное уравнение

X0

Xk

h

Y0

Общее решение

y' *(x+1)=y+2

0

0,8

0,1

0

y=(x+1)*c-2

2. Описание методов решения

2. 1 Суть задачи

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

Задачу Коши можно сформулировать следующим образом:

Пусть дано дифференциальное уравнение

и начальное условие

y(x0) = у0.

Требуется найти функцию у(x), удовлетворяющую как указанному уравнению, так и начальному условию.

Численное решение задачи Коши сводится к табулированию искомой функции.

График решения дифференциального уравнения называется интегральной кривой.

2. 2 Геометрический смысл задачи.

y' = f(x,y)

Тангенс угла наклона касательной к графику решения в точке (х, у) к оси 0Х, - угловой коэффициент (рис. 1).

Размещенно на http://www.allbest.ru

Размещенно на http://www.allbest.ru

Рисунок 1. Геометрический смысл задачи Коши

Существование решения:

Если правая часть f(x, y) непрерывна в некоторой области R, определяемой неравенствами

|x-x0| < а; |y-y0| < b,

то существует, по меньшей мере, одно решение у = у(х),определённое в окрестности

|х - х0| < h,

где h - положительное число.

Это решение единственно, если в R выполнено условие Липшица

|f(x,y)-f(x,y)| ?N|y-y|(x,y),

где N - некоторая постоянная (константа Липшица), зависящая, в общем случае, от а и b. Если f(x, у) имеет ограниченную производную

f'y(x, y) в R,

то можно положить

N = мах |f'y(х, у)| при (х, y) принадлежащим R.

2. 3 Численные методы решения задачи Коши

При использовании численных методов выполняется замена отрезка

[х0,X] - области непрерывного изменения аргумента х множеством .

Состоящего из конечного числа точек х0 < х1 < ... < xn = Х - сеткой.

При этом xi называют узлами сетки.

Во многих методах используются равномерные сетки с шагом:

Задача Коши, определённая ранее на непрерывном отрезке [х0, X], заменяется её дискретным аналогом - системой уравнений, решая которую можно последовательно найти значения y1, y2,…,yn - приближённые значения функции в узлах сетки.

Численное решение задачи Коши широко применяется в различных областях науки и техники, и число разработанных для него методов достаточно велико. Эти методы могут быть разделены на следующие группы.

Одношаговые методы, в которых для нахождения следующей точки на кривой

у = f(x)

Требуется информация лишь об одном предыдущем шаге. Одношаговыми являются метод Эйлера и методы Рунге - Кутта.

Методы прогноза и коррекции (многошаговые), в которых для отыскания следующей точки кривой

у = f(x)

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

Явные методы, в которых функция Ф не зависит от:

yn+1.

Неявные методы, в которых функция Ф зависит от:

yn+1.

2. 4 Метод Эйлера

Иногда этот метод называют методом Рунге-Кутта первого порядка точности.

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

Пусть дано дифференциальное уравнение первого порядка:

Y' = f(x, y)

с начальным условием

y(x0) = y0

Выберем шаг h и введём обозначения:

xi = х0 + ih и yi = y(xi), где i = 0, 1, 2,...,

xi - узлы сетки,

yi - значение интегральной функции в узлах.

Иллюстрации к решению приведены на рисунке 2.

Проведем прямую АВ через точку (xi, yi) под углом б. При этом:

tg б = f(xi, yi)

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

Произведем замену точки интегральной функции точкой, лежащей на касательной АВ.

Тогда yi+1 = yi + Дy

Из прямоугольного треугольника ABC

Приравняем правые части tg б = f(xi, yi) и .

Получим

Отсюда Ду = h • f(xi, yi).

Подставим в это выражение формулу:

yi+1 = yi + Дy,

а затем преобразуем его. В результате получаем формулу расчета очередной точки интегральной функции:

.

Размещенно на http://www.allbest.ru

Размещенно на http://www.allbest.ru

Рисунок 2. Метод Эйлера

Из формулы:

,

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

Блок-схема процедуры решения дифференциального уравнения методом Эйлера приведена на рисунке 3.

F(x, у) - заданная функция - должнабыть описана отдельно.

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

Х0, XK--начальное и конечное значения независимой переменной;

Y0 - значение y0 из начального условия

y(x0) = y0;

N - количество отрезков разбиения;

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

У - массив значений искомого решения в узлах сетки.

Метод Эйлера - один из простейших методов численного решения обыкновенных дифференциальных уравнений. Но существенным его недостатком является большая погрешность вычислений. На рисунке 2 погрешность вычислений для i-гo шага обозначена е. С каждым шагом погрешность вычислений увеличивается.

2.5 Метод Эйлера модифицированный

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

Пусть дано дифференциальное уравнение первого порядка

с начальным условием:

Выберем шаг h и введём обозначения:

xi = x0 + ih и yi = y(xi), где i = 0, 1, 2,...,

xi - узлы сетки,

yi - значение интегральной функции в узлах.

При использовании модифицированного метода Эйлера шаг h делится на два отрезка.

Иллюстрации к решению приведены на рисунке 4.

Размещенно на http://www.allbest.ru

Размещенно на http://www.allbest.ru

Рисунок 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;

После проведения вычислений, аналогичных вычислениям, описанным в методе Эйлера, получим формулу для определения значения:

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 - количество отрезков разбиения;

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

Y - массив значений искомого решения

в узлах сетки.

Рисунок 5. Блок-схема процедуры решения дифференциального уравнения методом Эйлера модифицированным.

2.6 Метод Рунге-Кутта 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 порядка точности.

F(x, у) - заданная функция - должна быть описана отдельно.

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

Х0, XК - начальное и конечное значения независимой переменной;

Y0 - значение y0 из начального условия y(x0)=y0;

N - количество отрезков разбиения;

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

Y - массив значений искомого решения в узлах сетки.

2.7 Решение поставленной задачи методами Эйлера и Рунге-Кутта

2.7.1 Метод Эйлера

1. Строим оси координат;

2. Отмечаем A(1; 2) - первую точку интегральной кривой;

3. Ищем угол наклона касательной к графику в точке A:

4. Строим касательную l0 в точке А под углом б0;

5. Находим х1 по формуле:

xi = х0 + ih,

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

x1 = 1 + 1 · 0,1 = 1,1;

6. Проводим прямую

x = x1 = 1,1

до пересечения с прямой l0, отмечаем точку B(x1; y1);

7. Ищем y точки B: из прямоугольного треугольника ABC

,

Дy = y1 - y0,

Дx = x1 - x0 = h,

f(x0; y0) = (y1 - y0)/h =>

y1 = y0 + h (f(x0; y0)) = 0 + 0,1 · f(1;0) = 0 + 0,1 3 = 0,3

Следовательно, точка B имеет координаты (1,1; 0,3).

2.7.2 Метод Рунге-Кутта 4 порядка

1. Строим оси координат;

2. Отмечаем А(1; 2) - первую точку интегральной кривой;

3. Ищем угол наклона касательной к графику в точке A:

4. Строим касательную l0 в точке А под углом б0;

5. Находим х1 по формуле:

xi = х0 + ih

x1 = 1 + 1 0,05 = 1,05;

Находим по формулам:

k1=0,05·f(1,2)=0,05·8=0,4

k2=0,05· f(1+0,05/2;2+0,4/2)=0,429

k3=0,05· f(1+0,05/2;2+0,1/2)=0,432

k4=0,05· f(1+0,05;2+0,1)=0,463

?y1=(0,4+2·0,429+2·0,432+0,463)/6=0,431

?y2=2+0,431=2,431

Следовательно, следующая точка графика решения имеет координаты (1,05;2,431)

3. Алгоритм решения задачи

3.1 Алгоритмы подпрограмм

3.1.1 Подпрограмма метода Эйлера

Размещенно на http://www.allbest.ru

Размещенно на http://www.allbest.ru

3.1.2 Подпрограмма метода Рунге-Кутта 4 порядка

Размещенно на http://www.allbest.ru

Размещенно на http://www.allbest.ru

3.1.3 Подпрограмма общего решения

Размещенно на http://www.allbest.ru

Размещенно на http://www.allbest.ru

Размещенно на http://www.allbest.ru

Размещенно на http://www.allbest.ru

3. 2 Алгоритм функции

Размещенно на http://www.allbest.ru

Размещенно на http://www.allbest.ru

3. 3 Алгоритм программы

Размещенно на http://www.allbest.ru

Размещенно на http://www.allbest.ru

Размещенно на http://www.allbest.ru

Размещенно на http://www.allbest.ru

4. Форма программы

5. Листинг программы

Rem Описание переменных

Dim x(), y(), Ei(), Run(), Ob() As Single

Private n, i As Integer

Private x0, xk, y0, h, minx, maxx, miny, maxy As Single

Rem Описание функции

Function f(a, b) As Single

f = b * (1 / Tan(a))

End Function

Rem Метод Эйлера

Private Sub Eiler()

ReDim x(n + 1)

ReDim Ei(n + 1)

Ei(0) = y0

For i = 0 To n

x(i) = Round(x0 + (i * h), 4)

Ei(i + 1) = Round(Ei(i) + h * f(x(i), Ei(i)), 4)

Next i

End Sub

Rem Метод Рунге-кутта

Private Sub RungeKutta()

ReDim x(n + 1)

ReDim Run(n + 1)

Run(0) = y0

For i = 0 To n

x(i) = Round(x0 + i * h, 4)

k1 = h * f(x(i), Run(i))

k2 = h * f(x(i) + (h / 2), Run(i) + (k1 / 2))

k3 = h * f(x(i) + (h / 2), Run(i) + (k2 / 2))

k4 = h * f(x(i) + h, Run(i) + k3)

k = (k1 + 2 * k2 + 2 * k3 + k4) / 6

Run(i + 1) = Round(Run(i) + k, 4)

Next i

End Sub

Rem Общее решение

Private Sub obhee()

ReDim x(n + 1)

ReDim Ob(n + 1)

For i = 0 To n

x(i) = Round(x0 + i * h, 4)

Ob(i) = Round(Sin(x(i)), 4)

Next i

End Sub

Private Sub Command1_Click()

Rem Ввод данных

x0 = Val(Text1.Text)

y0 = Val(Text2.Text)

xk = Val(Text3.Text)

h = Val(Text4.Text)

Rem расчет количества строк в таблице

n = Round((xk - x0) / h)

MSFlexGrid1.Cols = 4

MSFlexGrid1.Rows = n + 2

Rem Подписи заголовков страницы

MSFlexGrid1.TextMatrix(0, 0) = "x"

MSFlexGrid1.TextMatrix(0, 1) = "Общее рещение"

MSFlexGrid1.TextMatrix(0, 2) = "Эйлер"

MSFlexGrid1.TextMatrix(0, 3) = "Рунге-Кутт"

Rem Формирование массивов и поиск экстремумов

Eiler

RungeKutta

Obhee

maxy = y0

miny = y0

maxx = x0

minx = x0

For i = 0 To n

minx = x(0)

maxx = x(n)

miny = Ob(0)

maxy = Ob(n)

If Ei(n) > Ob(n) Then maxy = Ei(n)

If Run(n) > Ob(n) Then maxy = Run(n)

If Ei(n) > Run(n) Then maxy = Ei(n)

MSFlexGrid1.TextMatrix(i + 1, 0) = Str(x(i))

MSFlexGrid1.TextMatrix(i + 1, 1) = Str(Ob(i))

MSFlexGrid1.TextMatrix(i + 1, 2) = Str(Ei(i))

MSFlexGrid1.TextMatrix(i + 1, 3) = Str(Run(i))

Next i

Rem очистка картинки

Picture1.Cls

Rem Расчет коэффициентов масштабирования

kx = (Picture1.Width - 1200) / (xk - x0)

ky = (Picture1.Height - 1000) / (maxy - miny)

Rem Запись значений экстремумов на шаблон графика

Label16.Caption = Str(miny)

Label15.Caption = Str(maxy)

Label17.Caption = Str(minx)

Label18.Caption = Str(maxx)

Rem Расчет экранных координат, построение графика и определение цвета

For i = 0 To n - 1

z1 = Round(720 + (x(i) - x0) * kx)

z2 = Round(5400 - (Ei(i) - miny) * ky)

z3 = Round(720 + (x(i + 1) - x0) * kx)

z4 = Round(5400 - (Ei(i + 1) - miny) * ky)

Picture1.Line (z1, z2)-(z3, z4), RGB(0, 0, 9999)

Next i

For i = 0 To n - 1

z1 = Round(720 + (x(i) - x0) * kx)

z2 = Round(5400 - (Run(i) - miny) * ky)

z3 = Round(720 + (x(i + 1) - x0) * kx)

z4 = Round(5400 - (Run(i + 1) - miny) * ky)

Picture1.Line (z1, z2)-(z3, z4), RGB(0, 9999, 0)

Next i

For i = 0 To n - 1

z1 = Round(720 + (x(i) - x0) * kx)

z2 = Round(5400 - (Ob(i) - miny) * ky)

z3 = Round(720 + (x(i + 1) - x0) * kx)

z4 = Round(5400 - (Ob(i + 1) - miny) * ky)

Picture1.Line (z1, z2)-(z3, z4), RGB(9999, 0, 0)

Next i

End Sub

6. Решение задачи в MathCad

Метод Эйлера

Метод Эйлера IV порядка точности (Метод Рунге-Кутта)

Общее решение

Заключение

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

По завершению курсовой работы я выполнил все поставленные задачи: написал программу для решения данного дифференциального уравнения двумя численными методами в программе Visual Basic, проверил решение с помощью приложения MathCad,сравнил полученные разными методами результаты с общим решением. Поэтому я считаю, что полностью выполнил поставленное передо мной задание курсовой работы.

Размещено на Allbest.ru


Подобные документы

  • Обзор методов решения в Excel. Рекурентные формулы метода Эйлера. Метод Рунге-Кутта четвертого порядка для решения уравнения первого порядка. Метод Эйлера с шагом h/2. Решение дифференциальных уравнений с помощью Mathcad. Модифицированный метод Эйлера.

    курсовая работа [580,1 K], добавлен 18.01.2011

  • Численные методы решения задачи Коши для обыкновенных дифференциальных уравнений: Эйлера, Рунге-Кутта, Адамса и Рунге. Техники приближенного решения данных уравнений: метод конечных разностей, разностной прогонки, коллокаций; анализ результатов.

    курсовая работа [532,9 K], добавлен 14.01.2014

  • Ручной расчет поставленной задачи методов Эйлера и Эйлера-Коши. Алгоритмы решения обоих методов, их программная реализация, решение тестовых примеров на заданную задачу. Расчеты заданного интеграла на языке программирования Turbo Pascal, их результаты.

    курсовая работа [404,7 K], добавлен 15.06.2013

  • Определение зависимости скорости вала двигателя от времени. Математическая модель решения задачи. Решение задачи Коши на интервале методом Эйлера и Рунге-Кутта четвертого порядка точности. Алгоритм решения задачи. Текст программы и результаты ее работы.

    контрольная работа [108,9 K], добавлен 08.03.2013

  • Численный метод для решения однородного дифференциального уравнения первого порядка методом Эйлера. Решение систем дифференциальных уравнений методом Рунге–Кутта. Решение краевой задачи. Уравнения параболического типа, а также Лапласа и Пуассона.

    курсовая работа [163,5 K], добавлен 27.05.2013

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

    методичка [85,2 K], добавлен 18.12.2014

  • Решение дифференциального уравнения с помощью численных методов (Рунге-Кутта и Эйлера модифицированного). Особенности построения графиков в программе Microsoft Visual Basic 10 с использованием ответа задачи, который имеет незначительную погрешность.

    курсовая работа [1017,3 K], добавлен 27.05.2013

  • Численное решение задачи Коши для обыкновенного дифференциального уравнения первого и второго порядка методом Эйлера и Рунге-Кутты и краевой задачи для ОДУ второго порядка с применением пакета MathCad, электронной таблицы Excel и программы Visual Basic.

    курсовая работа [476,2 K], добавлен 14.02.2016

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

    курсовая работа [246,8 K], добавлен 17.06.2013

  • Изучение численных методов решения нелинейных уравнений. Построение годографа АФЧХ, графиков АЧХ и ФЧХ с указанием частот. Практическое изучение численных методов интегрирования дифференциальных уравнений высокого порядка, метод Рунге-Кутта 5-го порядка.

    курсовая работа [398,3 K], добавлен 16.06.2009

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.