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

Вывод

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

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


 

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

23739. ОСТРЫЕ УГЛЫ МОЛОДЫХ СЕМЕЙ ИЛИ ШПАРГАЛКА ДЛЯ МОЛОДОЖЕНОВ 3.83 MB
  Книга Андрея Зберовского написана в традиционной для автора форме, где большая часть практических советов подана в увлекательной и живой форме, нередко с элементами юмора. Она адресована очень широкой читательской аудитории любых возрастных категорий, прежде всего – молодоженам!
23740. Степень числа 42 KB
  Сначала определяем значение степени а затем проходим произведение. – Найдите значение выражения: 5 23 – 362 81 : 32 . 3 1 2 4 9 7 5 6 8 12 11 10 5 23 – 362 81 : 32 = 5  2  2  2 – 36  5  2  2  2 – 36 81 : 3  3 – Проанализируйте каков порядок действий в нашем выражении Сначала находим значение степени в скобке затем значение произведения значение разности значение степени результата получившегося в скобках значение степени числа 3 значение...
23741. Степень числа 44 KB
  – При выполнении каких заданий мы можем получить произведение одинаковых множителей При разложении чисел на простые множители. – Что интересного вы можете сказать о полученном ряде чисел Все числа кратны 10. – Найдите НОК и НОД чисел а и b если: а = 23 3 52 b = 22 32 7. – Что необходимо сделать что бы выполнить задание Надо расписать степени чисел и применить известные алгоритмы – А можно ли выполнить задание не расписывая степени Этот вопрос может вызвать затруднение.
23742. Высказывания 228 KB
  – Назовите число из полученного ряда сумма цифр в котором равна 6. – Какое число данного ряда может быть лишним Например число 50 – двузначное а остальные – трехзначные. На сколько 150 больше 50 во сколько раз 150 больше 50 на сколько 50 меньше 150 – Придумайте числовые выражения частное в которых равно 3. – Найдите число которого равны 21.
23743. Взаимно простые числа 72.5 KB
  2 Тренировать способности к использованию: а понятий простого и составного числа; б признаков делимости на 2 5 10 3 9; в различных способов нахождения НОД; г алгоритмов объединения и пересечения множеств. На доске остаются числа: 375 164 2310 171. – Разложите получившиеся числа на простые множители.
23744. Делимость произведения 48.5 KB
  Делится ли на 37 число 555 555 555 555 − Сформулируйте в общем виде свойство делимости которое вы наблюдаете. Если первое число делится на второе число второе число делится на третье число то первое число делится на третье число. Докажите используя введение обозначений что если первое число делится на второе а второе делится на третье то и первое число делится на третье. Первое число a второе число b третье число c.
23745. Делимость произведения 48.5 KB
  – Что означает что число а делится на число b – Это означает что существует такое число с которое при умножении на b дает а. – И что – Можно заменить число 16 произведением 4 и 4 и получится произведение 4 4 а. Если ктолибо из учащихся по аналогии с предыдущим заданием верно найдет ответ последнего примера – число 555 то учитель просит его обосновать как выполнены действия. – А как можно разделить произведение на число – Разделить один множитель а потом полученный результат умножить на второй множитель.
23746. Делимость произведения 85.5 KB
  Делится ли: на 13 на 5 на 2 на10 – На 13 делится так как 39 делится на 13; на 5 не делится так как ни один из множителей не делится на 5; на 2 делится так как 356 кратно 2; на 10 не делится так как ни один из множителей не делится на 10.– Делится ли 225 на 3 если известно что 225 делится на 15 – Да делится т. 15 делится на3. Известно что: а 686 делится на 49.
23747. Делимость суммы и разности 45.5 KB
  Преобразуйте второе выражение используя распределительное свойство умножения. Для ответа на этот вопрос и для обоснования этого ответа учащиеся могут либо вычислить значения данных выражений либо воспользоваться распределительным свойством умножения. Всегда ли сумма и разность чисел кратных двум будут кратны двум А сумма и разность чисел кратных трем четырем пяти будут соответственно кратны трем четырем пяти Затем учитель предлагает учащимся обобщить наблюдаемое свойство: Сформулируйте гипотезу. Скажите с помощью...