30074

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

Книга

Информатика, кибернетика и программирование

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

Русский

2016-09-14

1.2 MB

3 чел.

Федеральное агентство связи

ГОУ ВПО «Сибирский государственный университет

Телекоммуникаций и информатики»

Уральский технический институт связи и информатики (филиал)

Курсовая работа по информатике

на тему

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

Выполнил студент гр. СЕ-81 Бахвалов Н.А.

Проверил: Тюпина О.М.

Екатеринбург 2009

Содержание

Введение

1. Постановка задачи и математическая модель

2. Описание используемых методов

           2.1. Метод Эйлера

2.2.  Метод Ренге-Кутта

3. Блок-схемы основных процедур

           3.1. Блок-схема основной процедуры

           3.2. Блок-схема  функции

4. Виды формы проекта

4.1.Исходный вид для ввода данных

           4.2.Итоговый вид с предоставленным решением и графиком

5. Листинг программы на языке Visual Basic

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

Вывод


Введение

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

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

   Целью данной курсовой работы по теме «Визуализация численных методов» является решение дифференциального уравнения 1-го порядка x*y*dy+(x+1)=0 на отрезке [1.2;2] методом Эйлера и методом Рунге-Кутта четвёртого порядка точности. Выполнив все расчёты выяснить, какой из методов более точный, сравнив выведенные значения с общим решением.

  Курсовая работа должно состоять из: программы, написанной в Visual Basic, которая решает дифференциальное уравнение и выводит решения уравнения, полученные методом Эйлера и методом Рунге-Кутта четвёртого порядка точности. И визуализирует их на графике в виде линий (кривой, прямой); пояснительной записки, которая описывает методы решения и программу.


1. Постановка задачи и математическая модель

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

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

Математическая модель

Дано:

дифференциальное уравнение: x*y*dy+(x+1)=0

общее решение: y=c*(x+1)*exp(-x)

x0 =1.2

xk =2

h =0.1

y0 =1

Найти:

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


2. Описание используемых методов

2.1. Метод Эйлера.

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

Пусть дано дифференциальное уравнение первого порядка
у’ = f(х,у)

с начальным условием
у(х0)= у0.

Выберем шаг h и введём обозначения:
хi=х0+*hi и yi=y(xi),

где i=0,1,2,…
xi— узлы сетки,
yi значение интегральной функции в узлах -

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

Проведем прямую АВ через точку (х,у) под углом а. При этом = tga=f(х,у)

В соответствии с геометрическим смыслом задачи, прямая АВ является касательной к интегральной функции. Произведем замену точки интегральной функции точкой, лежащей на касательной АВ.
Тогда
y(i+1)=yiy

Из прямоугольного треугольника АВС tgа = Δy/h

Приравняем правые части. Получим    Δy/h=f(x,y)

Отсюда  Δ у = h*f(x,y)

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

y(i+1)=yi+h*f(xi,yi)

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

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

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

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

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

YО — значение у0 из начального условия у(хо)=у0

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

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

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

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

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

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

Для большего уменьшения погрешности используется метод Рунге-Кутта четвёртого порядка точности (метод Рунге-Кутта).

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

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

Выберем шаг =0,1 и введём обозначения:

и , где  =0,1,2…,

                               -узлы сетки,

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

 

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

, где

,

А числа    на каждом шаге вычисляются по формулам:

 

   Это явный четырёхэтапный метод четвёртого порядка точности.

   Метод Рунге-Кутта даёт погрешность меньше, чем методы Эйлера и Эйлера модифицированного.

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


3. Блок-схемы основных процедур

3.1. Блок-схема основной процедуры.

3.2. Блок-схема  функции.


4. Виды формы проекта

    4.1. Исходный вид для ввода данных.

     4.2. Итоговый вид с предоставленным решением и графиком.


5. Листинг программы на языке Visual Basic

Dim x(50) As Single, y(50) As Single, m(50) As Single, s(50) As Single

Private x0 As Single

Private xk As Single

Dim n As Integer

Dim k1, k2, k3, k4, y0, h As Single

Function f(t, p As Single) As Single

f = t * p / (t + 1)

End Function

Private Sub Command1_Click()

MSFlexGrid1.Visible = True

Picture1.Visible = True

x0 = Val(Text1.Text)

xk = Val(Text2.Text)

h = Val(Text3.Text)

y0 = Val(Text4.Text)

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

c = y0 / ((x0 + 1) * Exp(-x0))

MSFlexGrid1.Rows = n + 2

MSFlexGrid1.Cols = 4

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

MSFlexGrid1.TextMatrix(0, 1) = "Y-(T)"

MSFlexGrid1.TextMatrix(0, 2) = "Y-(R-K)"

MSFlexGrid1.TextMatrix(0, 3) = "Y-(E)"

Max = 0

Min = x0

y(i) = y0

s(i) = y0

For i = 0 To n

x(i) = x0 + i * h

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

m(i) = x(i) * y(i) / (x(i) + 1)

m(i) = Round(m(i), 7)

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

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

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

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

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

y(i + 1) = y(i) + (k1 + 2 * k2 + 2 * k3 + k4) / 6

y(i) = Round(y(i), 4)

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

s(i + 1) = s(i) + h * f(x(i), s(i))

s(i) = Round(s(i), 7)

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

If m(i) > Max Then Max = m(i)

If m(i) < Min Then Min = m(i)

Next i

Picture1.Cls

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

ky1 = (Picture1.Height - 1000) / (Max - Min)

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

ky2 = (Picture1.Height - 1000) / (Max - Min)

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

ky3 = (Picture1.Height - 1000) / (Max - Min)

Label5.Caption = Str(Max)

Label6.Caption = Str(Min)

Label7.Caption = Str(x0)

Label8.Caption = Str(xk)

For i = 1 To n - 1

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

z2 = Round(7400 - (m(i) - Min) * ky1)

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

z4 = Round(7400 - (m(i + 1) - Min) * ky1)

Picture1.Line (z1, z2)-(z3, z4), vbGreen

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

z2 = Round(13100 - (y(i) - Min) * ky2)

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

z4 = Round(13100 - (y(i + 1) - Min) * ky2)

Picture1.Line (z1, z2)-(z3, z4), vbRed

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

z2 = Round(13100 - (s(i) - Min) * ky3)

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

z4 = Round(13100 - (s(i + 1) - Min) * ky3)

Picture1.Line (z1, z2)-(z3, z4), vbYellow

Next i

End Sub

Private Sub Command2_Click()

End

End Sub

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

Вывод

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

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


 

А также другие работы, которые могут Вас заинтересовать

46011. Виды и источники маркетинговой информации. Методы сбора информации 59 KB
  Основа работы специалиста-маркетолога – это умение собрать, проанализировать, систематизировать информацию о рынке, превратить ее в знание тенденции развития рынка, а затем в систему мероприятий, воздействующих на рынок.
46016. Регіональна сертифікація в Європейських країнах (ЄС) 1.4 MB
  Обов’язки європейських країн-учасниць були орієнтовані на втілення в життя «чотирьох свобод»: вільне переміщення людей, вільне переміщення товарів, вільне переміщення послуг, вільне переміщення капіталу, що вимагало дотримання низки умов.