30062

Изучение основ системы программирования Microsoft Visual Basic и приобретение начальных навыков разработки программного обеспечения для операционных систем Windows

Книга

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

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

Русский

2013-08-22

204.5 KB

3 чел.

PAGE  6

Сибирский государственный университет телекоммуникации

и информатики

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

Кафедра физики, прикладной математики и информатики

КУРСОВАЯ РАБОТА

по информатике

ВИЗУАЛИЗАЦИЯ ЧИСЛЕННЫХ МЕТОДОВ.

РЕШЕНИЕ ОБЫКНОВЕННЫХ ДИФФЕРЕНЦИАЛЬНЫХ УРАВНЕНИЙ

Выполнил: студент гр. АЕ-61

                                                                                                 Потапов Е. Д.

                                                                                Руководитель: Минина Е.Е.

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

Содержание

   Введение………………………………………………………………...……..3

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

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

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

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

4  Блок схема…. ……………………………………………………………..….. 8

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

6  Проверка в Math Cad………………………………………………………….13

7  Исходная форма………………………………………………………………14

8  Конечная форма……………………………………………………………....15

9  Заключение……………………………………………………………………16

Введение

Дифференциальными называются уравнения, содержащие одну или несколько производных. Дифференциальные уравнения очень часто встречаются при построении моделей динамики объектов исследования. Они описывают, как правило, изменение параметров объекта во времени (хотя могут быть и другие случаи). Результатом решения дифференциальных уравнений являются функции, а не числа, как при решении конечных уравнений, вследствие чего методы решения их более трудоемки. Лишь очень немногие из них удаётся решить без помощи вычислительной техники. Владение методами решения дифференциальных уравнений обязательно при моделировании и очень важно для получения правильного результата.

Целью моей работы является изучение основ системы программирования Microsoft  Visual  Basic и приобретение начальных навыков разработки программного обеспечения для операционных систем  Windows.

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

При использовании численных методов решения дифференциальных уравнений у’ = f(x, y)  представляется в табличном виде, т.е. получается совокупность значений y(i) и x(i). Решение носит шаговый характер, т.е. по одной или по нескольким начальным точкам (x,y) за один шаг находят следующую точку, затем следующую и т.д. Разница между двумя соседними значениями аргумента x(i+1) и x(i) называется шагом (h). В данной курсовой работе мне требуется решить дифференциальное уравнение методами  Эйлера (Рунге-Кутта первого порядка) и Рунге-Кутта (четвертого порядка)  

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

Дано: y(x+1)=y + 2

y(x0) = y0

y0 = 0

x0 = 0

xk = 0.8

h=0.1

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

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

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

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

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

y(x0) = y0.

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

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

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

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

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

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

tgα = f(xi,yi) (1).

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

Тогда yi+1 = yiy (2).

Из прямоугольного треугольника АВС  (3).

Приравняем правые части (1) и (3). Получим .

Отсюда

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

    (4).

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

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

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

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

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

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

y(x0) = y0.

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

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

Аналогично описанным выше методам производится решение дифференциального уравнения. Отличие состоит в делении шага на 4 части.

Согласно методу Рунге – Кутта четвёртого порядка, последовательные значения yi искомой функции y определяются по формуле:

где

,         i = 0, 1, 2, …

а числа  k1(i),  k2(i),  k3(i),  k4(i)  на каждом шаге вычисляются по формулам:

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

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

 B 

β C D 

γ  δ E

 Рисунок 2.

A α Метод Рунге-

                                                                  Кутта

 

                                               4   Блок схема

 


 

-

+

-

+

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

Dim x(11) As Single, y(11) As Single, y1(11) As Single, y2(11) As Single

Private x0 As Single, y0 As Single, xk As Single, h As Single

Private Function f(a As Single, b As Single)

f = (b + 2) / (a + 1)

End Function

Private Sub Command1_Click()

x0 = Val(Text1.Text)

xk = Val(Text2.Text)

h = Val(Text3.Text)

y0 = Val(Text4.Text)

n = (xk - x0) / h

MSFlexGrid1.Rows = n + 2

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

MSFlexGrid1.TextMatrix(0, 1) = "y"

MSFlexGrid1.TextMatrix(0, 2) = "y1"

MSFlexGrid1.TextMatrix(0, 3) = "y2"

x(0) = x0

y1(0) = y0

y2(0) = y0

Max = y0

Min = y0

For i = 0 To n

x(i) = x0 + i * h

y(i) = Round((x(i) + 1) * 2 - 2, 4)

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

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

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

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

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

y2(i + 1) = Round(y2(i) + (k1 + 2 * k2 + 2 * k3 + k4) / 6, 4)

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

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

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

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

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

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

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

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

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

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

Next i

For i = 0 To n - 1

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

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

Label4.Caption = Str(Min)

Label5.Caption = Str(Max)

Label6.Caption = Str(x0)

Label7.Caption = Str(xk)

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

z2 = Round(5400 - (y(i) - Min) * ky)

z3 = Round(5400 - (y1(i) - Min) * ky)

z4 = Round(5400 - (y2(i) - Min) * ky)

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

