Лабораторная работа №9. Численное решение дифференциальных уравнений — КиберПедия 

Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...

История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...

Лабораторная работа №9. Численное решение дифференциальных уравнений

2017-12-10 236
Лабораторная работа №9. Численное решение дифференциальных уравнений 0.00 из 5.00 0 оценок
Заказать работу

Методы численного решения дифференциальных уравнений первого порядка

Дифференциальным уравнением первого порядка называют уравнение вида:

. (1)

При численном решении дифференциального уравнения первого порядка вида (1) с начальным условием Y (x0) = y0 (задача Коши) сначала выбираем фиксированное приращение аргумента h = (xn -x0) /n, где x0 – начальная точка интервала интегрирования, xn - конечная точка интервала интегрирования, n – число шагов. Далее, используя один из итерационных методов численного интегрирования дифференциальных уравнений первого порядка, находим значение Y (xn).

Метод Эйлера

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

(2)

Так, для дифференциального уравнения вида (1) при достаточно малых значениях приращения аргумента x, можно, представив производную в виде отношения приращения функции к приращению аргумента, получить следующее приближенное представление в виде конечно-разностного уравнения:

(3)

Из этого представления легко выразить «новое» значение функции (значение функции в точке x+h) – расчетную формулу метода Эйлера:

(4)

Описание алгоритма численного интегрирования дифференциального уравнения первого порядка методом Эйлера:

Задаем начальное x0 и конечное xn значения отрезка интегрирования, начальное y0, т.е. значение функции y в точке x0, а также количество шагов интегрирования n.

Вычисляем величину шага интегрирования h = (xn -x0) /n.

Задаем цикл по k от 2 до n+1.

В цикле, на основе значения xk-1 вычисляем xk, т.е. x1 = x0 + h, x2 = x1 + h и т.д.

В цикле на основе значения Yk-1 по рекуррентной формуле вычисляем yk, т.е. Y1 = Y0 + h * F (x0,Y0), Y2=Y1+h*F (x 1 ,Y 1) и т.д. Значение F (xk,Yk) должно вычисляться в функции, соответствующей правой части дифференциального уравнения. Конец цикла.

Конец алгоритма.

 

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

x0=начальное_значение_х

xn=конечное_значение_х

y0=начальное_значение_Y

n=количество_шагов_интегрирования

 

h=(xn-x0)/n

 

Определить Массив X(n+1)

Определить Массив Y(n+1)

X(1)=x0

Y(1)=y0

 

Цикл по i от 2 до n+1

X(i)=X(i-1)+h

Y(i)=Y(i-1)+h*F(X(i-1),Y(i-1))

Конец Цикла

 

Печать " Решение: Значения х Значения Y(х):"

Цикл по i от 1 до n+1

Печать X(i),Y(i)

Конец Цикла

 

Определить Функцию F

Параметры x,y

f=.... *** Задается вид функции

Вернуть f

Конец Определения Функции

 

Покажем пример реализации метода Эйлера на примере уравнения

, т.е. (5)

При аналитическом интегрировании данного уравнения получаем начальное значение функции в точке x0 =0 и вид искомой функции:

, .

Пример реализации алгоритма численного интегрирования дифференциального уравнения первого порядка методом Эйлера на VFP для уравнения (5):

SET DECIMALS TO 8

CLEAR

* Начальное и конечное значения х

x0=0

xn=1

* Начальное значение y

y0=1

* Количество итераций

n=10

 

h=(xn-x0)/n

 

DIMENSION X(n+1),Y(n+1)

X(1)=x0

Y(1)=y0

 

*Y(i+1)=Y(i)+h*F(X(i),Y(i))

FOR i=2 TO n+1

X(i)=X(i-1)+h

Y(i)=Y(i-1)+h*F(X(i-1),Y(i-1))

ENDFOR

 

? " Решение:”

? " Значения Х Известные значения Y Вычисленные значения Y:"

FOR i=1 TO n+1

?X(i),F_test(X(i)),Y(i)

ENDFOR

 

 

function F

