37
правок
Изменения
Добавлен метод секущих
</code>
== Метод секущих ==
[[Файл:Secant method.png|thumb|250px|right|Метод секущих]]
Итерационный численный метод приближённого нахождения корня уравнения.
=== Алгоритм ===
Пусть нам задана монотонная <tex> f </tex>. Выберем две начальные точки, причем <tex> f(x_{1}) < C </tex>, а <tex> f(x_{2}) > C </tex>. Проведем через них прямую, которая пересечет прямую <tex> y = C </tex> в точке <tex> (x_{3}, С) </tex>. Теперь вместо точек <tex> x_{1} </tex> и <tex> x_{2} </tex> возьмем точки <tex> x_{3} </tex> и <tex> x_{2} </tex>, и проделаем ту же операцию и так далее, получия точки <tex> x_{n+1} </tex> и <tex> x_{n} </tex>, пока <tex> |x_{n-1} - x_{n}| > \varepsilon </tex>.
Вычисляем каждое последующее значение <tex> x_{n+1} </tex> с помощью формулы:
<tex dpi=130> x_{n+1} = x_{n-1} + \genfrac{}{}{}{}{(C + f(x_{n}))\cdot(x_{n} - x_{n-1})}{f(x_{n}) - f(x_{n-1})} </tex>
Нахождение нулей функции <tex>( C = 0 )</tex>:
<tex dpi=130> x_{n+1} = x_{n-1} - \genfrac{}{}{}{}{f(x_{n})\cdot(x_{n} - x_{n-1})}{f(x_{n}) - f(x_{n-1})} </tex>
=== Псевдокод ===
<code>
'''double''' search (a : '''double''', b : '''double'''): <font color=green> // Где a - левая граница, а b - правая </font>
'''while''' |a - b| < eps
a = b - (b - a) * f(b)/(f(b) - f(a));
b = a - (a - b) * f(a)/(f(a) - f(b));
'''return''' b
</code>
== Замечания ==
* Необходимо отметить, то функция должна быть строго монотонна, если мы ищем конкретный корень и он единственный. Нестрого монотонна, если нам необходимо найти самый левый (правый) аргумент. Если же функция не монотонна, то данный алгоритм не найдет искомый аргумент, либо найдет аргумент, но он не будет единственным.