16237

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

Курсовая

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

Визуализация численных методов. Решение обыкновенных дифференциальных уравнений. Содержание Введение. 1. Постановка задачи и математическая модель. 2. Описание численных методов применительно к конкретной задаче 3. Блоксхемы программ и основных подпрограм

Русский

2013-06-20

350 KB

3 чел.

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

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

Содержание

Введение. 

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

2. Описание численных методов (применительно к конкретной задаче) 

3. Блок-схемы программ и основных подпрограмм. 

4. Листинг программы на языке VisualBasic. 

5. Формы проекта

6. Решение задачи в Mahtcad. 

Заключение. 


Введение.

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

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

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

Целью данной работы является решение задачи Коши для дифференциального уравнения 1-го порядка.

Чтобы достичь поставленной цели были выдвинуты следующие задачи:

1. Изучить численные методы решения дифференциальных уравнений;

2. Самостоятельно вычислить первую точку интегральной кривой заданными методами;

3. Написать программу для построения интегральной кривой на языке программирования VusuaiBasic;

4. Проверить решение в среде MathCad.

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

Решить методами Эйлера и Эйлера модифицированного задачу Коши для дифференциального уравнения 1-го порядка на отрезке [X0; Xk] с шагом h и начальным условием: Y(X0) = Y0.

Ответ должен быть получен в виде таблицы результатов:

X

Y(1)

Y(2)

YT

X0

Y0(1)

Y0(2)

Y(X0)

X1

Y1(1)

Y1(2)

Y(X1)

Xk

Yk(1)

Yk(2)

Y(Xk)

Где Y(1), Y(2) – решения, полученные различными численными методами, YT – точное решение дифференциального уравнения.

Возможно представление результатов решения не в виде таблицы, а в виде списков.

Данные таблицы визуализировать на форме в виде графиков.

Перед вычислением последнего столбца таблицы результатов необходимо из начальных условий вычесть значение коэффициента c, используемого в общем решении.

  

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

X0

Xk

h

Y0

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

(y^2-2*x*y)dx+x^2=0

1

2

0,1

0.2

y=x^2/(c+x)


2. Описание численных методов (применительно к конкретной задаче)

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

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

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

y’= f(x,y)

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

y(x0)=y0

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

xi = x0 +i h и yi = y(xi ), где i=0,1,2… 

xi  узлы сетки,

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

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

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


Расчет первой точки методом Эйлера модифицированного.

  1.  строим оси координат;
  2.  отмечаем начальную точку интегральной кривой А(x0;y0);
  3.  ищем угол наклона касательной к графику в точке А(1;0.2);

y’(x0) = f(x0;y0)

α0 = arctg(f(x0;y0))

α0 = arctg((0.2/1)*( 2-0.2/1)) = arctg(0.36)

  1.  строим касательную L0 к графику функции в точке А под углом α0 ;
  2.  находим x1 по формуле x1=x0+i*h

x1=1+1*0.1=1.1

  1.  отмечаем середину отрезка x1/2=x0+h/2 и проводим прямую из этой точки до прямой L0, отмечаем точку B(xb;yb);
  2.  ищем координаты точки В:

xb = x0+h/2

xb = 1+0.05=1.05

yb =  y0+h/2*f(x0;y0)

yb = 2+0.05*((0.2/1)*(2-0.2/1))

yb = 2.018

значит точка В имеет координаты (1.05;2.018);

  1.  ищем угол наклона касательной к графику в точке В:

αb = arctg(f(xb;yb))

