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


 

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

82046. Золоті правила країни ввічливості 77 KB
  Серед слів які ми вживаємо є чарівні слова ввічливості. Бережи свій час; тримай кожну річ на своєму місці; дотримуйся свого слова. І посміхаються У відповідь люди Добрі слова ж бо Для кожного любі.Я слова чарівні знаю Вивчила охоче І в розмові їх вживаю Зранку і до ночі Доброго здоровя Галю Добрий день...
82047. «Шануй батька і неньку, то буде тобі скрізь гладенько». Любов до батьків, турбота про них 59.5 KB
  Мета: виховувати у дітей любов та повагу до батьків турботу про них шанобливе ставлення до їхніх настанов та порад бажання щоденно піклуватися про їхнє здоровя не завдавати їм душевного болю негідними вчинками; прищеплювати бажання бути гідними дітьми своїх батьків прагнення приносити щастя в свій дім.
82048. Подорож країною Екологія 84.5 KB
  Мета: Пробудити в школярів особистої відповідальності за охорону навколишнього середовища, виховувати любов до рідного краю. Обладнання: плакати, телевізор, заставки зупинок, малюнки рослин і тварин Червоної книги України, грамзапис мелодій, присвячених природі, модель квітки.
82049. ІВАН МАЛКОВИЧ «ІЗ ЯНГОЛОМ НА ПЛЕЧІ» 33.5 KB
  Наше свято ми сьогодні присвячуємо творчості нашого поета-земляка, людини знаної не тільки в нас на Україні, але й за її межами. Дитячий видавець, директор видавництва «А-Ба-Ба-Га-Ла-Ма-Га», автор шести власних поетичних збірок, член Спілки письменників України – це Іван Малкович.
82050. Світ жінки (розважальне шоу-гра для старшокласників) 70.5 KB
  Мета: поглибити знання учнів про світ жінки його різноманітність; привернути увагу до видатних жінок їх місце у історії та суспільстві; виховувати повагу до жінки та підвищити мотивацію до саморозвитку та самовдосконалення. Коментар: гра створена за сценарієм шоу Я люблю Україну але на тему світу...
82051. Архітектура рідного міста. Стилістичні ознаки будівель-пам’яток архітектури місцевого значення. Вивчення студентами-архітекторами стилістичних ознак будівель для поглиблення фундаментальних фахових знань 77 KB
  Мета: Підвищити рівень знань та розвинути пізнавальні можливості студентівархітекторів при вивченні архітектурних стилів; поглибити знання студентів про стилістичні ознаки будівель навчити розпізнавати памятки архітектури міста Чернівців за стилями.
82052. Ким бути? Яким бути? 54 KB
  Мета: Зясувати рівень знань учнів про професії; Розширити знання дітей про професії; Формувати інтерес до професій батьків; Розвивати вміння працювати самостійно та в групах; Розвивати вміння планувати та оцінювати свою діяльність Познайомити з поняттями майстер посада...
82053. Врятуй своє майбутнє 60.5 KB
  Пані в чорному: Шановна публіко, панове, Ми починаєм дійства мову, Що розповість не про минуле, Яке нащадки вже забули, А про сучасне піде мова... Важкою буде ця розмова. Не десь у казці, за горами, А тут і зараз поміж нами Йде боротьба зла та добра І вибрати нам всім пора.
82054. Пора навчання – світла й неповторна 60 KB
  Мета: поглибити знання учнів про святкування дня студента, історію Хорольського Міжрегіонального центру звільнених у запас військовослужбовців. Виховувати у учнів любов до життя; любов до молодості, патріотичне відношення до свого навчального закладу, вміння помічати красиве; спостережливість.