lPARAMETERS x,y

f=y

RETURN f

ENDFUNC

 

function F_test

lPARAMETERS x

F_test=EXP(x)

RETURN F_test

ENDFUNC

 

Пример реализации алгоритма численного интегрирования дифференциального уравнения первого порядка методом Эйлера на VBA для уравнения (5):

Sub Euler_Test()

' Начальное и конечное значения х

x0 = 0

xn = 1

' Начальное значение y

y0 = 1

' Количество итераций

n = 10

 

h = (xn - x0) / n

 

ReDim x(n + 1)

ReDim y(n + 1)

x(1) = x0

y(1) = y0

 

'Y(i+1)=Y(i)+h*F(X(i),Y(i))

For i = 2 To n + 1

x(i) = x(i - 1) + h

y(i) = y(i - 1) + h * F(x(i - 1), y(i - 1))

Next i

 

Debug.Print "РЕШЕНИЕ:"

Debug.Print "Значения Х Известные значения Y Вычисленные значения Y"

For i = 1 To n + 1

Debug.Print x(i), F_test(x(i)), y(i)

Next i

 

End Sub

 

 

Function F(x, y)

F = y

End Function

 

Function F_test(x)

F_test = Exp(x)

End Function

 

Результат работы программы:

РЕШЕНИЕ:

Значения Х Известные значения Y Вычисленные значения Y

0 1 1

0,1 1,10517091807565 1,1

0,2 1,22140275816017 1,21

0,3 1,349858807576 1,331

0,4 1,49182469764127 1,4641

0,5 1,64872127070013 1,61051

0,6 1,82211880039051 1,771561

0,7 2,01375270747048 1,9487171

0,8 2,22554092849247 2,14358881

0,9 2,45960311115695 2,357947691

1 2,71828182845905 2,5937424601

Метод Кранка-Николсона

Метод Кранка-Николсона представляет собой модификацию метода Эйлера, в которой правая часть разностной формы дифференциального уравнения представляется в виде среднего значения правой части в точке x и правой части в точке x+h:

(6)

Поскольку искомое значение функции в точке x+h присутствует и в левой и в правой части уравнения – эта формула содержит Y (x+h) неявно, поэтому, для получения расчетной формулы необходимо выразить Y (x+h) явно. Выразить явно Y (x+h) возможно не для любого вида F (Y (x) ,x). Метод Кранка-Николсона можно применять, tсли правая часть дифференциального уравнения зависит только от x, т.е. F (Y (x) ,x)= F (x).

 

Рассмотрим пример дифференциального уравнения с разрешимой правой частью, зависящей от x и Y (x):

, (7)

Запишем разностный вид этого дифференциального уравнения:

После простых преобразований:

1) ,

2) ,

3) .

Получим расчетную формулу:

. (8)

В случае, когда правая часть дифференциального уравнения зависит только от х, формула метода Кранка-Николсона имеет вид:

(9)

Например, для дифференциального уравнения с правой частью, зависящей только от x:

(10)

формула Кранка-Николсона имеет вид:

. (11)

 

Описание алгоритма численного интегрирования дифференциального уравнения первого порядка с правой частью уравнения, зависящей только от х, методом Кранка-Николсона:

Задаем начальное x0 и конечное xn значения отрезка интегрирования, начальное y0, т.е. значение функции y в точке x0, а также количество шагов интегрирования n.

Вычисляем величину шага интегрирования h.

Задаем цикл по k от 2 до n+1.

В цикле на основе значения xk-1 вычисляем xk, т.е. x 1 = x0 + h, x2 = x 1+ h и т.д.

В цикле на основе значения Yk- 1 по рекуррентной формуле вычисляем yk, т.е. Y 1= Y0 + h *(F (x0,Y0) +F (x 1 ,Y 1)) /2, Y2=Y 1 +h* (F(x 1 ,Y 1) +F (x2,Y2)) /2 и т.д. Значение F (xk,Yk) должно вычисляться в функции, соответствующей правой части дифференциального уравнения. Конец цикла.

