Алгоритм метода наискорейшего спуска

При заданной точке x алгоритм наискорейшего спуска заключается в реализации линейного поиска вдоль направления -grad(f(x))/||grad(f(x))|| или, что то же самое, вдоль направления -grad(f(x)).

Начальный этап. Пусть eps > 0 - константа остановки. Выбрать начальную точку x1, положить k=1 и перейти к основному этапу.

Основной этап. Если ||grad(f(x))|| < eps , то остановиться; в противном случае положить dk = -grad(f(x)) и найти lym[k] - оптимальное решение задачи минимизации f(xk + lym*dk) при lym >= 0. Положить x[k+1]=xk+lym[k]*dk, заменить k на k+1 и повторить основной этап.

Численное интегрирование

Постановка задачи

Вычисление скалярных аддитивных величин обычно сводится к суммированию бесконечно большого числа беcконечно малых слагаемых такого вида:

Алгоритм метода наискорейшего спуска - student2.ru

Например, если значение функции f(xi) считать проекцией силы на ось Ох, а малую величину Dхi - “элементарным” перемещением некоторой массы под действием этой силы, то произведение f(xi) Dхi = DАi даст “элементарную” работу DАi силы f на малом перемещении Dхi. Работа силы f на всем перемещении массы по свойству аддитивности будет равна сумме “элементарных” работ

Алгоритм метода наискорейшего спуска - student2.ru

Но так как физически не представляется возможным просуммировать бесконечно много слагаемых DАi, то, ограничиваясь n слагаемыми, можно получить приближенное значение данной величины:

Алгоритм метода наискорейшего спуска - student2.ru

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

Алгоритм метода наискорейшего спуска - student2.ru

где [a; b] - отрезок, на котором задана функция f.

Определение понятия интеграла и его геометрическую интерпретацию.

Пусть на конечном отрезке [a; b] задано непрерывную функцию f (рисунок 3), причем f(x) > 0, x Î [a; b] и a < b.

1.Разобьем отрезок [a; b] произвольным образом на n частичных отрезков точками:

a = x0 < x1 < x2 <...< xi < xi+1 < ... < xn = b.

2.Обозначим длину каждого частичного отрезка через

Алгоритм метода наискорейшего спуска - student2.ru (i = 0, 1, 2,...,n - 1).

3.Выберем произвольно в каждом частичном отрезке точку

Алгоритм метода наискорейшего спуска - student2.ru

4.Составим произведения значений функции f в точке Алгоритм метода наискорейшего спуска - student2.ru на длину i-го отрезка, т.е.

Алгоритм метода наискорейшего спуска - student2.ru

Рисунок 4

Алгоритм метода наискорейшего спуска - student2.ru

Геометрически это произведение дает площадь “элементарного” i-го прямоугольника, заштрихованного на рисунке 4.

Просуммируем полученные произведения

Алгоритм метода наискорейшего спуска - student2.ru : (1)

Полученную таким образом сумму (1) называют интегральной суммой. Геометрически эта сумма дает площадь всех n ’’элементарных’’ прямоугольников, то есть площадь ступенчатой фигуры. Отметим, что интегральных сумм (1) можно построить бесконечно много в силу того, что при их построении допускается два произвола: разбиение отрезка [a, b] на части точками хi и выбор точек Алгоритм метода наискорейшего спуска - student2.ru (i = 0, 1, ... ,n-1) на каждом из частичных отрезков Алгоритм метода наискорейшего спуска - student2.ru

6. Выполним предельный переход при условии, что Алгоритм метода наискорейшего спуска - student2.ru

Если при Алгоритм метода наискорейшего спуска - student2.ru интегральная сумма (1) имеет конечный предел, то этот предел называется интегралом функции f от а до b и обозначается Алгоритм метода наискорейшего спуска - student2.ru

Следовательно, Алгоритм метода наискорейшего спуска - student2.ru (2)

Таким образом, интегралом функции f на отрезке интегрировании от а до b называется предел интегральных сумм при условии, что максимальная длина частичных отрезков стремится к нулю, следовательно, число их неограниченно возрастает, то есть Алгоритм метода наискорейшего спуска - student2.ru .

