30070

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

Книга

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

Чтобы решить обыкновенное дифференциальное уравнение, необходимо знать значения зависимой переменной и (или) её производных при некоторых значениях независимой переменной. Если эти дополнительные условия задаются при одном значении независимой переменной, то такая задача называется задачей с начальными условиями, или задаче Коши. Часто в задаче Коши в роли независимой переменной выступает время.

Русский

2013-08-22

960 KB

45 чел.

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

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

Курсовая работа по информатике на тему:

Визуализация численных методов.

Решение обыкновенных дифференциальных уравнений

                                                                                              

                                                                                      Выполнил:  Киселёв Д.В.

                                                                   студент 1-го курса

                                                                                      группы СЕ-81                                                                                           

                                                                                      Проверила:  Тюпина О.М.

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

Содержание

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

Глава 1. Постановка задачи и математическая модель……………………….. 4

Глава 2. Описание методов решения…………………………………………... 5

Глава 3. Блок – схемы основных процедур……………………………………. 8

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

Глава 5. Формы проекта….……………………………….…………………….13

Глава 6. Решение задачи в MathCad...………………………………………….15

Заключение……………………………………………………………………….19

Глава 1. Введение

Цель работы: изучение основ системы программирования Microsoft Visual Basic.

Задача работы: решение дифференциального уравнения в среде Microsoft Visual Basic, с помощью методов: Эйлера и Эйлера модифицированного.

Дифференциальное уравнение:

Начальные условия: x0=1, xk=1.4, h = 0.05, y0=2.

Общее решение:

Результаты вычислений должны содержать:

- точное значение уравнения

- приближённое значение уравнения

- график

Глава 2. Постановка задачи.

  Чтобы решить обыкновенное дифференциальное уравнение, необходимо знать значения зависимой переменной и (или) её производных при некоторых значениях независимой переменной. Если эти дополнительные условия задаются при одном значении независимой переменной, то такая задача называется задачей с начальными условиями, или задаче Коши. Часто в задаче Коши в роли независимой переменной выступает время.

  Задачу Коши можно сформулировать следующим образом.

  Пусть дано дифференциальное уравнение    и начальное условие y(x0) =  x0. Требуется найти функцию y(x), удовлетворяющую как указанному уравнению, так и начальному условию.

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

   Геометрический смысл задачи:

 
= f(x,y) – тангенс угла наклона касательной к графику решения в точке (x,y) к оси OX, - угловой коэффициент (рис.1).

   

Существования решения:

Если правая часть f(x,y) непрерывна в некоторой области R, определяемой неравенствами:

то существует, по меньшей мере, одно решение y = y(x), определённое в окрестности  < h, где h – положительное число.

   Это решение единственное, если в R выполнено условие Липшитца

где – N некоторая постоянная (константа  Липшитца), зависящая, в общем случае, от a и b/

если f(x,y) имеет ограниченную производную   в R, то можно положить

N = max  при (x,y) R.

 

Глава 1. Численные методы решения задачи Коши.

При использовании численных методов выполняется замена отрезка [, X] – области непрерывного изменения аргумента x множеством  , состоящего из конечного числа точек <<…< = X – сеткой.

    При этом  называют узлами сетки.

    Во многих методах используются равномерные сетки с шагом

Задача  Коши, определённая ранее на непрерывном отрезке [,X], заменятся её дискретным аналогом – системой уравений, решая которую можно последовательно найти значения  -  приближённые значения функции в узлах сетки.

      

                      
      

     

  Численное решение задачи Коши широко применяется в различных областях науки и техники, и число разработонных для него методов достаточно велико. Эти методы могут быть разделены на следующие группы:

- одношаговые методы, в которых для нахождения следующей точки на кривой y = f(x) требуется инмормация лишь об одном предыдущем шаге.

Одношаговым методом являются метод Эйлера и методы Рунге – Кутта.

- Методы прогноза и коррекции (многошаговые), в которых для отыскания следующей точки кривой y = f(x) требуется информация более чем об одной из предыдущих точек. Чтобы получить достаточно точное численное значение, часто прибегают к итерации. К числу таких методов относятся методы Милна, Адамса – Башфорта и Хемминга.

- Явные методы, в которых функция Ф в выражении (1) не зависит от .

- Неявные методы, в которых функция Ф зависит от .

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

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

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

y\ = f(x, y)

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

y(x0) = y0

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

xi = x0 + i*h   и   yi = y(xi )

где i = 0,1,2

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

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

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

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

tg(a) = f(xi, yi)                                       (2)

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

