И другие программы этой серии
Кроме того, к ошибке или выдаче неправильного корня может привести и попытка применить метод секущих в области локального максимума или минимума f(x). В этом случае секущая может иметь направление, близкое к горизонтальному, выводя точку следующего приближения далеко от предполагаемого положения корня. Для решения таких уравнений лучше применять другую встроенную функцию Minerr. Аналогичные проблемы могут возникнуть, если начальное приближение выбрано слишком далеко от настоящего решения, или f(х) имеет особенности типа бесконечности.
Иногда удобнее задавать не начальное приближение к корню, а интервал[а,b], внутри которого корень заведомо находится. В этом случае следует использовать функцию root с четырьмя аргументами, а присваивать начальное значение х не нужно. Поиск корня будет осуществлен в промежутке между а и b альтернативным численным методом (Риддера или Брента).
Когда root имеет четыре аргумента, следует помнить о двух ее особенностях:
- внутри интервала [а,b] не должно находиться более одного корня, иначе будет найден один из них, заранее неизвестно какой именно;
- значения f (а) и f(b) должны иметь разный знак, иначе будет выдано сообщение об ошибке.
Если уравнение не имеет действительных корней, но имеет мнимые, то их также можно найти. В листинге 8.3 приведен пример, в котором уравнение х2+1=0, имеющее два чисто мнимых корня, решается два раза с разными начальными значениями. При задании начального значения 0.5 (первая строка листинга) численный метод отыскивает первый корень (отрицательную мнимую единицу -i), а при начальном значении -0.5 (третья строка листинга) находится и второй корень (i). Для решения этого уравнения второй вид функции root (с четырьмя, а нес двумя аргументами) неприменим, поскольку f (х) является положительно-определенной, и указать интервал, на границах которого она имела бы разный знак, невозможно.
Корни полинома(многочлена)
Если функция f (х) является полиномом, то все его корни можно определить, используя встроенную функцию polyroots(v), где v - вектор, составленный из коэффициентов полинома.