В силу непрерывности функции f площадь ступенчатой фигуры (рис.33) при большом n “почти совпадает” с площадью криволинейной трапеции аAвb, а при Алгоритм метода наискорейшего спуска - student2.ru интеграл (2) и дает точное значение площади S криволинейной трапеции с основанием [a; b], ограниченной сверху графиком функции f:

S = Алгоритм метода наискорейшего спуска - student2.ru

Можно доказать, что если функции f непрерывна на отрезке [a; b], то предел (2) существует.

Формула (2) непригодна для точного вычисления интеграла, так как операция вычисления предела интегральной суммы практически не всегда легко выполнима.

Для вычисления точного значения интеграла (2) используют понятие первообразной функции. Пусть подынтегральная функция f непрерывна на отрезке [a; b] и известна ее первообразная F, то есть такая функция, что

F‘(x) = f(x), x Алгоритм метода наискорейшего спуска - student2.ru [a; b].

Тогда интеграл (2) может быть вычислен по формуле Ньютона-Лейбница

Алгоритм метода наискорейшего спуска - student2.ru = F(b) - F(a), (3)

как приращение первообразной функции F на отрезке [a; b].

Кроме того, можно доказать, что если существует интеграл (3), то одной из первообразных функций на [a;b] для подынтегральной функции является интеграл с переменным верхним пределом Алгоритм метода наискорейшего спуска - student2.ru так как

Алгоритм метода наискорейшего спуска - student2.ru

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

Однако очень часто нахождение первообразной функции затруднительно, громоздко или вообще невыполнимо в элементарных функциях. Тогда задача вычисления точного значения интеграла по формуле Ньютона-Лейбница (3) оказывается неразрешимой. Класс функций f, для которых первообразная F выражается через элементарные функции, весьма узок, а , значит, и формула (3) не всегда пригодна для практики. Например, не выражается в элементарных функциях первообразная для функции

Алгоритм метода наискорейшего спуска - student2.ru

В таких случаях действие интегрирования порождает новый класс неэлементарных функций. Так, для приведенной выше функции получаем (по определению) неэлементарную функцию

Алгоритм метода наискорейшего спуска - student2.ru (4)

которую называют интегральным синусом. Значение этой функции, например, при х = 1 равно Алгоритм метода наискорейшего спуска - student2.ru то есть значением функции является интеграл, не выражающийся в элементарных функциях, а не число в явном виде, что было бы практически значительно удобнее. Кроме того, на практике часто подынтегральная функция f задается графически или таблично, тогда само понятие первообразной теряет смысл и формула Ньютона - Лейбница, несмотря на ее большое теоретическое и практическое значение, опять “не работает”.

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

Алгоритм метода наискорейшего спуска - student2.ru (5)

в которых используется ряд значений подынтегральной функции. Формулу (и сумму) вида (5) называют квадратурной. Действительные числа Алгоритм метода наискорейшего спуска - student2.ru и Алгоритм метода наискорейшего спуска - student2.ru называют соответственно коэффициентами и узлами квадратурной формулы (5). Величину

Алгоритм метода наискорейшего спуска - student2.ru (6)

называют остаточным членом (или погрешностью) квадратурной формулы (5).

Заменяя интеграл квадратурной суммой, мы пренебрегаем остаточным членом R(f) (это погрешность метода). Выполняя вычисления по формуле (5), всегда оперируют не с точными, а с приближенными значениями подынтегральной функции Алгоритм метода наискорейшего спуска - student2.ru и коэффициентов Алгоритм метода наискорейшего спуска - student2.ru . Погрешность, с которой заданы значения Алгоритм метода наискорейшего спуска - student2.ru и Алгоритм метода наискорейшего спуска - student2.ru , переносится и на квадратурную сумму (это так называемая неустранимая погрешность R1 формулы (5)). Если Алгоритм метода наискорейшего спуска - student2.ru - точные числа (с такими формулами мы будем иметь дело), а значения Алгоритм метода наискорейшего спуска - student2.ru вычислены с погрешностью Df, то значение квадратурной суммы будет вычислено с неустранимой погрешностью

Алгоритм метода наискорейшего спуска - student2.ru

При нахождении квадратурной суммы все промежуточные вычисления рекомендуется проводить с 1 - 2 запасными цифрами. Это дает возможность пренебрегать погрешностями округлений в промежуточных вычислениях. Однако при отбрасывании запасных цифр в конечном результате необходимо учитывать заключительную погрешность округления D0. Таким образом, суммарная погрешность численного интегрирования функций D представляет собой сумму трех указанных выше погрешностей:

