В численном анализе метод секущих представляет собой алгоритм нахождения корня , который использует последовательность корней секущих линий для лучшего приближения корня функции f . Метод секущих можно рассматривать как конечно-разностную аппроксимацию метода Ньютона , поэтому его считают квазиньютоновским методом . Исторически он является развитием метода ложного положения , который предшествовал методу Ньютона более чем на 3000 лет. [1]
Метод секущих — это итерационный численный метод нахождения нуля функции f . При двух начальных значениях x 0 и x 1 метод действует согласно рекуррентному соотношению
Это нелинейная рекуррентность второго порядка, которая хорошо определена при заданных f и двух начальных значениях x 0 и x 1 . В идеале начальные значения следует выбирать близко к желаемому нулю.
Начиная с начальных значений x 0 и x 1 , мы строим линию через точки ( x 0 , f ( x 0 )) и ( x 1 , f ( x 1 )) , как показано на рисунке выше. В форме наклона-пересечения уравнение этой линии имеет вид
Корень этой линейной функции, то есть значение x, при котором y = 0, равен
Затем мы используем это новое значение x как x 2 и повторяем процесс, используя x 1 и x 2 вместо x 0 и x 1 . Мы продолжаем этот процесс, решая для x 3 , x 4 и т. д., пока не достигнем достаточно высокого уровня точности (достаточно малой разницы между x n и x n −1 ):
Итерации метода секущей сходятся к корню , если начальные значения и достаточно близки к корню и хорошо себя ведут. Когда дважды непрерывно дифференцируемо и рассматриваемый корень является простым корнем, т. е. имеет кратность 1, порядок сходимости равен золотому сечению [2]. Эта сходимость является сверхлинейной, но субквадратичной.
Если начальные значения недостаточно близки к корню или ведут себя нехорошо, то нет гарантии, что метод секущей вообще сходится. Общего определения «достаточно близко» не существует, но критерий сходимости связан с тем, насколько «волнистая» функция находится на интервале между начальными значениями. Например, если дифференцируема на этом интервале и есть точка, где на интервале, то алгоритм может не сходиться.
Метод секущей не требует и не гарантирует, что корень останется заключенным в скобки последовательными итерациями, как это делает метод бисекции , и, следовательно, он не всегда сходится. Метод ложного положения (или regula falsi ) использует ту же формулу, что и метод секущей. Однако он не применяет формулу к и , как метод секущей, а к и к последней итерации, такой что и имеют другой знак. Это означает, что метод ложного положения всегда сходится; однако, только с линейным порядком сходимости. Заключение в скобки с суперлинейным порядком сходимости, как у метода секущей, может быть достигнуто с помощью улучшений метода ложного положения (см. Regula falsi § Улучшения в regula falsi ), таких как метод ITP или метод Иллинойса .
Рекуррентная формула метода секущих может быть выведена из формулы метода Ньютона
используя конечно-разностное приближение, для малого :
Метод секущих можно интерпретировать как метод, в котором производная заменяется приближением, и, таким образом, это квазиньютоновский метод .
Если мы сравним метод Ньютона с методом секущей, то увидим, что метод Ньютона сходится быстрее (порядок 2 против порядка золотого сечения φ ≈ 1,6). [2] Однако метод Ньютона требует оценки как , так и ее производной на каждом шаге, в то время как метод секущей требует оценки только . Поэтому метод секущей иногда может быть быстрее на практике. Например, если мы предположим, что оценка занимает столько же времени, сколько и оценка ее производной, и пренебрегаем всеми другими затратами, мы можем выполнить два шага метода секущей (уменьшив логарифм ошибки в φ 2 ≈ 2,6 раза) за ту же стоимость, что и один шаг метода Ньютона (уменьшив логарифм ошибки в 2 раза), поэтому метод секущей быстрее. В более высоких измерениях полный набор частных производных, требуемых для метода Ньютона, то есть матрица Якоби , может стать намного более дорогим для вычисления, чем сама функция. Однако, если мы рассмотрим параллельную обработку для оценки производной или производных, метод Ньютона может быть быстрее по времени, хотя все еще требует больше вычислительных операций в целом.
Метод Бройдена представляет собой обобщение метода секущих на случай более чем одного измерения.
Следующий график показывает функцию f красным цветом, а последнюю секущую — жирным синим. На графике отрезок x секущей, по-видимому, является хорошим приближением корня f .
Ниже метод секущей реализован на языке программирования Python .
Затем он применяется для нахождения корня функции f ( x ) = x 2 − 612 с начальными точками и
def secant_method ( f , x0 , x1 , iterations ): """Возвращает корень, вычисленный с помощью метода секущих.""" for i in range ( iterations ): x2 = x1 - f ( x1 ) * ( x1 - x0 ) / float ( f ( x1 ) - f ( x0 )) x0 , x1 = x1 , x2 # Применить здесь критерий останова (см. ниже) return x2 def f_example ( x ): возврат x ** 2 - 612корень = секущий_метод ( f_example , 10 , 30 , 5 )print ( f "Корень: { root } " ) # Корень: 24.738633748750722
Очень важно иметь хороший критерий остановки выше, в противном случае, из-за ограниченной числовой точности чисел с плавающей точкой, алгоритм может возвращать неточные результаты, если выполняется слишком много итераций. Например, цикл выше может остановиться, когда сначала будет достигнуто одно из них: abs(x0 - x1) < tol, или abs(x0/x1-1) < tol, или abs(f(x1)) < tol. [3]