Тогда                                              yi+1 = yi + ^y                                             (3)

Из прямоугольного треугольника АВС tg(a) =  ^y / h                                (4)

Приравняем правые части (2) и (4). Получим  ^y / h = f(xi, yi)

Отсюда                                        ^y = h* f(xi, yi)                   

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

yi+1 = yi + h* f(xi, yi)                         (5)

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

F(x, y) – заданная функция – должна быть описана отдельно.

Входные параметры:

X0, XK – начальное и конечное условие независимой переменной;

Y0 – значение  y0 из начального условия  y(x0) = y0;

N – количество отрезков разбиения.

Выходные параметры:

Y – массив значений искомого

 

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

 

Метод Эйлера модифицированный.

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

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

y\ = f(x, y)

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

y(x0) = y0

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

xi = x0 + i*h   и   yi = y(xi )

где i =  0,1,2…

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

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

 

При использовании модифицированного метода Эйлера шаг h делится на два отрезка.  Иллюстрации к решению приведены на рисунке 1.

Проведём решение в несколько этапов.

  1.  Обозначим точки:

А (x(i),y(i)), C (x(i)+h/2, y(i)+h/2*f (x(i),y(i))) и B (x(i+1),y(i+1)).

  1.  Через точку А проведём прямую под углом α, где

tgα = f (x(i),y(i))

  1.  На этой прямой найдём точку

С (x(i)+h/2, y(i)+h/2*f(x(i),y(i))).

  1.  Через точку С проведём прямую под углом  α1, где  

                                          

tgα1 = f (x(i)+h/2,y(i)+ h/2*f (x(i),y(i)))

  1.  Через точку А проведём прямую, параллельную последней прямой.

  1.  Найдём точку  B (x(i+1),y(i+1)). Будем считать B(x(i+1),y(i+1)) решением дифференциального уравнения при x = x(i+1)

  1.  После проведения вычислений, аналогичных вычислениям, описанным в методе Эйлера, получим формулу для определения значения y(i+1):

y(i+1) = y(i) + h*f(x(i)+h/2, y(i)+h/2*f(x(i),y(i))

Модифицированный метод Эйлера дает меньшую погрешность. На рисунке 2. это хорошо видно. Так величина  характеризует погрешность метода Эйлера, а – погрешность метода Эйлера Модифицированного.

F(x, y) – заданная функция – должна быть описана отдельно.

Входные параметры:

X0, XK – начальное и конечное условие независимой переменной;

Y0 – значение  y0 из начального условия  y(x0) = y0;

N – количество отрезков разбиения.

Выходные параметры:

Y – массив значений искомого

 

Глава 3. Блок - схема

 

Нет

 

                                                                             Да

                       Нет             

                       Да

Глава 4. Листинг программы на языке Visual Basic

Dim x(50) As Single

Dim y(50) As Single

Dim y1(50) As Single

Dim y2(50) As Single

Private x0 As Single

Private xk As Single

Private y0 As Single

Private h As Single

Function f(c As Single, t As Single) As Single

f = (3 * t) / c

End Function

Private Sub Command1_Click()

x0 = Val(txt1.Text)

xk = Val(txt2.Text)

y0 = Val(txt4.Text)

h = Val(txt3.Text)

n = Round((xk - x0) / h)

MSFlexGrid1.Rows = n + 2

MSFlexGrid1.Cols = 4

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

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

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

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

Max = y0

Min = y0

y(0) = y0

y1(0) = y0

y2(0) = y0

For i = 0 To n

x(i) = x0 + i * h

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

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

y2(i + 1) = Round(2 * x(i) ^ 3, 4)

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

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

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))

Next i

Picture1.Cls

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

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

txt5.Text = Trim(Str(Min))

txt6.Text = Trim(Str(Max))

txt7.Text = Trim(Str(x0))

txt8.Text = Trim(Str(xk))

For i = 1 To n

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

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

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

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

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

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

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

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

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

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

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

Next i

End Sub

Глава 5. Решение задачи в MathCad

 

Глава 6. Форма проекта

 


Eiler (X0,
 XK,Y0,N,Y)

h = (XK – X0)/N

i = 0,…,N-1

x = X0 + i*h

Yi+1 = Yi + h*F(x, Yi)

end

1

             Рисунок 2.       Метод Эйлера Модифицированный                     

A

x

y

0

 

B

C

y=y(x)

1

h/2

xi+1

xi

h

EilerM (X0, XK,Y0,N,Y)

end

Yi+1 = Yi + h*F(x+h/2, Yi + h/2*F(xi, yi))

x = X0 + i*h