αb= arctg((2.018/1.1)*(2-2.018/1.1)=arctg(0.304);

  1.  строим касательную L1 в точке В под углом αb;
  2.  проводим прямую x1=x0+h (=1+0.1=1.1)до пересечения с прямой L1, отмечаем точку С(x1;y1);
  3.  ищем y точки С:

y1=yb+h/2*f (xb;yb)

y1= 2.018+0.05*0.304

y1=2.17

значит точка С имеет координаты (1.1; 2.17)

Метод Рунге-Кутта 4-го порядка

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

y’= f(x,y)

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

y(x0)=y0

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

xi = x0 +i h и yi = y(xi ), где i=0,1,2… 

Согласно методу Рунге-Кутта четвертого порядка, последовательность значения yi  искомой функции y определяется по формуле:

yi+1 = yi +∆ yi

где

∆ yi= 1/6* ( k1+2k2+2k3+k4 ), i=0,1,2…

а числа k1 ω , k2 ω, k3 ω , k4 ω на каждом шаге вычисляются по формулам:

k1= h * f ( x1, y1 )

k2= h * f ( x1+h/2, y1+ k1/2 )

k3= h * f ( x1+h/2, y1+ k2/2 )

k4= h * f ( x1+h, y1+k3 )

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

Метод Рунге-Кутта 4 порядка
Расчет первой точки методом Рунге-Кутта 4 порядка.

k1 =  h*f(x0;y0)

k1 = 0.1*(0.2*(2-0.2)) = 0.036

k2 = h*f(x0+h/2; y0+k1/2)

k2 = 0.1*((0.218/1.05)*(2-0.218/1.05)) = 0.037

k3 = h*f(x0+h/2;y0+k2/2)

k3 = 0.1*((0.2185/1.05)(2-0.2185)) = 0.0373

k4 = h*f(x0+h/2;y0+k3)

k4 = 0.1*((0.2373/1.1)(2-0.2373/1.1))=0.038

∆y = k = (k1+2*k2+2*k3+k4)/6

y = k = (0.036+2*0.037+2*0.0373+0.038)/6 = 0.036

y1=∆y +y0

y1 = 0.036 + 0.2 = 0.236

3. Блок-схемы программ и основных подпрограмм.

Для решения задачи и составления программы составим основные блок-схемы, которые приведены ниже.

1.Подпрограмма метода Эйлера модифицированного

 

 


2. Подпрограмма метода Рунге-Кутта 4 порядка

3. Подпрограмма общего решения функции

4. Алгоритм функции


5. Алгоритм программы



4. Листинг программы на языке VisualBasic.

Dim x(), em(), rk(), o() As Single

Private i, n As Integer

Private x0, xk, y0, h, miny, maxy, minx, maxx As Single

Function f(a, b) As Single

f = -((b * b) - 2 * a * b) / (a * a)

End Function

Private Sub EilerM()

ReDim x(n)

ReDim em(n)

x(0) = x0

em(0) = y0

For i = 0 To n - 1

x(i) = Round(x0 + i * h, 3)

em(i + 1) = Round(em(i) + h * f(x(i) + h / 2, em(i) + h / 2 * f(x(i), em(i))), 3)

Next i

End Sub

Private Sub RungeKutt()

ReDim x(n)

ReDim rk(n)

x(0) = x0

rk(0) = y0

For i = 0 To n - 1

x(i) = Round(x0 + i * h, 3)

 k1 = h * f(x(i), rk(i))

 k2 = h * f(x(i) + (h / 2), rk(i) + (k1 / 2))

 k3 = h * f(x(i) + (h / 2), rk(i) + (k2 / 2))

 k4 = h * f(x(i) + h, rk(i) + k3)

 k = (k1 + 2 * k2 + 2 * k3 + k4) / 6

rk(i + 1) = Round(rk(i) + k, 3)

Next i

End Sub

Private Sub Obchee()

ReDim x(n)

ReDim o(n)

c = Round(((x0 * x0 / y0) - x0), 3)

For i = 0 To n

x(i) = Round(x0 + (i * h), 3)

o(i) = Round((x(i) * x(i)) / (c + x(i)), 3)

Next i

End Sub

Private Sub Command1_Click()

x0 = Val(Text1.Text)

xk = Val(Text2.Text)

y0 = Val(Text3.Text)

h = Val(Text4.Text)

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

c = Round(((x0 * x0 / y0) - x0), 3)

MSFlexGrid1.Cols = 4

MSFlexGrid1.Rows = n + 2

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

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

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

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

EilerM

RungeKutt

Obchee

For i = 0 To n

MSFlexGrid1.TextMatrix(i + 1, 0) = Str(x(i))

MSFlexGrid1.TextMatrix(i + 1, 1) = Str(o(i))

MSFlexGrid1.TextMatrix(i + 1, 2) = Str(em(i))

MSFlexGrid1.TextMatrix(i + 1, 3) = Str(rk(i))

Next i

miny = o(0)

maxy = o(n)

For i = 1 To n

If em(i) > maxy Then maxy = em(i)

If em(i) < miny Then miny = em(i)

If rk(i) > maxy Then maxy = rk(i)

If rk(i) < miny Then miny = rk(i)

If o(i) > maxy Then maxy = o(i)

If o(i) < miny Then miny = o(i)

Next i

Label9.Caption = Str(maxy)

Label10.Caption = Str(maxx)

Label11.Caption = Str(miny)

Label12.Caption = Str(minx)

Picture1.Cls

kx = (3600 - 240) / (xk - x0)

ky = (5640 - 360) / (maxy - miny)

For i = 0 To n - 1

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

z2 = Round(5640 - (em(i) - miny) * ky)

z3 = Round(240 + (x(i + 1) - x0) * kx)

z4 = Round(5640 - (em(i + 1) - miny) * ky)

Picture1.Line (z1, z2)-(z3, z4), RGB(0, 0, 9999)

Next i

For i = 0 To n - 1

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

z2 = Round(5640 - (rk(i) - miny) * ky)

z3 = Round(240 + (x(i + 1) - x0) * kx)

z4 = Round(5640 - (rk(i + 1) - miny) * ky)

Picture1.Line (z1, z2)-(z3, z4), RGB(0, 9999, 0)

Next i

For i = 0 To n - 1

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

z2 = Round(5640 - (o(i) - miny) * ky)

z3 = Round(240 + (x(i + 1) - x0) * kx)

z4 = Round(5640 - (o(i + 1) - miny) * ky)

Picture1.Line (z1, z2)-(z3, z4), RGB(9999, 0, 0)

Next i

End Sub

Private Sub Command2_Click()

End

End Sub

5. Формы проекта

Форма разработки проекта.

 


Форма с результатами работы проекта.


6. Решение задачи в Mathcad.


 


Заключение.

В курсовой работе были описаны методы Эйлера модифицированного и Рунге-Кутта четвертого порядка. С помощью которых была решена задача Коши первого порядка. В ходе работы были построены блок-схемы программ, разработан код программы построения графика в VisualBasic.

С помощью данной работы были закреплены навыки работы в различных приложениях WINDOWS, а именно Microsoft Word, Mathcad и  VisualBasic.

Курсовая работа на тему «Визуализация численных методов» показалась мне интересной и была выполнена по указаниям преподавателя.


y

x

y=y(x)

О

А

С

В

h/2

h

xi

xi+1

ε1

ε

α

α1

EilerM(x0,xk,y0,n,em)

h=(xk-x0)/n

i = 1, …, n-1

x = x0 + i * h

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

End

RungeKutt (x0,xk,y0,n,rk)

h=(xk-x0)/n

i = 1, …, n-1

nd

x(i) = x0 + i * h

k1 = h * f(x, rk )

k2 = h * f(x + (h / 2), rk  + (k1 / 2))

k3 = h * f(x + (h / 2), rk + (k2 / 2))

k4 = h * f(x + h, rk  + k3)

k = (k1 + 2 * k2 + 2 * k3 + k4) / 6

rk (i + 1) = rk (i) + k

Obchee

x(n), o(n)

i = 1, …, n

x(i) = (x0 + (i * h)

o(i) = ((x(i) * x(i)) / (c + x(i))

End

f (a,b)

f=b/a*(2-b/a)

End

Start

x0,xk,y0,h

n=(xk-x0)/h

C=(x^2/y)-x

i=0,..,n-1

x=x0+i*h

em(i)>maxy

Maxy=em(i)

em(i)<miny

Miny=em(i)

да

нет

да

нет

EilerM

RungeKutt

Obchee

rk(i)>maxy

Maxy = rk(i)

rk(i)<miny

miny=rk(i)

o(i)>maxy

maxy=o(i)

o(i)<miny

miny=o(i)

да

нет

да

нет

да

нет

да

нет

i=0,..,n-1

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

z2 = Round(5640 - (em(i) - miny) * ky)

z3 = Round(240 + (x(i + 1) - x0) * kx)

z4 = Round(5640 - (em(i + 1) - miny) * ky)

Picture1.Line (z1, z2)-(z3, z4), RGB(0, 0, 9999)

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

z2 = Round(5640 - (rk(i) - miny) * ky)

z3 = Round(240 + (x(i + 1) - x0) * kx)

z4 = Round(5640 - (rk(i + 1) - miny) * ky)

Picture1.Line (z1, z2)-(z3, z4), RGB(0, 9999, 0)

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

z2 = Round(5640 - (o(i) - miny) * ky)

z3 = Round(240 + (x(i + 1) - x0) * kx)

z4 = Round(5640 - (o(i + 1) - miny) * ky)

Picture1.Line (z1, z2)-(z3, z4), RGB(9999, 0, 0)

End

i=0,..,n-1

MSFlexGride

Label7

Label 6

Label 1

Text3

Text2

Text1

Picture1

Command2

Command1

Text4

Label 5

Label 4

Label 3

Label 2


 

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

42899. УПРАВЛЕНИЕ ПЕРСОНАЛОМ 46.06 KB
  Курсовая работа является самостоятельной научной работой студента и должна отражать приобретенные им знания и результаты исследования по общим и специальным разделам управления персоналом в рамках выбранной темы. Тематика курсового проектирования определяется программой дисциплины «Управление персоналом».
42900. Графіки в економічному моделюванні 140.48 KB
  В умовах ринкової системи управління виробничою і збутовою діяльністю підприємств і фірм в основі прийняття господарських рішень лежить ринкова інформація, а обгрунтованість рішень перевіряється ринком у ході реалізації товарів і послуг. При такому підході початковим пунктом усього циклу підприємницької діяльності стає вивчення споживчого попиту. Розглянемо деякі питання моделювання попиту і споживання.
42901. Бухгалтерский учет расчетов с бюджетом и внебюджетными фондами в ООО «Золотой Флок» 12.09 MB
  Еще Ф. Аквинский, известный церковный деятель и философ XIII в. высказывался о проблемах установления и сбора налогов следующим образом: он определял налоги, как «дозволенную форму грабежа». Речь идет о том, что взимание налогов всегда ущемляет чьи-то интересы и в определенной степени отягощает социальное положение.
42902. Комплексный анализ проблем оплаты труда на предприятии питания и предложение направлений совершенствования оплаты труда на предприятии 67.08 KB
  Формы и системы оплаты труда. Фонд оплаты труда и его структура. Направления совершенствования системы оплаты труда на предприятии. Администрация предприятий питания самостоятельно выбирает и применяет различные системы оплаты труда работников.
42903. Розробка блоку зв’язку з електроавтоматикою верстата 16Б16. Пристрій управління шпінделем 875.86 KB
  Числове програмне керування (ЧПК) (англ. Computer numerical control) - комп'ютеризована система керування, яка зчитує командні інструкції спеціалізованої мови програмування (наприклад, G-код) і керує приводами метало-, дерево- чи пластмасообробних верстатів та верстатним оснащенням.
42904. Предпримемательство: эволюционный подход 33.65 MB
  Предпринимательство есть способ хозяйствования, который в результате многовековой эволюции утвердился в экономике всех развитых стран. Первоначально предпринимателями называли предприимчивых людей, действующих на рынке, или просто людей энергичных, азартных, склонных к рискованным операциям. В дальнейшем к предпринимательству стали относить любую деятельность, направленную на увеличение прибыли и не запрещённую законом. Однако возникновение предпринимательства как оформившегося устойчивого явления относят к XVII веку.
42905. Сестринский процесс при ожирении 186.5 KB
  Эта проблема касается всех слоев населения независимо от социальной и профессиональной принадлежности, возраста, места проживания и пола. Так, в странах Западной Европы избыточную массу тела имеет от 10 до 20% мужчин и от 20 до 25% женщин. В некоторых регионах Восточной Европы доля людей, страдающих ожирением, достигла 35%. В России в среднем 30% трудоспособного населения имеют ожирение и 25% - избыточную массу тела.
42906. Разработка программы для реализации модели боя типа «Б» с учетом корректировки огня 66.8 KB
  Исходные данные В качестве исходных данных задачи принимаются следующие величины: N1 – численность наших войск на момент начала бояN2 – численность войск противника на момент начала бояn1 – численность при которой наши подразделения выходят из бояn2 – численность при которой подразделения противника выходят из бояλ1 – скорострельность наших подразделенийλ2 – скорострельность подразделений противникаP1 – вероятность поражения БЕ противника при попаданииP2 – вероятность поражения нашей БЕ при попаданииK1 – коэффициент корректировки огня наших...
42907. Розробка алгоритмів покриття та сортування 733.57 KB
  Алгоритм - це точний припис, що визначає обчислювальний процес, що веде від варійованих вихідних даних до шуканого результату. Саме слово «алгоритм» походить від латинської форми написання імені великого математика IX століття Аль Хорезмі (Мухаммеда ібн Муса аль Horesmi)