Численное решение нелинейных уравнений: бисекция и метод Ньютона
Как найти корень уравнения f(x)=0 без формулы: локализация, метод бисекции, метод Ньютона с разбором ловушек и секущие. Пошаговые примеры и критерий останова.
Уравнение выглядит безобидно. Попробуйте его решить — и упрётесь: формулы нет ни у Кардано, ни у кого-либо ещё. При этом инженеру нужен ответ, и не в общем виде, а числом с пятью знаками. Здесь начинается численный анализ: вместо формулы — алгоритм, который за несколько шагов сам приближается к корню. Разберём два главных: медленный, но непотопляемый метод бисекции — он же метод половинного деления — и стремительный метод Ньютона. Как устроены обе быстрые машины, чтобы верные знаки удваивались за шаг: метод касательных Ньютона и метод секущих — коротко в словаре.
Этап локализации: где живёт корень#
Задача ставится так: найти корень уравнения с точностью . Прежде чем запускать любой метод, корень локализуют — отрезают отрезок, внутри которого он сидит. Опора — теорема Больцано–Коши: если функция непрерывна на и на концах принимает значения разных знаков, , то внутри отрезка есть хотя бы один корень.
- Переписываем в стандартной форме:
- Таблица значений: , — знаки разные
- непрерывна всюду, значит, корень лежит на
- Эскиз показывает: убывает от 1 до 0.54, прямая растёт — пересечение одно. Отрезок чист
Кратные корни — отдельная ловушка: у корень двойной, знак функции не меняется, и условие не сработает. Бисекция и секущие к такому корню пробираются плохо, Ньютону помогает лишь удачный старт. Проверяйте график до запуска алгоритма.
Метод бисекции: один бит за итерацию#
Идея до комичного проста: корень сидит в , значит, делим отрезок пополам и оставляем ту половину, где знаки на концах разные. Повторяем. Каждая итерация режет неопределённость вдвое — длина отрезка после шагов равна .
- Вычисляем середину и значение
- Если — корень в левой половине, кладём ; иначе
- Повторяем, пока длина отрезка не станет меньше ; ответ — любой конец или середина последнего отрезка
Прогоним на том же на — ищем :
| Шаг | Середина c | f(c) | Оставшийся отрезок |
|---|---|---|---|
| 1 | 1.5 | +0.25 | [1; 1.5] |
| 2 | 1.25 | −0.4375 | [1.25; 1.5] |
| 3 | 1.375 | −0.109375 | [1.375; 1.5] |
| 4 | 1.4375 | +0.066406 | [1.375; 1.4375] |
| 5 | 1.40625 | −0.022461 | [1.40625; 1.4375] |
| 6 | 1.421875 | +0.021729 | [1.40625; 1.421875] |
| 7 | 1.4140625 | −0.000427 | [1.4140625; 1.421875] |
Для и : , значит, 20 итераций. Для — сорок. Говорят, что бисекция добывает один бит за итерацию: каждая итерация добавляет к точности ровно один двоичный разряд. Никакая сложность функции на это число не влияет — только длина отрезка.
У бисекции есть потолок, о котором редко говорят: точность самой функции. Если вычисляется с ошибкой (а в double это неизбежно), то вблизи корня знак уже не отличить, и деление пополам слепнет. Глубже уровня опуститься нельзя — что бы ни обещала формула log_2rac{b-a}{arepsilon}. Та же граница стоит перед любым методом: счётная точность функции — фундамент всего здания, и утопить в ней корень проще, чем кажется.
Метод Ньютона: касательная как ускоритель#
Ньютон работает иначе. Стоя в точке , проведём касательную к графику и посмотрим, где она пересекает ось . Эта точка пересечения — следующее приближение . Уравнение касательной в точке : ; приравняв нулю, получаем формулу метода:
Считаем честно для со стартом : ошибка старта . Дальше ошибка падает так, как не падает ни у одной бисекции:
| n | xₙ | Ошибка |xₙ − √2| | Верные цифры |
|---|---|---|---|
| 0 | 1.5 | 8.6·10⁻² | 1 |
| 1 | 1.4166666667 | 2.45·10⁻³ | 2 |
| 2 | 1.4142156863 | 2.12·10⁻⁶ | 5 |
| 3 | 1.4142135623747 | 1.6·10⁻¹² | 11 |
| 4 | 1.4142135623730949 | ≈ 10⁻¹⁶ | предел double |
Это и есть квадратичная сходимость: вблизи корня . Ошибка в тысячную даёт ошибку в миллионную, затем — сразу на уровне . Отсюда практическое правило: методу Ньютона хватает 4–6 итераций, чтобы выжать всё, что умеет хранить double. Но плата за скорость — требования: производная должна существовать и не обращаться в ноль рядом с корнем, а стартовая точка обязана быть достаточно близкой к нему.
Ловушки Ньютона: нулевая производная, зацикливание, побег#
Скорость Ньютона оплачивается хрупкостью. Первая ловушка — нулевая производная: если , касательная горизонтальна, ось не пересекает, формула делит на ноль. Даже близкая к нулю производная швыряет следующую точку далеко: знаменатель мал — дробь огромна.
Отдельная история — кратные корни. У корень двойной: касательная у корня горизонтальна почти так же, как у параболы в вершине, и квадратичная сходимость вырождается в линейную — ошибки делятся лишь вдвое за шаг. Лечение известно: если кратность известна, работает модификация x_{n+1} = x_n - m,rac{f(x_n)}{f'(x_n)}. Для она возвращает методу квадратичный темп. Не знаете кратность — смотрите на медленную сходимость как на симптом.
Вторая ловушка — зацикливание. Возьмите и старт : , , значит, . А из : , , и . Итерации ходят по кругу ноль → один → ноль, ни на шаг не приближаясь к корню . Третья ловушка — уход в бесконечность: стартовая точка на пологом участке кривой даёт почти горизонтальную касательную, и следующее приближение вылетает за пределы разрядной сетки. Классический пример — попытка найти корень со стартом больше : итерации убегают на .
Метод секущих: Ньютон без производной#
Производная не всегда доступна: может задаваться программой на тысячу строк. Секущие заменяют касательную хордой по двум последним точкам — производная аппроксимируется разностным отношением:
Прогон для со стартами , : , , , , , и на седьмой итерации — машинная точность. Ошибки делятся примерно на золотое сечение в каждой степени: порядок сходимости метода секущих равен . Это медленнее квадратуры Ньютона, но каждая итерация требует лишь одного нового вызова против двух у Ньютона (значение функции и производной).
Второй старт берут рядом с первым — разнесённые точки делают секущую грубой. И следите за знаменателем: если (функция вышла на плато), метод взрывается делением на ноль. Хитрость бывалых: хранить не два, а три приближения — если знаменатель слишком мал, отбрасывается самая старая точка и итерация пересчитывается. Дешёвая страховка вместо лишней производной.
Сравнение методов и критерий останова#
| Свойство | Бисекция | Ньютон | Секущие |
|---|---|---|---|
| Скорость сходимости | линейная, 1 бит/итерация | квадратичная, порядок 2 | порядок 1.618 |
| Итераций до 10⁻¹² для √2 из [1;2] | 40 | 4–5 | 7 |
| Нужна производная? | нет | да | нет |
| Гарантия сходимости | есть, при смене знака | только при хорошем старте | только при хорошем старте |
| Стартовых точек | отрезок [a; b] | одна | две |
| Главный риск | медлительность | нулевая f′, зацикливание | деление на f(xₙ)−f(xₙ₋₁) |
Когда останавливаться? Наивный ответ «когда мало» обманчив: если производная у корня мала, функция почти плоская, и может соответствовать ошибке по в целый процент. Добросовестный критерий смотрит на сам аргумент: , где берут на пару порядков больше машинного эпсилон, например . Останов по разности соседних приближений — прямой мостик к теме источников погрешностей: относительная мера там объявлена главным арбитром, и здесь она работает так же. Тот же критерий останова обслуживает и метод простой итерации — каркас любых итерационных пересчётов.
На практике методы почти никогда не работают в одиночку. Стандарт продакшена — гибрид: бисекция страхует отрезок, Ньютон срезает угол, секущие экономят производную. Как только итерация Ньютона вылетает за отрезок локализации, алгоритм делает шаг бисекции и продолжает. Так устроен метод Брента — тёмная лошадка численных библиотек: гарантия бисекции плюс скорость Ньютона, а худший случай — всё равно линейное число шагов. Писать такой гибрид вручную незачем: достаточно понимать, из каких деталей он собран, — вы их все уже знаете.
План на практику: возьмите классику учебников , локализуйте корень между 2 и 3, прогоните бисекцию и Ньютон вручную по три итерации — и сверьте с . Дальше по курсу те же идеи переходят на системы: численное решение ОДУ использует неявные схемы, где на каждом шаге решается нелинейное уравнение всё тем же Ньютоном. Определение производной, на котором держится вся механика метода, разобрано в уроке производная: определение и касательная, непрерывность, требуемая теоремой Больцано–Коши, — в материале про непрерывность и точки разрыва, а правила вычисления собраны в шпаргалке производных. Слово касательная из словаря пригодится при разговоре о геометрии метода.
Сколько итераций бисекции нужно, чтобы сжать корень из отрезка до ?
Метод Ньютона для со старта : чему равен ?
Каков порядок сходимости метода секущих?
Частые вопросы
Как выбрать начальное приближение для метода Ньютона?
По графику и локализации: старт должен лежать вблизи корня там, где производная не мала. Хороший приём — сначала сделать несколько шагов бисекцией и передать её результат Ньютону как старт. Для подойдёт любая точка отрезка ; а вот старт с пологого участка, где касательная почти горизонтальна, отбрасывает итерации далеко от корня.
Почему метод бисекции всегда сходится?
Потому что на каждом шаге сохраняется инвариант: знаки функции на концах текущего отрезка различны. По теореме Больцано–Коши корень остаётся внутри, а длина отрезка после n шагов равна (b−a)/2ⁿ и стремится к нулю. Ни производная, ни выпуклость, ни непрерывность производной не нужны — только непрерывность самой функции и смена знака.
Что делать, если производную считать сложно или невозможно?
Использовать метод секущих: производная заменяется разностным отношением по двум последним точкам. Порядок сходимости 1.618 вместо 2 у Ньютона, зато функция вызывается один раз за итерацию. Если и секущие капризничают — возвращаемся к бисекции или гибридным схемам, где надёжный метод страхует быстрый.
По какому критерию останавливать итерации?
Комбинированный: |xₙ₊₁ − xₙ| ≤ ε_abs + ε_rel·|xₙ| плюс проверка |f(xₙ)| малости. Останов только по |f(x)| обманчив при пологой функции, только по разности соседних приближений — при медленной сходимости. Обязательно ставьте лимит итераций: зациклившийся Ньютон или секущие с нулевым знаменателем иначе подвешивают программу.
Реши свою задачу сразу после теории
Каждый метод — это алгоритм, разобранный на примерах, и живой решатель: введите своё задание и сравните ход решения.
Готовитесь к контрольной?
Чеклист тем по «Численные методы»: что вы уже умеете, что повторить и в каком порядке.
Открыть чеклист предмета →
Проверьте себя в бою
Босс-экзамен по «Численные методы»: квизы всех уроков плюс бесконечный поток сгенерированных задач. Каждая попытка — новый расклад.
Начать босс-экзамен →