Реализация интервальных методов (IntervalRoots)
Иногда важно не найти приближенное значение корня, а уточнить интервал, в котором он находится. В подпакете IntervalRoots для этого используется ряд известных методов, реализованных следующими функциями:
- IntervalBisection [f, x, int, eps] – находит корень функции f(x) путем уточнения исходного интервала int с заданной погрешностью eps методом половинного деления;
- IntervalSecant [f,x, int, eps] – находит корень функции f(x) путем уточнения исходного интервала int с заданной погрешностью eps методом секущей;
- IntervalNewton [ f, x, int, eps ] – находит корень функции/(x) путем уточнения исходного интервала int с заданной погрешностью eps методом Ньютона (касательной).
Во всех функциях можно опциями задать максимальное число рекурсий (Max-Recursion) и погрешность (WorkingPrecision). Примеры применения этих функций даны ниже:
<< NumericalMath`IntervalRoots` IntervalBisection[Sin[x], x, Interval[{2., 8.}],.1] Interval[{3.125, 3.218750000000001}, {6.218750000000003, 6.312500000000006}] IntervalBisection[Sin[x], x, Interval[{2., 8.}],.01] Interval[{3.125, 3.17188}, {6.26563, 6.3125}] IntervalBisection[Sin[x], x, Interval[{2., 8.}],.01, MaxRecursion > 10] Interval[{3.13672, 3.14258}, {6.27734, 6.2832}] IntervalSecant[Sin[x], x, Interval[{2., 8.}],.01] Interval[{3.14159, 3.1416}, {6.28316, 6.28321}] IntervalSecant[Sin[x], x, Interval[{2., 8.}],.01] Interval[{3.14159, 3.1416}, {6.28316, 6.28321}] IntervalBisection[Sin[x], x, Interval[{2, 8}],.1, WorkingPrecision > Infinity]