i = 0,…,N-1

h = (XK – X0)/N

Начало

Конец

h = (XK – X0)/N

i = 0,…,N-1

x = X0 + i*h

Yi+1 = Yi + h*F(x+h/2, Yi + h/2*F(xi, yi))

x0, y0, xk, h

x0, y0

dy = 3*(xi+1) / xi

YiЭ = Yi + h*F(x, Yi)

YiЭ, Yi+1, dy

i = 0 .. N

y(i) =2*(x(i))^3

x(i) =x0+i*h

y1(0) = 0

Min = y0

y(0) = 0

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

i = 0 .. N

Max = y0

h = (XK – X0)/N

x0, y0, xk, h

Начало

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

y(i) = Min

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

x(i) =x0+i*h

i = 0 .. N

y(i) < Min

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

y(i) = Max

i = 1 To n

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

Конец

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

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

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

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

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

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

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

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

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

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

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


 

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

45141. Политическая модель Александра 3. Внутренняя и внешняя политика Александра III Миротворца. Период лавирования 14.18 KB
  Политическая модель Александра 3 Внутренняя и внешняя политика Александра III Миротворца Период лавирования Есть мнение что в 18791881 годах в России сложилась революционная ситуация. народовольцами Александра II коренным образом повлияло на дальнейшую внутреннюю политику самодержавия. Приход к власти Александра обозначил новый поворот от либерального реформизма к реакции. Александр III считавший реформы Александра II слишком либеральными начал эпоху контрреформ.
45142. Политическая модель Александра III 13.58 KB
  Политическая модель Александра III. Период лавирования:Приход к власти Александра обозначил новый поворот от либерального реформизма к реакции.Александр III считавший реформы Александра II слишком либеральными начал эпоху контрреформ. Внешняя политика Александра III Миротворца В области внешней политики период царствования Александра III характеризуется почти полным отсутствием войн: только небольшие боевые действия в Туркмении – на этом завершилось присоединение Средней Азии к России.
45143. Национальный вопрос в государственном управлении России 19- начале 20 вв 13.87 KB
  Национальный вопрос в государственном управлении России 19 начале 20 вв. На окраинах России под влиянием развития капитализма формировались национальная буржуазия и интеллигенция происходил рост национального самосознания. Хищническая эксплуатация окраин бедность и бесправие живущих там народов вызывали массовую эмиграцию из России и развитие национального движения. В целом для внутриполитической системы России в начале XX в.
45144. Свяще́нный сино́д Ру́сской правосла́вной це́ркви 19.74 KB
  По упразднении Петром I 1701 год патриаршего управления церковью с 1721 года вплоть до августа 1917 года номинально существовал до 1 14 февраля 1918 года учреждённый им Святейший Правительствующий Синод был высшим государственным органом церковноадминистративной власти в Российской империи заменявшим собой патриарха в части общецерковных функций и внешних сношений а также соборы всех епископов поместной церкви. Учреждение и функции 16 октября 1700 года скончался патриарх Адриан. В течение 1720 года проходило подписание Регламента...
45146. Думская монархия 15.57 KB
  Всего было 4 созыва Государственной думы. Новой основой законодательной компетенции Государственной думы стал п. установивший как незыблемое правило чтобы никакой закон не мог восприять силу без одобрения Государственной думы. 86 Основных законов Российской империи в редакции 23 апреля 1906: Никакой новый закон не может последовать без одобрения Государственного совета и Государственной думы и восприять силу без утверждения Государя Императора.
45147. Кризисы государственного управления периода правления Николая II 12.86 KB
  Первая русская революция ставшая ярким показателем необходимости реформ так и не стала для императора той ступенью которая могла бы направить страну на путь преобразования и развития. Вступление императора на должность главнокомандующего в условиях войны было бесполезным шагом так как Николай не обладал даром командования войсками и этот шаг был простой формальностью которая тем не менее не принесла никаких положительных результатов. Ситуация внутри страны продолжает накаляться и вместе с тяжелым положением во внешней политике ставит...
45148. Формирование партийно-государственной системы большевиков 1917-1921 гг 26.46 KB
  Съезд принял постановление О федеральных учреждениях Российской Республики и оформил создание Российской Социалистической Федеративной Советской Республики РСФСР. РСФСР учреждалась на основе свободного союза народов как федерация советских национальных республик. Весной 1918 года начался процесс оформления государственности народов населявших РСФСР. Советская Россия неофициальное наименование[7] самостоятельного социалистического российского государства в период после Октябрьской революции 1917 года и до образования СССР в 1922 году с...