Изменения

Перейти к: навигация, поиск

Вещественный двоичный поиск

1732 байта добавлено, 01:37, 7 июня 2015
Добавлен метод секущих
</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>
== Замечания ==
* Необходимо отметить, то функция должна быть строго монотонна, если мы ищем конкретный корень и он единственный. Нестрого монотонна, если нам необходимо найти самый левый (правый) аргумент. Если же функция не монотонна, то данный алгоритм не найдет искомый аргумент, либо найдет аргумент, но он не будет единственным.
37
правок

Навигация