D = R(f) + R1 + D0.

Геометрически общий подход к решению задачи приближенного интегрирования функций состоит в том, что в криволинейную трапецию, площадь которой равна искомому значению интеграла, вписывают (или описывают) «частичные» прямоугольники, трапеции или параболы, находят их площади, а затем суммируют. В результате получают приближенное значение искомого интеграла, так как при этом график функции f заменяют некоторой ломаной линией. В соответствии с выбором геометрической фигуры для вычисления интеграла различают формулы: прямоугольников, трапеций, парабол (Симпсона). Для получения этих формул отрезок интегрирования [a; b] делят на частичные отрезки равной длины.

2. Формула прямоугольников

Для вычисления приближенного значения интеграла Алгоритм метода наискорейшего спуска - student2.ru отрезок [a; b] делят на n равных частей точками а = х0 < x1 < x2 < ... < xn = b так, что Алгоритм метода наискорейшего спуска - student2.ru Тогда длина каждого частичного отрезка Алгоритм метода наискорейшего спуска - student2.ru а точки разбиения х0 = а; x1 = a + h; x2 = a + 2h; ... ; xn-1 = a + (n-1)h; x n = a + nh = b образуют арифметическую прогрессию с разностью h. Эти точки называют узлами, а h - шагом интегрирования. Затем в узлах вычисляют ординаты y0, y1, y2, ..., yn то есть yi = f(xi) для хi = a + ih (i=0, 1, 2,...,n). На частичных отрезках [xi, xi+1] строят прямоугольники (рисунок 5 – 6), высота которых равна значению f(x) в какой-либо точке каждого частичного отрезка.

Тогда произведение f(xi) * h дает площадь частичного прямоугольника, а сумма таких произведений дает площадь ступенчатой фигуры, представляющую собой приближенное значение интеграла.

Алгоритм метода наискорейшего спуска - student2.ru

Рисунок 5

Алгоритм метода наискорейшего спуска - student2.ru

Рисунок 6

Если f(xi) вычисляют (рис.5) в левых концах отрезков [xi, xi+1], то получают формулу левых прямоугольников вида:

Алгоритм метода наискорейшего спуска - student2.ru

Если f(xi) вычисляют (рис.6) в правых концах отрезков [xi, xi+1], то получают формулу правых прямоугольников вида:

Алгоритм метода наискорейшего спуска - student2.ru

Если же функцию f вычисляют в точках xi + Алгоритм метода наискорейшего спуска - student2.ru [xi, xi+1], то получают формулу средних прямоугольников вида:

Алгоритм метода наискорейшего спуска - student2.ru (7)

где

Алгоритм метода наискорейшего спуска - student2.ru

В том частном случае, когда функция f монотонно возрастает на [a; b] (рис.8.2.1), величина Iл дает значение интеграла I с недостатком (ломанная вписана в криволинейную трапецию), а величина Iп - с избытком (ломаная описана). Их среднее арифметическое значение дает более точный результат:

Алгоритм метода наискорейшего спуска - student2.ru

3. Формула трапеций

Формулу трапеций получают аналогично формуле прямоугольников, но на каждом частичном отрезке строится трапеция (рис.7).

Алгоритм метода наискорейшего спуска - student2.ru

Рисунок 7

Тогда площадь криволинейной трапеции аАВb приближенно равна площади фигуры, ограниченной ломаной линией аАА1А2...Аn-1Bb. Площади частичных трапеций:

Алгоритм метода наискорейшего спуска - student2.ru (8)

Суммируя равенства (8), получим формулу трапеций:

Алгоритм метода наискорейшего спуска - student2.ru (9)

4. Формула Симпсона

Для построения формулы Симпсона предварительно рассмотрим такую задачу: вычислить площадь S криволинейной трапеции, ограниченной сверху графиком параболы y = Ax2 + Bx + C, слева прямой х = - h, справа прямой x = h и снизу отрезком [-h; h]. Пусть парабола проходит через три точки (рис.8): D(-h; y0) E(0; y1) и F(h; y2), причем х2 - х1 = х1 - х0 = h. Следовательно,

x1 = x0 + h = 0; x2 = x0 + 2h.

Алгоритм метода наискорейшего спуска - student2.ru

