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)


 

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

54770. ХИМИЧЕСКАЯ АЗБУКА ПИЩИ 186 KB
  Задача устно В куске белого пшеничного хлеба 08 мг железа. Тема урока: Железо его свойства нахождение в природе Цели урока: Знать положение железа в периодической системе Д. Менделеева нахождение железа в природе свойства железа. Уметь объяснять суть химических реакций с точки зрения окислительно восстановительной теории обосновывать необходимость получения железа из руд.
54772. Общее недоразвитие речи 30.5 KB
  Познакомить учащихся с документацией, необходимой для обследования детей с ОНР. Развивать практические навыки и умения у учащихся при частичном обследовании детей с ОНР. Формировать интерес к профессии логопеда и воспитывать гуманное отношение к детям с тяжелыми нарушениями речи.
54773. ЖИЗНЬ В ОКЕАНЕ 178 KB
  Продолжить формирование представлений и знаний о Мировом океане. Познакомить учащихся с особенностями и условиями жизни в океане с разнообразием его обитателей и их распределением и распространением. Оборудование: карта полушарий или карта Мирового океана книги видеофильм Жизнь в Океане таблицы рисунки доклады учащихся.
54774. Безработица 52 KB
  Основные понятия: безработица рабочая сила рынок труда естественная безработица фрикционная институциональная добровольная вынужденная структурная региональная циклическая скрытая частичная уровень безработицы полная занятость.
54775. Греческие колонии на берегах Средиземного и Чёрного морей 94 KB
  Этот период называют Великой греческой колонизацией временем когда греки активно осваивали новые земли и основали множество колоний. Нам предстоит сегодня выяснить: Что дала грекам колонизация т ответить навопросы слайд 2 Далее учитель обращается к учащимся с вопросом...
54776. ОРГАНИЗАЦИЯ ФИЗИЧЕСКОГО ВОСПИТАНИЯ В ОБЩЕОБРАЗОВАТЕЛЬНЫХ УЧРЕЖДЕНИЯХ 126 KB
  Физкультурные минуты во время уроков; физические упражнения и подвижные игры на удлиненных переменах; ежедневный час здоровья в группах продленного дня; занятия ритмикой.; группы общей физической подготовки; б общешкольные физкультурно-массовые и спортивные мероприятия...