Реализация некоторых численных методов
8.1.4 Модифицированный метод Ньютона (метод секущих)
В этом методе для вычисления производных на каждом шаге поиска используется численное дифференцирование по формуле:

Тогда рекуррентная формула метода Ньютона приобретёт вид:

.Реализация данного метода в Maxima представлено ниже:
(%i1) secant(f,sp,eps):=block([x0,x1,d,y,r],
x0:sp[1],x1:sp[2],
p:0, r:x1-x0, d:float(subst(x0,x,f)),
while abs(r)>eps do (
p:p+1, y:float(subst(x1,x,f)), r:r/(d-y)*y,
d:y, x1:x1+r
),
x1)$
(%i2) f:exp(-x)-x$
eps:0.000001$ xrez:secant(f,[-2,2],eps)$
print("Решение ",xrez," Невязка ",subst(xrez,x,f))$
Особенности программирования для Maxima, использованные в этом примере, аналогичны приведённым выше в примере, касающемся метода половинного деления.
8.1.5 Метод хорд
Метод основан на замене функции
на каждом шаге поиска хордой, пересечение которой с осью
дает приближение корня.
При этом в процессе поиска семейство хорд может строится:
- при фиксированном левом конце хорд, т.е.
, тогда начальная точка
; - при фиксированном правом конце хорд, т.е.
, тогда начальная точка
.
В результате итерационный процесс схождения к корню реализуется рекуррентной формулой:

Процесс поиска продолжается до тех пор, пока не выполнится условие

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