Рисунок 8

Тогда площадь S равна интегралу:

Алгоритм метода наискорейшего спуска - student2.ru . (11)

Выразим эту площадь через h, y0, y1 и y2. Для этого вычислим коэффициенты параболы А, В, С. Из условия, что парабола проходит через точки D, E и F, имеем:

Алгоритм метода наискорейшего спуска - student2.ru

Решая эту систему, получаем:

C = y1;

A = Алгоритм метода наискорейшего спуска - student2.ru

Подставляя эти значения А и С в (11), получаем искомую площадь

Алгоритм метода наискорейшего спуска - student2.ru (12)

Перейдем теперь к выводу формулы Симпсона для вычисления интеграла

Алгоритм метода наискорейшего спуска - student2.ru

Для этого отрезок интегрирования [a; b] разобьем на 2n равных частей длиной Алгоритм метода наискорейшего спуска - student2.ru В точках деления (рис.40)

а = х0, х1, х2, ...,х2n-2, x2n-1, x2n = b

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

y0, y1, y2, ...,y2n-2, y2n-1, y2n,

где yi = f(xi), xi = a + ih (i = 0, 1, 2,...,2n).

Алгоритм метода наискорейшего спуска - student2.ru

Рисунок 9

На отрезке [x0; x2] подынтегральную функцию заменяем параболой, проходящей через точки (x0; y0), (x1; y1) и (x2; y2), и для вычисления приближенного значения интеграла от х0 до х2 воспользуемся формулой (12). Тогда (на рис. 9 заштрихованная площадь):

Алгоритм метода наискорейшего спуска - student2.ru

Аналогично находим:

Алгоритм метода наискорейшего спуска - student2.ru

................................................

Алгоритм метода наискорейшего спуска - student2.ru

Сложив полученные равенства, имеем:

Алгоритм метода наискорейшего спуска - student2.ru Алгоритм метода наискорейшего спуска - student2.ru

Или

Алгоритм метода наискорейшего спуска - student2.ru (13)

Формула (13) называется обобщенной формулой Симпсона или формулой парабол, так как при ее выводе график подынтегральной функции на частичном отрезке длины 2h заменяется дугой параболы.

5. Оценка точности формул интегрирования

При приближенном интегрировании функций необходимо знать погрешность, с которой получено приближенное значение интеграла, так как без нее полученный результат не представляет ценности. Из геометрического смысла интеграла ясно, что каждая из рассмотренных формул дает результат тем точнее, чем больше n, и что наиболее точной является формула Симпсона, а наименее точными – формулы правых и левых прямоугольников. Однако увеличение nведет к возрастанию объема вычислительной работы, что нежелательно, особенно при ручных вычислениях на ЭКВМ.

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

1) формулы средних прямоугольников

Алгоритм метода наискорейшего спуска - student2.ru (15)

2) формулы трапеций:

Алгоритм метода наискорейшего спуска - student2.ru (16)

3) формулы Симпсона:

Алгоритм метода наискорейшего спуска - student2.ru (17)

где Алгоритм метода наискорейшего спуска - student2.ru ; Алгоритм метода наискорейшего спуска - student2.ru (b-a) – длина отрезка интегрирования; I – точное значение интеграла; Алгоритм метода наискорейшего спуска - student2.ru – приближенное значение интеграла, вычисленное по формуле средних прямоугольников, трапеций или Симпсона.

Пользуясь этими формулами, можно по заранее заданной точности Алгоритм метода наискорейшего спуска - student2.ru приближенно вычислить необходимое число отрезков n. Ясно, что формулы (15), (16) и (17) неприменимы, если функция f задана графически или таблично. Практически ими редко пользуются и при аналитическом задании функции f, так как вычисление производных f(k)(х) и их оценка обычно весьма трудоемки. Кроме того, промежуточные результаты (ординаты, их суммирование и т. п.) вычисляются приближенно и с округлением, поэтому в окончательном результате надо учитывать и эти погрешности.

При вычислениях на ЭВМ для оценки погрешности интегрирования используется так называемый метод автоматического выбора шага интегрирования для достижения заданной точности. Алгоритм этого метода состоит из следующих этапов:

1. Выбирается начальное значение nи вычисляется шаг интегрирования Алгоритм метода наискорейшего спуска - student2.ru

