Jump to content

метод Стеффенсена

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

Простое описание

[ редактировать ]

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

При адекватном стартовом значении последовательность значений можно сгенерировать по приведенной ниже формуле. Когда это работает, каждое значение в последовательности намного ближе к решению. чем предыдущее значение. Значение с текущего шага генерирует значение для следующего шага по этой формуле: [ 1 ]

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

или, возможно, более четко,

где — размер шага между последней точкой итерации, и вспомогательная точка, расположенная в

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

Поскольку значение является приближением для его значение можно дополнительно проверить, чтобы увидеть, соответствует ли оно условию что требуется от чтобы гарантировать сходимость алгоритма Стеффенсена. Хотя небольшое несоответствие не обязательно может быть ужасным, любое значительное отклонение от условия предупреждает, что метод Стеффенсена может потерпеть неудачу, и оправдано временное использование некоторого запасного алгоритма (например, более надежного алгоритма Иллинойса или простого regula falsi ).

Это только с целью найти для этой вспомогательной точки значение функции должна быть адекватной коррекцией, чтобы приблизиться к собственному решению и по этой причине выполнить требование, Для всех остальных частей расчета метод Стеффенсена требует только функции быть непрерывным и иметь близкое решение. [ 1 ] Несколько скромных модификаций ступени в формуле наклона существуют, например, умножив его на 1 / 2 или 3 / 4 для размещения функций что не совсем соответствует требованию.

Преимущества и недостатки

[ редактировать ]

Основное преимущество метода Стеффенсена состоит в том, что он имеет квадратичную сходимость. [ 1 ] как метод Ньютона , то есть оба метода находят корни уравнения так же «быстро». В данном случае быстро означает, что для обоих методов количество правильных цифр в ответе удваивается с каждым шагом. Но формула метода Ньютона требует вычисления производной функции. а также функция тогда как метод Стеффенсена требует только сам. Это важно, когда производный инструмент недоступен легко или эффективно.

Платой за быструю сходимость является двойная оценка функции: обе и необходимо рассчитать, что может занять много времени, если это сложная функция. Для сравнения, метод секущего требует только одной оценки функции на шаг. Метод секущего увеличивает количество правильных цифр «всего» примерно в 1,6 раза за шаг, но за заданное время можно выполнить вдвое больше шагов метода секущего. Поскольку метод секущей может выполнять за то же время вдвое больше шагов, чем метод Стеффенсена, [ а ] на практике метод секущего фактически сходится быстрее, чем метод Стеффенсена, когда оба алгоритма успешны: метод секущего достигает коэффициента примерно (1,6). 2 ≈ в 2,6 раза больше цифр на каждые два шага (две оценки функции) по сравнению с коэффициентом Стеффенсена, равным 2 на каждый шаг (две оценки функции).

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

Вывод с использованием процесса Эйткена дельта-квадрат.

[ редактировать ]

Версию метода Стеффенсена, реализованную в коде MATLAB , показанном ниже, можно найти, используя процесс дельта-квадрата Эйткена для ускорения сходимости последовательности. Чтобы сравнить следующие формулы с формулами из раздела выше, обратите внимание, что Этот метод предполагает начинать с линейно сходящейся последовательности и увеличивает скорость сходимости этой последовательности. Если признаки согласен и «достаточно близко» к желаемому пределу последовательности мы можем предположить следующее:

затем

так

и, следовательно,

Решение для желаемого предела последовательности дает:

что приводит к более быстро сходящейся последовательности:

Пример кода

[ редактировать ]

В Матлабе

[ редактировать ]

Вот источник реализации метода Стеффенсена в MATLAB .

function Steffensen(f, p0, tol)
% This function takes as inputs: a fixed point iteration function, f, 
% and initial guess to the fixed point, p0, and a tolerance, tol.
% The fixed point iteration function is assumed to be input as an
% inline function. 
% This function will calculate and return the fixed point, p, 
% that makes the expression f(x) = p true to within the desired 
% tolerance, tol.

format compact   % This shortens the output.
format long      % This prints more decimal places.

for i = 1:1000   % get ready to do a large, but finite, number of iterations.
                 % This is so that if the method fails to converge, we won't
                 % be stuck in an infinite loop.
    p1 = f(p0);  % calculate the next two guesses for the fixed point.
    p2 = f(p1);
    p = p0-(p1-p0)^2/(p2-2*p1+p0) % use Aitken's delta squared method to
                                  % find a better approximation to p0.
    if abs(p - p0) < tol  % test to see if we are within tolerance.
        break             % if we are, stop the iterations, we have our answer.
    end
    p0 = p;               % update p0 for the next iteration.
end
if abs(p - p0) > tol      % If we fail to meet the tolerance, we output a
                          % message of failure.
    'failed to converge in 1000 iterations.'
end

Вот исходный код реализации метода Стеффенсена на Python .

from typing import Callable, Iterator
Func = Callable[[float], float]

def g(f: Func, x: float, fx: float) -> Func:
    """First-order divided difference function.

    Arguments:
        f: Function input to g
        x: Point at which to evaluate g
        fx: Function f evaluated at x 
    """
    return lambda x: f(x + fx) / fx - 1

def steff(f: Func, x: float) -> Iterator[float]:
    """Steffenson algorithm for finding roots.

    This recursive generator yields the x_{n+1} value first then, when the generator iterates,
    it yields x_{n+2} from the next level of recursion.

    Arguments:
        f: Function whose root we are searching for
        x: Starting value upon first call, each level n that the function recurses x is x_n
    """
    while True:    
        fx = f(x)
        gx = g(f, x, fx)(x)
        if gx == 0:
            break
        else:
            x = x - fx / gx    # Update to x_{n+1}
            yield x            # Yield value

Обобщение на банахово пространство

[ редактировать ]

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

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

Этот метод нахождения неподвижных точек вещественной функции обобщен на функции которые отображают банахово пространство на себя или даже в более общем плане это отображение из одного банахова пространства в другое банахово пространство Обобщенный метод предполагает, что ограниченных линейных семейство операторов связанный с и можно придумать, что (локально) удовлетворяет этому условию: [ 2 ]

уравнение ( )

Если деление возможно в банаховом пространстве , то линейный оператор можно получить из

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

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

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

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

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

Аналогично можно искать решение в несколько уменьшенную форму

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

Если линейный оператор удовлетворяет

для некоторой положительной действительной константы то метод сходится квадратично к фиксированной точке если начальное приближение «достаточно близко» к желаемому решению это удовлетворяет

Примечания

[ редактировать ]
  1. ^ Потому что требует предварительного расчета две оценки должны выполняться последовательно — алгоритм сам по себе не может быть ускорен за счет параллельного выполнения оценок функции. Это еще один недостаток метода Стеффенсена.
  1. ^ Jump up to: а б с Далквист, Гермунд ; Бьорк, Оке (1974). Численные методы . Перевод Андерсона, Неда. Энглвуд Клиффс, Нью-Джерси: Прентис Холл. стр. 230–231 .
  2. ^ Джонсон, LW; Шольц, Д.Р. (июнь 1968 г.). «О методе Стеффенсена». SIAM Journal по численному анализу . 5 (2): 296–302. дои : 10.1137/0705026 . JSTOR   2949443 .
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 02c62717901001e49ef495915e0de976__1724639220
URL1:https://arc.ask3.ru/arc/aa/02/76/02c62717901001e49ef495915e0de976.html
Заголовок, (Title) документа по адресу, URL1:
Steffensen's method - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)