30070

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

Книга

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

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

Русский

2013-08-22

960 KB

46 чел.

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

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

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

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

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

                                                                                              

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

                                                                   студент 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)


 

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

74458. Стадии правового исследования 43 KB
  На стадии целеполагания решаются главные вопросы научного исследования: что подлежит исследованию; какие позитивные результаты можно ожидать по его завершении; с помощью каких методов могут быть получены ожидаемые результаты. С учетом результатов целепологания исследователь должен трезво оценить свой творческий потенциал и быть уверенным в том что его способностей знаний и навыков владения научными методами исследования вполне достаточно для успешного завершения планируемого исследования. Подготовительная стадия научного...
74459. Уровни и формы знаний юридической науки 53.5 KB
  Знания об объекте правовой науки образует ее эмпирический уровень а знания о предмете теоретический уровень. При этом эмпирический уровень знания об объекте правовой науки формируется на начальных этапах познания тогда как теоретические знания составляют конечную цель и наиболее высокий результат научного познания. Вся объективная реальность представленная в объекте правовой науки исследуется ученымиправоведами а результаты исследований составляют содержание эмпирического уровня науки.
74460. Философский как основа методологии правовой науки. Общие философские методы научного познания 14.65 KB
  Общие философские методы научного познания. Гносеология или теория познания это учение об условиях о сущности и границах познания. Основу теории составляют проблемы соотношения субъекта объекта и содержания познания. Логика учение о последовательном и упорядоченном мышлении его элементах и общих методах познания.
74461. Функции юридической науки 50 KB
  Основные направления воздействия правовой науки на другие сферы гражданского общества понимаются как функции. Теоретико-методологическая функция правовой науки характеризуется тем что теоретические знания о государстве и праве и методы их познания выступают основой последующих исследований проблем данной науки обеспечивают получение новых достоверных знаний о политикоправовых явлениях и процессах. Практическая функция выражается в глубоком научном обосновании правовой наукой политикоправовой практики формулировании...
74463. Понятия и их дефиниция. Правила определения понятий 15.29 KB
  Понятия и их дефиниция. Объективной основой понятия могут выступать конкретные явления процессы их отдельные свойства компоненты связи которые в логике обозначаются общим понятием предмет. Содержание понятия составляет совокупность признаков благодаря которой осуществляются обобщение и выделение предмета. Это понятия правонарушение правоотношение норма права.
74464. Правовая наука как деятельность и социокультурный институт 18 KB
  Поскольку знания о государстве и праве об истории правовой науки представляют собой результат активной специальной деятельности людей то правовая наука правомерно рассматривается как деятельность благодаря которой были получены знания. В итоге правовая наука призвана раскрывать закономерности функционирования и развития права и государства и на этой основе формулировать конкретные предложения по совершенствованию действующего законодательства и и деятельности государства по управлению делами общества. Содержит рекомендации о формах и...
74465. Загальна організація та методика здійснення НДР с у вищих навчальних закладах 98 KB
  Основні етапи організації педагогічного дослідження. Особливості організації праці під час наукового дослідження. Будьяке педагогічне дослідження починається з вивчення проблеми яка виділяється для спеціального вивчення. Сутність наукової проблеми завжди криється у відображенні наявних суперечностей пізнання які можуть бути розвязані тільки засобами наукового дослідження.
74466. Логіка наукового дослідження. Визначення наукового апарату у педагогічних дослідженнях 58 KB
  Логіка наукового дослідження. Визначення наукового апарату у педагогічних дослідженнях План. Обєкт і предмет педагогічного дослідження їх відмінності та взаємозвязок. Порядок визначення Методика формулювання мети гіпотези та завдання дослідження.