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


 

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

26818. Оценка затрат на разработку ПО 138.5 KB
  Например можно сократить сроки разработки за счет уменьшения функциональности системы или использовать в качестве составных частей ИС продукцию других фирм вместо собственных разработок.Определение системы. Определение системы. Первое определение системы: Система есть средство достижения цели.
26819. Простейшие формулы ЧИ. Методология и технология создания ИС. Основные задачи и требования 2.89 MB
  Области применения имитационного моделирования. Попытаемся обобщить достоинства метода имитационного моделирования целесообразность его применения в тех или иных случаях и существующие недостатки данного вида моделирования. 1 Основным достоинством имитационного моделирования является универсальность подхода при моделировании систем различной сложности и с различной степенью детализации. С одной стороны имитационное моделирование позволяет рассматривать процессы происходящие в системе практически на любом уровне детализации.
26820. Формирование монологической речи у дошкольников 51.5 KB
  Монологическая речь – более сложный вид связной речи. Говоря о монологической речи, имеется в виду формирование связного высказывания или, по определению лингвистов, умения создавать текст.
26821. Задача Коши для ОДУ первого порядка 111.5 KB
  При объектном подходе акцент переносится на конкретные характеристики системы являющейся предметом программного моделирования. Это позволило создавать программные системы максимально похожие на реальные и при этом добиваться наивысшего уровня абстракции. Концептуальная модель системы С чего начать Для одной и той же системы можно составить множество моделей. Они будут отличаться: степенью детализации учета тех или иных особенностей и режимов функционирования отражать определенную грань сущности системы ориентироваться на...
26823. Анатомический состав и морфофункциональная характеристика органов кровообращения. Особенности кровоснабжения отдельных органов 5.99 KB
  Анатомический состав и морфофункциональная характеристика органов кровообращения. особенности кровоснабжения отдельных органов. Система органов кровообращения состоит из центрального органа сердца; кроветворных органов селезенки костного мозга и лимфатических узлов; кровеносных сосудов артерий вен и капилляров. Таким образом сосуды несущие кровь от сердца к органам называются артериями а сосуды несущие кровь от органов к сердцу венами.
26824. Общие закономерности строения, хода и ветвления кровеносных сосудов 5.4 KB
  Строение кровеносных сосудов: Кровеносные сосуды по функции и строению разделяются на проводящие сосуды артерии и вены и питающие сосуды капилляры. Сосуды vasa vasorum и нервы nervi vasorum. Артерии arteria сосуды по которым кровь выносится из сердца. Соединяет сосуды с органами и мышцами По строению стенок различают артерии эластического переходного и мышечного типов.
26825. Основные данные фило- и онтогенеза сердечно -сосудистой системы 3.41 KB
  У амфибий на ряду с жаберным дыханием появляется легочное с образованием легочного круга кровообращения: из жаберной артерии появл. У рептилий 2 круга кровообращения: легочной и соматический. Следовательно 2 круга кровообращения. Одновременно с ними закладывается сердце которое на 7 неделе становится 4хкамерным устанавливается желточный круг кровообращения который заменяется на плацентарное кровообращещение связанное со стенкой матки.
26826. Круги кровообращения 2.55 KB
  круги кровообращения Большой или системный круг кровообращения начинается от левого желудочка сердца из которого кровь поступает в аорту. Путь крови от левого желудочка до правого предсердия составляет большой круг кровообращения. Из правого предсердия кровь поступает в правый желудочек который служит началом малого круга кровообращения. Малый или легочный круг кровообращения начинается из правого желудочка легочной Артерией которая в легких распадается на многочисленные капилляры что способствует освобождению крови от углекислого...