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

Вывод

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

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


 

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

57999. Фізична та соціальна складова здоров’я. Інноваційний інтегрований урок з основ здоров’я та фізичної культури 973 KB
  Мета: Формувати позитивну мотивацію щодо здорового способу життя культури здоров’я; поліпшувати репродуктивне здоров’я дітей та підлітків; своєчасне попередження вживання шкідливих звичок серед молоді; підвищення особистісного і творчого потенціалу учнів їх прагнення до самореалізації життєвого успіху...
58000. Форматування тексту 55 KB
  Мета уроку: знайомити учнів з поняттям форматування та видами Форматування; Вчити використовувати засоби форматування тексту, Застосовувати кнопки панелі інструментів та нестандартні символи при оформлені текстів; розвивати абстрактне мислення, творчий підхід до ство рення документів.
58001. ФОРМУЛИ СКОРОЧЕНОГО МНОЖЕННЯ 151.5 KB
  Вчитель відкриває на ІАД правильні відповіді які до цього момента були приховані. Вчитель викликає до дошки по черзі чотирьох учнів кожен з яких за допомогою стрілок з’єднує записи завдань із записами правильних рішень.
58002. Freizeit. Вільний час 4.64 MB
  Мета: Тренувати учнів у вживанні нової лексики: die Freizeit, das Spiel, spielen, der Fussball, der Volleyball, der Federball, fernsehen, der Basketball, das Klavier, rauchen, der Rad, schwimmen, skaten, stricken, hören, die Musik, fahren, lesen, tanzen, nähen, backen, tauchen.
58003. Freizeit und Hobbys 93.5 KB
  Мета: Активізувати вживання вивчених ЛО до теми “Freizeit”. Навчати учнів вести бесіду, працювати у парах та групах. Повторити граматичний матеріал Модальні дієслова. Удосконалювати навички говоріння,читання,письма, аудіювання.
58004. Загальні відомості про функції. Класифікація функцій 299.5 KB
  Загальні відомості про функції. Навчити студентів застосовувати стандартні та функції користувача при реалізації програмних кодів на мові С....
58005. Квадратична функція у=ах2+вх.+с, (а≠0), її графік і властивості 60.5 KB
  Мета: систематизувати та узагальнювати матеріал, опрацьований на попередніх уроках, повторити, уточнити нові поняття; систематизувати та узагальнювати знання, отримані учнями в процесі вивчення теми. Розвивальні: розвивати увагу, мислення, память, культуру математичного мовлення...
58006. Функція у = х2 її властивості, графік 64.5 KB
  Функція у = х2 її властивості графік Мета: домогтися засвоєння учнями властивостей функції у = х2 і властивостей її графіка та способу застосування графіка функції у = х2 для графічного розвязання рівнянь виду х2 = а; формувати вміння відтворювати зміст вивчених понять відпрацювати навички роботи з графіком функції...
58007. Від атома до Галактики 158 KB
  Мета уроку: Узагальнити і систематизувати знання учнів по темі „Степінь з цілим показником”. Формувати в учнів вміння встановлювити головне. Самостійно застосовувати набуті знання в стандартних і не стандартних ситуаціях, а також вміння аналізувати певні математичні твердження, робити висновки.