Компания ALT Linux
Опубликован: 24.03.2015 | Доступ: свободный | Студентов: 553 / 138 | Длительность: 19:00:00
Лекция 8:

Реализация некоторых численных методов

8.1.4 Модифицированный метод Ньютона (метод секущих)

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

f'(x)= \frac{\Delta f(x)}{\Delta x}

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

x_{n+1}&=x_n-\frac{f(x_n)}{f'(x_n)}=x_n-\frac {f(x_n) \Delta x}{\Delta f(x_n)}=\\
&=x_n-\frac {f(x_n) \Delta x}{f(x_n+ \Delta x)-f(x_n)},
где \Delta x \approx \varepsilon.

Реализация данного метода в 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))$
Решение\quad 0.56714329040978\quad Невязка\quad -1.1102230246251565\,{10}^{-16}

Особенности программирования для Maxima, использованные в этом примере, аналогичны приведённым выше в примере, касающемся метода половинного деления.

8.1.5 Метод хорд

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

При этом в процессе поиска семейство хорд может строится:

  1. при фиксированном левом конце хорд, т.е. z = a, тогда начальная точка x0 = b;
  2. при фиксированном правом конце хорд, т.е. z = b, тогда начальная точка x0 = a.

В результате итерационный процесс схождения к корню реализуется рекуррентной формулой:

x_{n+1}&=x_n - \frac{f(x_n)}{f(x_n)-f(a)} (x_n - a) \quad \text{для случая а)}; 
\\
x_{n+1}&=x_n - \frac{f(x_n)}{f(x_n)-f(b)} (x_n - b) \quad \text{для случая б)};

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

\lvert x_{n+1}-x_n\rvert \le \varepsilon \text{ или } \lvert h\rvert \le
\varepsilon.

Метод обеспечивает быструю сходимость, если f(z) \cdot f"(z) > 0, т.е. хорды фиксируются в том конце интервала [a,b], где знаки функции f(z) и ее кривизны f''(z) совпадают.