z6 = Round(5400 - (y(i + 1) - Min) * ky)

z7 = Round(5400 - (y1(i + 1) - Min) * ky)

z8 = Round(5400 - (y2(i + 1) - Min) * ky)

Picture1.Line (z1, z2)-(z5, z6), vbRed

Picture1.Line (z1, z3)-(z5, z7), vbBlue

Picture1.Line (z1, z4)-(z5, z8)

Next i

End Sub

Private Sub Command2_Click()

End

End Sub

                                

  1.  
    Проверка
     в MathCad.


7 Исходная форма


8 Конечная форма

                                            


9
Заключение.

Я изучил основы системы программирования Microsoft Visual Basic и приобрел начальные навыки  в разработке программного обеспечения для операционных систем  Windows.

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

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


Line (z1, q3)-(z5, z7)

4

i = 0 … n-1

4

+

 Max = y(i)

x

xi+1

xi

y=y(x)

y

y(i)<min

O

A

B

α

h

yi

yi+1

ε

B

C

 Min = y(i)

Шаблон графика

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

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

1 111111i

y(i)>Max

      x(i), y(i), y1(i),y2(i)

Y1(i+1)=y1(i)+ f(x(i), y1(i))*h                              

k4= h*f(x(i)+h/2, y2(i)+ k3)

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

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

1

    Начало

x0, xk, y0, h

n = (xk – x0)/h

y(i) = exp(x)(lnx+c)

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

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

Max = f(x0,y0)

Min = f(x0,y0)

y2(0) = y0

                                                   i = 0 … n-1

x(i) = x0 + i*h

y1(0) = y0

z8= 5400 - (y2(i + 1) - Min) * ky

z7= 5400 - (y1(i + 1) - Min) * ky

z6= 5400 - (y(i + 1) - Min) * ky

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

Line (z1, z2)-(z5, z6)

z4 = 5400 - (y2(i) - Min) * ky

z3 = 5400 - (y1(i) - Min) * ky

z2 = 5400 - (y (i) - Min) * ky

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

     Конец

          Line (z1, z4)-(z5, z8)

1

1

2

3

2

3


 

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

3948. Особенности детерминизма и индетерминизма 78 KB
  Детерминизм и индетерминизм 1.1. Детерминизм: основные этапы развития Методологический принцип детерминизма является одновременно и основополагающим принципом философского учения о бытии. Сам термин "детерминация" происходит от латинского determi...
3949. Педагогические условия формирования экологической культуры младших школьников в ходе работы кружка Юный эколог 358.5 KB
  Введение Проблема экологического воспитания является в настоящее время актуальной. До определенного времени воздействие человека сглаживалось процессами происходящими в биосфере, но в настоящее время человек стоит на грани экологического кризиса. На...
3950. Элементы художесственного творчества на уроках развития речи в начальной школе 291.5 KB
  Введение Система уроков развития речи — один из основных элементов общего языкового и нравственно-эстетического воспитания младших школьников. Культура речи не ограничивается только грамотностью письма, правильным произношением, а непременно вы...
3951. Дослідження комбінаційних схем з багатьма виходами 429.72 KB
  Лабораторна робота №14 Тема: дослідження комбінаційних схем з багатьма виходами. Мета: синтезувати комбінаційні схеми з багатьма виходам на прикладі дешифраторі та шифраторів, дослідити роботу цих пристроїв Теоретичні відомості Дешифратор...
3952. Дослідження регістрів 429.31 KB
  Лабораторна робота №13 Тема: дослідження регістрів. Мета: побудувати регістри на основі різних видів тригерів. Теоретичні відомості Регістрами називаються послідовнісні цифрові пристрої (ПЦП), які використовується для зберігання і виконання деяких л...
3953. Синтез мультиплексорів та демультиплексорів 412.29 KB
  Лабораторна робота №15 Тема: синтез мультиплексорів та демультиплексорів Мета: спроектувати комбінаційні схеми і дослідити роботу мультиплексора та демультиплексора. Теоретичні відомості. Мультиплексор призначений для комутації в певному порядку на...
3954. Алгоритми роботи, функції переходів та збудження основних типів тригерів 362.95 KB
  Тема: тригери. Мета: дослідити структуру, алгоритми роботи, функції переходів та збудження основних типів тригерів. Теоретичні відомості Тригером називається послідовний цифровий пристрій, що має два стійкі стани, які встанов...
3955. Дослідження лічильників. Способи зміни коефіцієнта перерахунку лічильників 327.12 KB
  Лабораторна робота №12 Тема: дослідження лічильників. Мета: дослідити роботу підсумовуючих та віднімаючих лічильників, розглянути способи зміни коефіцієнта перерахунку лічильників. Теоретичні відомості. Лічильниками імпульсів називають послідовнісні...
3956. Класс Random и его функции 63.6 KB
  Класс Random и его функции Умение генерировать случайные числа требуется во многих приложениях. Класс Random содержит все необходимые для этого средства. Класс Random имеет конструктор класса: для того, чтобы вызывать методы класса, нужно вначале со...