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)


 

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

61145. Мінойська та Ахейська палацова цивілізація 69 KB
  Очікувані результати: Після цього уроку учні зможуть: називати розквіту Критської цивілізації час відкриття археологами Критської цивілізації; основні грецькі міфи Критського циклу їхніх героїв основні заняття греків характерні риси Критської цивілізації...
61146. УЗАГАЛЬНЕНО-ОСОБОВІ РЕЧЕННЯ 49.5 KB
  Внутрішньопредметні звязки: Лексикологія і фразеологія: засвоєння крилатих висловів у формі односкладних узагальненоособових речень. Текст риторичний аспект: використання односкладних узагальненоособових речень у текстах художнього й публіцистичного стилів.
61147. Сімейне право. Житлове право 77.83 KB
  Ознайомити учнів із структурою й джерелами сімейного та житлового права, визначити роль цих галузей у системі права України; розвивати навички учнів аналізувати поняття, працювати з джерелами інформації, аналізувати життєві ситуації з позицій права, формувати правову компетентність школярів як учасників сімейних та житлових правовідносин.
61148. Земельне право 107.5 KB
  Очікувані результати Після опрацювання теми учні зможуть: дати визначення земельного права і назвати його основні джерела; назвати види земель в Україні форми та субєкти права власності на землю і навести приклади...
61149. УСНИЙ СТИСЛИЙ ПЕРЕКАЗ ТЕКСТУ ПУБЛІЦИСТИЧНОГО СТИЛЮ (НА ОСНОВІ ПРОСЛУХАНИХ РАДІО- І ТЕЛЕПЕРЕДАЧ) 42.5 KB
  Дібрати заголовок до тексту переказу. Усний стислий переказ тексту публіцистичного стилю на основі переглянутої телепередачі Переказати стисло одну з переглянутих телепередач каналу 11 використавши поданий початок.
61150. Греція вXI—VI ст. до н. е 67.5 KB
  Після цього уроку учні зможуть: називати час Гомерівського періоду в історії Греції великої грецької колонізації; показувати на карті напрями грецької колонізації; застосовувати та пояснювати на прикладах поняття та терміни: колонія метрополія...
61151. БЕЗОСОБОВІ РЕЧЕННЯ 228 KB
  Внутрішньопредметні звязки: Культура мовлення і стилістика: речення двоскладні й односкладні безособові як синтаксичні синоніми. Текст риторичний аспект: безособові речення як виражальний засіб у художніх творах.
61152. Давня Спарта 58 KB
  Ознайомити учнів з особливостями державного устрою Спарти удосконалити навички порівняння однотипних явищ установлення причинно-наслідкових звязків формувати вміння висловлювати власну думку.
61153. Трудове право 92.69 KB
  Розвивати навички учнів аналізувати поняття, працювати з різними джерелами інформації, формувати правову компетентність школярів як учасників трудових правовідносин.