Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теория / 2 / 11-DIFF.DOC
Скачиваний:
62
Добавлен:
30.04.2013
Размер:
90.11 Кб
Скачать

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

В этом методе для расчета очередного приближения производится усреднение тангенсов углов наклона касательных в двух соседних точках:

1) Через точку xi,yi проводится касательная до пересечения с прямой xi+1 = xi + h. с тангенсом угла наклона tg(a1) = f(xi , yi) .

2) В полученной точке пересечения по методу Эйлера рассчитывается значение функции yi+1 = yi + h * yi' и вычисляется новая производная tg(a2) = f(xi+1,yi+1) = f(xi+h,yi+h*yi') .

3) Далее осуществляется возврат в точку xi,yi и через нее выполняется шаг величиной h под углом наклона, тангенс которого есть среднее арифметическое двух предыдущих тангенсов:

tg(a) = [ tg(a1) + tg(a2) ]/2 = [ f(xi,yi) + f(xi+h,yi+h*yi') ]/2

Таким образом окончательное расчетное соотношение усовершенствованного метода Эйлера-Коши имеет вид:

yi+1 = yi + h/2 * [ f(xi,yi) + f(xi+h,yi+h*yi') ]/2

xi+1 = xi + h

Пример:

n

x

y

x1=x+h

y'=f(x,y)

y1=y+h*y'

f1=f(x,y)+f(x1,y1)

h*f1/2

0

0.000

1.000

1.000

-1.000

0.000

1.000

0.500

1

1.000

1.500

2.000

0.500

2.000

6.500

3.250

2

2.000

4.750

3.000

3.250

8.000

13.250

6.625

3

3.000

11.375

4.000

6.625

18.000

20.62

10.3135

4

4.000

21.688

5.000

10.313

32.000

28.313

14.156

5

5.000

35.844

Метод Рунге-Кутта

Алгоритм этого метода может быть представлен в виде:

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

k0 = f(xi , yi)

k1 = f(xi + h/2 , yi + k0*h/2)

k2 = f(xi + h/2 , yi + k1*h/2)

k3 = f(xi + h , yi + k2*h)

Таким образом, метод Рунге-Кутта требует на каждом шаге четырехкратного вычисления правой части уравнения f(x,y) .Метод Рунге-Кутта требует большого объема вычислений, однако это окупается повышенной точностью, что дает возможность проводить счет с большим шагом. Другими словами, для получения результатов с одинаковой точностью в методе Эйлера потребуется значительно меньший шаг, чем в методе Рунге-Кутта.

Пример:

n

x

y

k0=f(xi,yi)

k1=f(xi+h/2,yi +k0*h/2)

k2=f(xi+h/2,yi+k1*h/2)

k3=f(xi+h,yi+k2*h)

0

0.000

1.000

-1.000

0.000

-0.500

1.500

1

1.000

0.917

1.083

3.042

2.063

5.021

2

2.000

3.635

4.365

6.682

5.523

8.841

3

3.000

9.905

8.095

10.548

9.321

12.774

4

4.000

20.006

11.994

14.497

13.245

16.748

5

5.000

34.044

Решение систем дифференциальных уравнений

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

dY/dx = j(x, Y, Z)

dZ/dx = y(x, Y, Z)

Начальные условия заданы в виде: Y(x0) = y0 , Z(x0) = z0 .

Если использовался метод Эйлера, то можно записать:

Yi+1 = Yi + h * j(xi, Yi, Zi)

Zi+1 = Zi + h * y(xi, Yi, Zi)

xi+1 = xi + h

Если, например, использовался метод Рунге-Кутта, то получим:

yi+1 = yi + h/6 * (k0 + 2k1 + 2k2 + k3),

zi+1 = zi + h/6 * (m0 + 2m1 + 2m2 + m3), i = 0,1, …

k0 = j(xi , yi , zi) , m0 = y(xi , yi, zi)

k1 = j(xi + h/2 , yi + k0/2 , zi + m0*h/2) , m1 = y(xi + h/2 , y i + k0/2 , zi + m0*h/2)

k2 = j(xi + h/2 , yi + k1/2 , zi + m1*h/2) , m2 = y(xi + h/2 , yi + k1/2 , zi + m1*h/2)

k3 = j(xi + h , yi + k2 , zi + m2*h) , m3 = y(xi + h , yi + k2 , zi + m2*h)

xi+1 = xi + h

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

d2Y/dx2 = f(x, Y, dY/dx),

Y(x0) = y0 , Y'(x0) = z0

Если ввести вторую неизвестную функцию Z(x) = Y'(x), то можно получить:

dZ/dx = f(x, Y, Z)

dY/dx = Z

Y(x0) = y0 , Z(x0) = z0

Все рассмотренные методы относятся к группе одношаговых методов, т.е. методов, в которых для получения решения в каждом новом расчетном узле достаточно иметь значение функции лишь в предыдущем узле. Это позволяет начать счет при i = 0 по известным начальным значениям.

Другой путь основан на том, что для вычисления значения yi+1 используются результаты не одного, а k предыдущих шагов, т.е. значения yi-k+1, yi-k+2, …, yi .В этом случае получается k - шаговый метод.

Соседние файлы в папке 2