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


 

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

25275. Криза новочасного матеріалізму (критика Дж.Берклі та Д.Юма) 31.5 KB
  Берклі дотримується позиції суб’єктивноідеалістичного сенсуалізму. Свою критику емпіризму Берклі починає з розгляду локківського вчення. Використавши ці положення Локка як відправні точки Берклі фактично відступає від локківської позиції. А Берклі дає на них відповідь – просто витлумачує Локка в дусі категоричного заперечення об’єктивності первинних якостей.
25276. Піднесення і падіння ідеалістичної філософії (XVIII-XIX ст.) 35.5 KB
  Речі вважає він лише здаються нам незалежними від нас доки ми не усвідомили що вони є продуктами свідомої діяльності суб’єкту. Це відбувається за рахунок суб’єктивації природного світу здійснюваної за рахунок свободи як принципу активної діяльності суб’єкта. Вже в Канта поняття трансцендендентального суб’єкту не співпадає ні з індивідуальним людським суб’єктом ні з божественним розумом традиційного раціоналізму.Шеллінг 17551854 тотожність протилежностей суб’єкта і об’єкта робить вихідним пунктом свого вчення.
25277. Матеріалістичне розуміння історії К.Маркса 27.5 KB
  Гегель розуміє розвиток історії як розвиток абсолютного духу. Для нього історичний розвиток – це розвиток продуктивних силзасобів виробництва знарядь праці тобто капіталу а не духовності.
25278. Деградація філософії К.Маркса у працях Ф.Енгельса у 80-90р XIX 28.5 KB
  Енгельса у 8090р XIX Послідовники Маркса не змогли утриматись на рівні адекватного розуміння його філософії. Типовим виявом цього стала для Енгельса абсолютизація специфічного для філософії XVIIXVIIIст. протистояння матеріалізму та ідеалізму поширюване ним на всю історію філософії звідти і проголошення питання про відношення матерії та свідомості основним питанням філософії а боротьби матеріалізму та ідеалізму основною рушійною силою історикофілософського процесу.
25279. Діалектичний та історичний матеріалізм – російсько-радянська вульгаризація Марксового матеріалістичного розуміння історії 27.5 KB
  Ця філософія вульгаризувавши і догматизувавши елементи Марксової філософії на базі ленінського принципу партійності постала як різновид тоталітарної філософії XXст. – так званого марксизмуленінізму що ніби знаменувала своєю появою революційний поворот у філософії і була в цьому ранзі проголошеною єдино правильною і єдино науковою філософією. Подоланню тоталітарного марксизмуленінізму великою мірою сприяла її критика в 1960х у дусі повернення до адекватного прочитання філософії Маркса молодим поколінням філософів у СРСР у...
25280. Західноєвропейський (Д.Лукач, група «Праксіс», К.Косік. Г.Маркузе, Ж-ПСартр) та радянський (Е.Ільєнков, Г.Братішев, П.Копнін, З.Кабадзе, Ж.Абдільдін) неомарксизм 60-70 рр 62 KB
  Неомарксизм – это особое течение общественной в том числе философской мысли 50–60х годов нашего века выражавшее тот большой интерес к творчеству Маркса и его философии который был характерен для этого периода. Речь идет не о новых исследованиях работ Маркса и не о новой интерпретации его творчества. Неомарксизм – это определенное теоретическое устремление найти при помощи Маркса ответы на животрепещущие вопросы современности. Как правило все они стремились понять насколько применимы взгляды Маркса к решению современных им проблем...
25281. Позитивізм ХІХ-ХХ ст. у Західній Європі та Російській імперії 34 KB
  Існує три історичні стадії позитивізму: перший€ класичний позитивізм другий€ позитивізм емпіріокритицизм і третій€ позитивізм неопозитивізм. Засновником позитивізму був О.Спенсер ще один представник першого позитивізму. Представниками ІІго позитивізму є Е.
25282. Философия прагматизма и неопрагматизма: основные идеи, их эволюция 36 KB
  опыте Мид социальный бихевиоризм и теория значения Неопрагмм К. Теория сомненияверы. наука сама на нее опирается Теория значения. Теория истины.
25283. ЭКЗИСТЕНЦИАЛИЗМ (Э.) 45 KB
  Альбер КАМЮ 19131960 Алжирский унивт. Альбер Камю 1913 1960. Особенностью философии Камю является то что у него нет систематизированного и всеохватывающего философского учения он занимается почти исключительно этическими проблемами. Основная философская работа Камю Миф о Сизифе открывается словами: Есть лишь одна действительно серьезная философская проблема: это самоубийство.