Главная Обратная связь

Дисциплины:






Усовершенствованный метод Эйлера-Коши



Хотя тангенс угла наклона касательной к истинной кривой в исходной точке известен и равен , он изменяется в соответствии с изменением независимой переменной. Поэтому в точке x0+h наклон касательной уже не таков, каким он был в точке x0. Следовательно, при сохранении начального наклона касательной на всем интервале h в результаты вычислений вносится погрешность. Точность метода Эйлера можно существенно повысить, улучшив аппроксимацию производной. Это можно сделать, например, используя среднее значение производной в начале и в конце интервала. В усовершенствованном методе Эйлера-Коши сначала вычисляется «грубое приближение» решения по методу Эйлера:

y*i+1 = yi + h·f(xi, yi),

которое используется для вычисления приближенного значения производной в конце интервала f*i+1 = f(xi+1, y*i+1).

Вычислив среднее между этим значением производной и её значением в начале интервала, найдём более точное значение yn+1:

Yi+1 = yi + [f(xi, yi) + f(xi+1, y*i+1)] .

Геометрическая интерпретация этого метода приведена на рисунке 2.4.

 

Рисунок 2.4 – Геометрическая интерпретация усовершенствованного метода Эйлера-Коши

Получение решения задачи Коши усовершенствованным методом Эйлера-Коши на отрезке [X0, XK] оформим в виде процедуры.

На рисунке 2.5 приведена блок-схема процедуры ALER_KOSHY(X0, XK, Y0,N,Y) для решения задачи Коши описанным выше усовершенствованным методом Эйлера-Коши.

ALER_KOSHY (X0, XK, Y0, N, Y)

h = (XK – X0) / N

Y0= Y0

i = 0, … , N-1

x = X0 + i * h

Z = Yi + h * F(x, Yi)

Yi+1 = Yi + h*(F(x, Yi)+ F(x+h, Z)) / 2

End

Рисунок 2.5 - Блок-схема процедуры ALER_KOSHY

F(x) – заданная функция – должна быть описана отдельно.

Входные параметры:

X0, XK – начальное и конечное значения независимой переменной;

Y0 – значение y0 из начального условия y(x0) = y0;

N – количество отрезков разбиения;

Выходные параметры:

Y – массив значений искомого решения в узлах сетки;

Этот метод является методом второго порядка, так как в нём используется член ряда Тейлора, содержащий h2. Ошибка на каждом шаге при использовании этого метода, имеет порядок h3.

 

2.3 Метод Рунге – Кутта

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

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

y(x0) = y0.

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

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

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

где

, i = 0, 1, 2, …

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

Это явный четырёхэтапный метод четвёртого порядка точности.



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

На рисунке 2.6 приведена блок-схема процедуры RUNGE(X0, XK, Y0, N, Y) для решения задачи Коши описанным выше методом Рунге – Кутта.

На рисунке 2.7 приведена блок-схема алгоритма основной программы для решения задачи Коши и получения результатов с фиксированным количеством отрезков разбиения N.


F(x, y) – заданная функция – должна быть описана отдельно.

Входные параметры:

X0, XK – начальное и конечное значения независимой переменной;

Y0 – значение y0 из начального условия y(x0) = y0;

N – количество отрезков разбиения;

Выходные параметры:

Y – массив значений искомого решения в узлах сетки;

RUNGE(X0, XK, Y0, N, Y)

h = (XK – X0) / N

i = 0, … , N-1

x = X0 + i * h

K1 = h * F(x, Yi)

K2 = h * F(x + h/2, Yi + K1 / 2)

K3 = h * F(x + h/2, Yi + K2 / 2)

K4 = h * F(x + h, Yi + K3)

K = (K1 + 2*K2 + 2*K3 + K4) / 6

Yi+1 = Yi + K

End

Рисунок 2.6 - Блок-схема процедуры RUNGE

В основной программе происходит обращение к процедуре RUNGE(X0, XK, Y0, N, Y), вычисляющей значения искомой функции yj в точках xj методом Рунге – Кутта.

Исходными данными в данной задаче являются:

X0, XK – начальное и конечное значения независимой переменной;

Y0 – значение y0 из начального условия y(x0) = y0;

N – количество отрезков разбиения.

Результаты работы программы выводятся в виде двух столбцов:

X – массив значений узлов сетки;

Y – массив значений искомого решения в соответствующих узлах сетки.


Начало

Ввод X0, XK, Y0, N

RUNGE(X0, XK, Y0, N, Y)

h = (XK – X0) / N

i = 0 … N

X = X0 + i * h

Вывод X, Yi

End

Рисунок 2.7 - Блок-схема алгоритма основной программы для решения задачи Коши с фиксированным количеством отрезков разбиения N


2.4 Методы Рунге – Кутта для системы дифференциальных уравнений

 

Методы Рунге – Кутта можно использовать для решения систем дифференциальных уравнений и, следовательно, для решения дифференциальных уравнений более высоких порядков, так как любое дифференциальное уравнение n-го порядка, с помощью замены, можно свести к системе из n дифференциальных уравнений первого порядка.

Например, в дифференциальном уравнении второго порядка

можно принять . Тогда и получаем систему из двух уравнений первого порядка:

где, в данном случае, g(x, y, z) = z.

Задача Коши при этом содержит два начальных условия

y(x0) = y0 , z(x0) = z0 .

Формулы Рунге – Кутта для рассматриваемого случая имеют вид

yi+1 = yi + K и zi+1 = zi + L , i = 0, 1, 2, …N

где

,

а числа K1, K2, K3, K4, L1, L2, L3, L4 вычисляются по формулам:

 

Выбор шага

 

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

Обычно, выбирая величину шага, стремятся, чтобы локальная ошибка на шаге была меньше некоторой заданной допустимой величины. Если порядок точности метода p, то локальная ошибка определяется выражением

C.hp+1,

где С – некоторая постоянная, а h – шаг.

При использовании метода Рунге – Кутта локальную ошибку, как правило, не удаётся выразить в явной форме (она выражается через производную четвёртого порядка). Для оценки этой ошибки обычно используется правило Рунге (двойного пересчёта).

Для этого проводят вычисления сначала с шагом h, а затем – с шагом h/2. Если yjприближение, вычисленное с шагом h, а у*j с шагом h/2, то справедлива оценка:

.

Таким образом, чтобы получить решение задачи Коши методом Рунге – Кутта с некоторой заданной локальной погрешностью ε, следует выполнять двойной пересчёт пока не выполнится условие:

На рисунке 2.8 приведена блок-схема алгоритма основной программы решения задачи Коши с использованием правила Рунге для получения результатов с заданной локальной погрешностью ε. В основной программе происходит обращение к процедуре RUNGE(X0, XK, Y0, N, Y), вычисляющей значения искомой функции yj в точках xj описанным выше методом Рунге – Кутта (порядок метода p = 4).

Начало

Ввод X0, XK, Y0, N, Eps

RUNGE(X0, XK, Y0, N, Y)

N1 = N

N = N * 2

i = 0 … N1

Y1i = Yi


RUNGE(X0, XK, Y0, N, Y)

max = 0

i = 0 … N1

-
|Y1i – Y2i| > max

+
max = |Y1i – Y2i|

-
max < Eps

+
h = (XK – X0) / N

i = 0 … N

X = X0 + i * h

Вывод X, Yi

End

Рисунок 2.8 - Блок-схема алгоритма основной программы решения задачи Коши с использованием правила Рунге для получения результатов с заданной локальной погрешностью ε

Исходными данными в данной задаче являются:

X0, XK – начальное и конечное значения независимой переменной;

Y0 – значение y0 из начального условия y(x0) = y0;

N – количество отрезков разбиения;

Eps – заданная локальная погрешность ε.

Результаты работы программы выводятся в виде двух столбцов:

X – массив значений узлов сетки;

Y – массив значений искомого решения в соответствующих узлах сетки.

 

 





sdamzavas.net - 2017 год. Все права принадлежат их авторам! В случае нарушение авторского права, обращайтесь по форме обратной связи...