Конец алгоритма.

 

Алгоритм численного интегрирования дифференциального уравнения первого порядка с правой частью уравнения, зависящей только от х, методом Кранка-Николсона на естественном языке:

x0=начальное_значение_х

xn=конечное_значение_х

y0=начальное_значение_Y

n=количество_шагов_интегрирования

 

h=(xn-x0)/n

 

Определить Массив X(n+1)

Определить Массив Y(n+1)

X(1)=x0

Y(1)=y0

 

Цикл по i от 2 до n+1

X(i)=X(i-1)+h

Y(i)=Y(i-1)+h*(F(X(i-1),Y(i-1))+ F(X(i),Y(i)))/2

Конец Цикла

 

Печать " Решение: Значения х Значения Y(х):"

Цикл по i от 1 до n+1

Печать X(i),Y(i)

Конец Цикла

 

Определить Функцию F

Параметры x,y

f=.... *** Задается вид функции

Вернуть f

Конец Определения Функции

 

Покажем пример реализации метода Кранка-Николсона на примере уравнения (10). При аналитическом интегрировании уравнения (10) получаем начальное значение функции в точке x0 =0 и вид искомой функции:

, . (12)

 

Пример реализации алгоритма численного интегрирования дифференциального уравнения первого порядка с правой частью, зависящей только от х, методом Кранка-Николсона на VFP для уравнения (10):

SET DECIMALS TO 8

CLEAR

* Начальное и конечное значения х

x0=0

xn=1

* Начальное значение y

y0=3

* Количество итераций

n=10

 

h=(xn-x0)/n

 

DIMENSION X(n+1),Y(n+1)

X(1)=x0

Y(1)=y0

 

*Y(i+1)=Y(i)+h*F(X(i),Y(i))

FOR i=2 TO n+1

X(i)=X(i-1)+h

Y(i)=Y(i-1)+h*F(X(i-1),Y(i-1))

ENDFOR

 

? " Решение:"

? " Значения Х Известные значения Y Вычисленные значения Y:"

FOR i=1 TO n+1

?X(i),F_test(X(i)),Y(i)

ENDFOR

 

 

function F

lPARAMETERS x,y

f=x*x+3*x

RETURN f

ENDFUNC

 

function F_test

lPARAMETERS x

F_test=2*x+3

RETURN F_test

ENDFUNC

 

Пример реализации алгоритма численного интегрирования дифференциального уравнения первого порядка с правой частью, зависящей только от х, методом Кранка-Николсона на VBA для уравнения (10):

Sub Krank_Nikolson_Test()

' Начальное и конечное значения х

x0 = 0

xn = 1

' Начальное значение y

y0 = 3

' Количество итераций

n = 10

 

h = (xn - x0) / n

 

ReDim x(n + 1)

ReDim y(n + 1)

x(1) = x0

y(1) = y0

 

'Y(x+h) = Y(x) + h*(x^2 + 3*x + (x+h)^2 + 3*(x+h))/2

For i = 2 To n + 1

x(i) = x(i - 1) + h

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

Next i

 

Debug.Print "РЕШЕНИЕ:"

Debug.Print "Значения Х Известные значения Y Вычисленные значения Y"

For i = 1 To n + 1

Debug.Print x(i), F_test(x(i)), y(i)

Next i

 

End Sub

 

 

Function F(x, y)

F = x ^ 2 + 3 * x

End Function

 

Function F_test(x)

F_test = 2 * x + 3

End Function

 

Результат работы программы на VBA:

РЕШЕНИЕ:

Значения Х Известные значения Y Вычисленные значения Y

0 3 3

0,1 3,2 3,0155

0,2 3,4 3,063

0,3 3,6 3,1445

0,4 3,8 3,262

0,5 4 3,4175

0,6 4,2 3,613

0,7 4,4 3,8505

0,8 4,6 4,132

0,9 4,8 4,4595

1 5 4,835

 


Поделиться с друзьями:

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...

Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...

Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...

Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьше­ния длины пробега и улучшения маневрирования ВС при...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.065 с.