2. Вычисляется значение интеграла Ihдля этого начального шага h.

3. Затем шаг hуменьшается в два раза ( Алгоритм метода наискорейшего спуска - student2.ru ), и для него вычисляется значение интеграла Алгоритм метода наискорейшего спуска - student2.ru

4. Сравниваются полученные два значения

Алгоритм метода наискорейшего спуска - student2.ru

5. Полученная погрешность Rсравнивается с заранее заданной точностью Алгоритм метода наискорейшего спуска - student2.ru . Если R > Алгоритм метода наискорейшего спуска - student2.ru , то точность не достигнута, и величине Ih присваивается более точное значение Алгоритм метода наискорейшего спуска - student2.ru , после чего повторяются этапы 3, 4 и 5 до выполнения условия R Алгоритм метода наискорейшего спуска - student2.ru .

6. При выполнении условия R Алгоритм метода наискорейшего спуска - student2.ru за искомое значение интеграла Iпринимается последнее значение величины Алгоритм метода наискорейшего спуска - student2.ru .

Этот алгоритм реализуется в стандартной подпрограмме вычисления значения интеграла по формуле Симпсона с заранее заданной точностью Алгоритм метода наискорейшего спуска - student2.ru . Она включается в библиотеку стандартных подпрограмм (БСП) современных вычислительных машин. Причем число делений заданного отрезка интегрирования выбирается из ряда чисел, начиная с n = 16, то есть n = 16, 32, 64, 128, ..., представляющих собой степени основания двоичной системы счисления (24; 25; ...). Такой выбор обусловлен точностью преобразования этих чисел из десятичной системы счисления в двоичную.

При вычислениях на ЭВМ по формуле Симпсона для достижения заданной точности в три – четыре значащие цифры, как правило, табулируют функцию при n = 16 (17 ординат) и вычисляют интеграл I16, затем вычисляют интеграл с удвоенным шагом I8, делая выборку значений функции через одно и оставляя в промежуточных вычислениях до шести значащих цифр.

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

Алгоритм метода наискорейшего спуска - student2.ru

Если приближенное значение интеграла вычисляют по формулам средних прямоугольников или трапеций с двойным пересчетом (то есть с вычислением IN, и I2N), то для оценки погрешности I2Nприближенного интегрирования получают

Алгоритм метода наискорейшего спуска - student2.ru

Поскольку вычисление и оценка производных f(k)(x) (k=2,4) обычно трудоемки, то в формулах (15) - (17) вместо производных часто используют отношения соответствующих конечных разностей к шагу интегрирования, то есть полагают

Алгоритм метода наискорейшего спуска - student2.ru

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

Численное дифференцирование

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

