2016-07-27 6 views
0

Я хочу использовать метод деления пополам, чтобы найти все корни уравнения в пределах данного домена. моя логика очень проста, разделите данный домен на поддомены так, что для любой данной поддомены максимум один корень существует. проверьте, если f (a) * f (b) < 0, если нет, то перейдите к следующему интервалу, затем найдите root (bisection). моя проблема, однако, как я могу определить соответствующий размер субдомена? для стабильной функции, которая не меняет направление, часто имеющее небольшой интервал, будет пустой тратой времени для быстрой «неустойчивой» функции с использованием большого интервала, возможно, риск может иметь более одного корня в интервале.Как узнать скорость, с которой уравнение меняет свое направление, чтобы найти подходящий интервал для моего метода Bisection?

В любом случае, используя первые две производные, я могу рассказать мне о поведении функции, соответствующей соответствующему интервалу?

ответ

1

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

+0

Это именно то, о чем я думал, мое предположение заключается в том, что между каждыми последовательными минимумами и максимумами существует не более одного корня, поэтому в этом интервале выполняется алгоритм деления пополам, если он передает f (a) * f (b) <0 тест гарантирует возвращение корня и, в конечном итоге, всех корней. Однако проблема, с которой я столкнулась, заключается в том, как найти верхнюю и нижнюю границы, потому что в конечном итоге это также корни первой производной от f (x), которая возвращает нас к исходной проблеме, что является подходящим интервалом для поиска всех корни первой производной? –

+0

Я никогда не говорил, что вам нужно найти корни производной. Я говорил об ограничении производной. –