Изменения

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

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

32 байта добавлено, 01:52, 7 июня 2015
м
Поправки
=== Алгоритм ===
Пусть нам задана монотонная <tex> f </tex> и значение <tex> C </tex>. Выберем две начальные точки, причем <tex> f(x_{1}) < C </tex>, а <tex> f(x_{2}) > C </tex>. Проведем через них прямую, которая пересечет прямую <tex> y = C </tex> в точке <tex> (x_{3}, СC) </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));
37
правок

Навигация