F(X,Y,Y',Y”,...,Y n-1 ,Y n ) = 0 , (1)

где Х - независимая переменная;

Y - искомая функция от Х;

Y',Y»,...,Yn -производные порядка 1,2,...,n.

Порядок старшей производной, входящей в уравнение (1), называется порядком дифференциального уравнения.

Простейшим обыкновенным дифференциальным уравнением является уравнение 1-го порядка

y'= f(x,y) (2).

Основная задача, относящаяся к этому уравнению, есть задача Коши: найти реше­ние дифференциального уравнения (2) в виде у=у(х), удовлетворяющее начальному усло­вию Y(Xo)=Yo, т.е. требуется найти интегральную кривую у=у(х), проходящую через заданную точку М(Хо,Yo).

Для нахождения решения дифференциального уравнения (1) необ­ходимо задать та­кое количество начальных условий, какое соответствует порядку старшей производ­ной, а именно задать значения

Yo=Y(Xo); Yo'=Y'(Xo),...,Y0 n-1 = Yn-1 (Xo) (3)

Уравнение (1) называется разрешенным относительно старшей производной, если оно имеет вид

Y(n) =f(X,Y,Y',Y»,...,Yn-1 ) (4)

Если дифференциальное уравнение (1) разрешимо относительно старшей произ­водной, то его можно свести к системе обыкновенных дифференциаль­ных уравнений 1-го порядка заменой на неизвестную функцию Р1(х), у» на Р2(х) и т.д.

Таким образом, имеем

y'=P1,

P1'=P2,

P2'=P3,

...

P'n-1 = f (x,y,P1,P2,...,Pn-1), причем

Y(Xo)=Yo

P1(Xo)=Yo'

P2(Xo)=Yo»

. . . . . . . . .

P n-1(Xo)=Yon-1 .

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

6.1 Метод Эйлера

Метод численного решения дифференциального уравнения 1-го по­рядка

y'=f(x,y) (7)

с начальным условием Y(Xo)=Yo основан на разложении решения в ряд Тейлора в h-окрестности точки Хо:

Y1 = Y(x+h) = Y(Xo) + h*Y'(Xo) + (h2/2)*Y»(Xo) +...

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

Y1 = Yo + h*f(Xo,Yo),

где f(x,y) - правая часть уравнения (7). Пользуясь значением Y1 из разложения y(x) в h –окрестности точки Х1=Хо+h, получим

Y2=Y1+h*f(X1,Y1),

аналогично продолжая для следующей Х i+1 точки, получим

Y i+1 = Yi+h*f(Xi,Yi). (8)

Если дано уравнение 2-го порядка

Y»=f(x,y,y') (9)

c начальными условиями Y(Xo)=Yo и Y'(Xo)=Yo', то такое уравнение можно свести к системе двух уравнений 1-го порядка

у'=P Алгоритм метода наискорейшего спуска - student2.ru (10)

P'=f(x,y,y'),

причем

Y(Xo)=Yo, (11)

P(Xo)=Po=Yo'.

Тогда приближенные значения функций у и Р в точке можно вы­числить

Yi+1 = Yi+h*Pi (12)

Pi+1 = Pi+h*f(Xi, Yi, Pi),

где f( Xi, Yi, Pi) - правая часть уравнения (9).

При достаточно малой величине шага h метод Эйлера дает реше­ние с большой

точностью, т.к. погрешность решения близка к h2.

Разновидностью рассмотренного выше метода Эйлера, известного в литературе также как метод Эйлера-Коши, является метод Эйлера-Коши с итерациями. Он заключается в вычислении на каждом шаге начального значения

Y0i+1=Yi+hF(xi ,Yi).

Затем с помощью итерационной формулы

Yкi+1=Yi + Алгоритм метода наискорейшего спуска - student2.ru + [ F(xi, Yi) + F(xi+1, Алгоритм метода наискорейшего спуска - student2.ru ]

решение уточняется. Итерации проводят до тех пор, пока совпадает заданное число цифр результата на двух последних шагах итераций. Погрешность метода составляет примерно h3. Обычно число итераций не должно превышать 3-4, иначе нужно уменьшить шаг h.

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

Yi+1 = Yi + hF(xi + h/2, Y*i+1/2 ),

где Y*i+1/2 = Yi + hF(xi , Yi)/2 . Метод дает погрешность порядка h3 и имеет меньшее время вычислений, поскольку вместо нескольких итераций производится вычисление только одного значения Y*i+1/2.

Метод трапеций – одна из модификаций метода Эйлера второго порядка. Он реализуется применением на каждом шаге формулы

Yi+1 = Yi + 0.5(K1+K2)

где K1 = h F(xi,Yi);

K2 = h F(xi+h,Yi+K1)

и дает погрешность порядка h3. Этот метод относится к общим методам Рунге-Кутта.

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

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

Алгоритм реализации метода Рунге-Кутта для уравнений 1-го порядка (типа (7)) заключается в циклических вычислениях Y i+1 на каждом i+1 шаге по следующим формулам:

K1=h*F(Xi,Yi);

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

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

K4=h*F(X+h,Y+K3);

Y i+1 = Yi + (K1+2*K2+2*K3+K4) / 6 . (13)

Для дифференциальных уравнений 2-го порядка (типа (9)) метод реализуется с помощью следующих формул:

K1=h*F(Xi; Yi; Yi');

K2=h*F(Xi+h/2; Yi+h/2*(Yi'+K1/4); Yi'+K1/2);

K3=h*F(Xi+h/2; Yi+h/2*(Yi'+K1/4); Yi'+K2/2);

K4=h*F(Xi+h; Yi+h*Yi'+h/2*K3; Yi'+K3);

Y i+1 = Yi+h*[Yi'+(K1+K2+K3)/6];

Y'i+1 = Yi'+(K1+2*K2+2*K3+K4)/6. (14)

Перед началом вычислений надо задать шаг h и начальные усло­вия (3).


Наши рекомендации