МатВектор

Command Palette

Search for a command to run...

🔢 Численные методы35 минСложность 3/5+65 XP

Численное решение нелинейных уравнений: бисекция и метод Ньютона

Как найти корень уравнения f(x)=0 без формулы: локализация, метод бисекции, метод Ньютона с разбором ловушек и секущие. Пошаговые примеры и критерий останова.

3 интерактива3 квизаУрок 2 из 11Обновлено 04.10.2026Обычный

Уравнение выглядит безобидно. Попробуйте его решить — и упрётесь: формулы нет ни у Кардано, ни у кого-либо ещё. При этом инженеру нужен ответ, и не в общем виде, а числом с пятью знаками. Здесь начинается численный анализ: вместо формулы — алгоритм, который за несколько шагов сам приближается к корню. Разберём два главных: медленный, но непотопляемый метод бисекции — он же метод половинного деления — и стремительный метод Ньютона. Как устроены обе быстрые машины, чтобы верные знаки удваивались за шаг: метод касательных Ньютона и метод секущих — коротко в словаре.

Этап локализации: где живёт корень#

Задача ставится так: найти корень уравнения с точностью . Прежде чем запускать любой метод, корень локализуют — отрезают отрезок, внутри которого он сидит. Опора — теорема Больцано–Коши: если функция непрерывна на и на концах принимает значения разных знаков, , то внутри отрезка есть хотя бы один корень.

  1. Переписываем в стандартной форме:
  2. Таблица значений: , — знаки разные
  3. непрерывна всюду, значит, корень лежит на
  4. Эскиз показывает: убывает от 1 до 0.54, прямая растёт — пересечение одно. Отрезок чист

Кратные корни — отдельная ловушка: у корень двойной, знак функции не меняется, и условие не сработает. Бисекция и секущие к такому корню пробираются плохо, Ньютону помогает лишь удачный старт. Проверяйте график до запуска алгоритма.

Метод бисекции: один бит за итерацию#

Идея до комичного проста: корень сидит в , значит, делим отрезок пополам и оставляем ту половину, где знаки на концах разные. Повторяем. Каждая итерация режет неопределённость вдвое — длина отрезка после шагов равна .

  1. Вычисляем середину и значение
  2. Если — корень в левой половине, кладём ; иначе
  3. Повторяем, пока длина отрезка не станет меньше ; ответ — любой конец или середина последнего отрезка

Прогоним на том же на — ищем :

ШагСередина cf(c)Оставшийся отрезок
11.5+0.25[1; 1.5]
21.25−0.4375[1.25; 1.5]
31.375−0.109375[1.375; 1.5]
41.4375+0.066406[1.375; 1.4375]
51.40625−0.022461[1.40625; 1.4375]
61.421875+0.021729[1.40625; 1.421875]
71.4140625−0.000427[1.4140625; 1.421875]
Семь итераций — и корень зажат в отрезке шириной 1/128 ≈ 0.0078
— число итераций бисекции, — стартовый отрезок, — требуемая точность

Для и : , значит, 20 итераций. Для — сорок. Говорят, что бисекция добывает один бит за итерацию: каждая итерация добавляет к точности ровно один двоичный разряд. Никакая сложность функции на это число не влияет — только длина отрезка.

У бисекции есть потолок, о котором редко говорят: точность самой функции. Если вычисляется с ошибкой (а в double это неизбежно), то вблизи корня знак уже не отличить, и деление пополам слепнет. Глубже уровня опуститься нельзя — что бы ни обещала формула log_2 rac{b-a}{ arepsilon}. Та же граница стоит перед любым методом: счётная точность функции — фундамент всего здания, и утопить в ней корень проще, чем кажется.

Метод Ньютона: касательная как ускоритель#

Ньютон работает иначе. Стоя в точке , проведём касательную к графику и посмотрим, где она пересекает ось . Эта точка пересечения — следующее приближение . Уравнение касательной в точке : ; приравняв нулю, получаем формулу метода:

— текущее приближение, — наклон касательной; деление на ноль недопустимо

Считаем честно для со стартом : ошибка старта . Дальше ошибка падает так, как не падает ни у одной бисекции:

nxₙОшибка |xₙ − √2|Верные цифры
01.58.6·10⁻²1
11.41666666672.45·10⁻³2
21.41421568632.12·10⁻⁶5
31.41421356237471.6·10⁻¹²11
41.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]404–57
Нужна производная?нетданет
Гарантия сходимостиесть, при смене знакатолько при хорошем стартетолько при хорошем старте
Стартовых точекотрезок [a; b]однадве
Главный рискмедлительностьнулевая f′, зацикливаниеделение на f(xₙ)−f(xₙ₋₁)
Три метода — три характера: страховка, спринтер и компромисс

Когда останавливаться? Наивный ответ «когда мало» обманчив: если производная у корня мала, функция почти плоская, и может соответствовать ошибке по в целый процент. Добросовестный критерий смотрит на сам аргумент: , где берут на пару порядков больше машинного эпсилон, например . Останов по разности соседних приближений — прямой мостик к теме источников погрешностей: относительная мера там объявлена главным арбитром, и здесь она работает так же. Тот же критерий останова обслуживает и метод простой итерации — каркас любых итерационных пересчётов.

На практике методы почти никогда не работают в одиночку. Стандарт продакшена — гибрид: бисекция страхует отрезок, Ньютон срезает угол, секущие экономят производную. Как только итерация Ньютона вылетает за отрезок локализации, алгоритм делает шаг бисекции и продолжает. Так устроен метод Брента — тёмная лошадка численных библиотек: гарантия бисекции плюс скорость Ньютона, а худший случай — всё равно линейное число шагов. Писать такой гибрид вручную незачем: достаточно понимать, из каких деталей он собран, — вы их все уже знаете.

План на практику: возьмите классику учебников , локализуйте корень между 2 и 3, прогоните бисекцию и Ньютон вручную по три итерации — и сверьте с . Дальше по курсу те же идеи переходят на системы: численное решение ОДУ использует неявные схемы, где на каждом шаге решается нелинейное уравнение всё тем же Ньютоном. Определение производной, на котором держится вся механика метода, разобрано в уроке производная: определение и касательная, непрерывность, требуемая теоремой Больцано–Коши, — в материале про непрерывность и точки разрыва, а правила вычисления собраны в шпаргалке производных. Слово касательная из словаря пригодится при разговоре о геометрии метода.

Проверь себя+10 XP

Сколько итераций бисекции нужно, чтобы сжать корень из отрезка до ?

Проверь себя+10 XP

Метод Ньютона для со старта : чему равен ?

Проверь себя+10 XP

Каков порядок сходимости метода секущих?

Частые вопросы

Как выбрать начальное приближение для метода Ньютона?

По графику и локализации: старт должен лежать вблизи корня там, где производная не мала. Хороший приём — сначала сделать несколько шагов бисекцией и передать её результат Ньютону как старт. Для подойдёт любая точка отрезка ; а вот старт с пологого участка, где касательная почти горизонтальна, отбрасывает итерации далеко от корня.

Почему метод бисекции всегда сходится?

Потому что на каждом шаге сохраняется инвариант: знаки функции на концах текущего отрезка различны. По теореме Больцано–Коши корень остаётся внутри, а длина отрезка после n шагов равна (b−a)/2ⁿ и стремится к нулю. Ни производная, ни выпуклость, ни непрерывность производной не нужны — только непрерывность самой функции и смена знака.

Что делать, если производную считать сложно или невозможно?

Использовать метод секущих: производная заменяется разностным отношением по двум последним точкам. Порядок сходимости 1.618 вместо 2 у Ньютона, зато функция вызывается один раз за итерацию. Если и секущие капризничают — возвращаемся к бисекции или гибридным схемам, где надёжный метод страхует быстрый.

По какому критерию останавливать итерации?

Комбинированный: |xₙ₊₁ − xₙ| ≤ ε_abs + ε_rel·|xₙ| плюс проверка |f(xₙ)| малости. Останов только по |f(x)| обманчив при пологой функции, только по разности соседних приближений — при медленной сходимости. Обязательно ставьте лимит итераций: зациклившийся Ньютон или секущие с нулевым знаменателем иначе подвешивают программу.

Реши свою задачу сразу после теории

Каждый метод — это алгоритм, разобранный на примерах, и живой решатель: введите своё задание и сравните ход решения.

Готовитесь к контрольной?

Чеклист тем по «Численные методы»: что вы уже умеете, что повторить и в каком порядке.

Открыть чеклист предмета →

Проверьте себя в бою

Босс-экзамен по «Численные методы»: квизы всех уроков плюс бесконечный поток сгенерированных задач. Каждая попытка — новый расклад.

Начать босс-экзамен →