EssayAI
Блог
Блог
Математика и алгоритмы

Метод половинного деления: решение нелинейного уравнения

11 июня 2026Время чтения: 8 минут
#метод половинного деления#бисекция#нелинейное уравнение#численные методы#корень уравнения

Метод половинного деления (он же метод бисекции, или метод дихотомии) - это простейший численный способ найти корень нелинейного уравнения вида f(x)=0f(x) = 0, когда аналитической формулы для корня нет. Идея предельно наглядна: если на концах отрезка функция меняет знак, то где-то внутри она обращается в ноль, и достаточно раз за разом делить отрезок пополам, отбрасывая ту половину, где корня нет. Метод медленный, но абсолютно надёжный - он сходится всегда, когда корень отделён. Ниже разберём, при каком условии он работает, как считать середину отрезка, сколько делений нужно для заданной точности и где студенты ошибаются. Чтобы сразу увидеть, как отрезок стягивается к корню, покрутите калькулятор ниже: меняйте уравнение, границы и число делений и следите за оценкой корня и шириной отрезка.

В чём идея метода половинного деления

Пусть нужно решить нелинейное уравнение f(x)=0f(x) = 0, где функция ff непрерывна на отрезке [a,b][a, b]. Главное условие, с которого начинается метод половинного деления, - это смена знака на концах отрезка:

f(a)f(b)<0.f(a) \cdot f(b) < 0.

Если произведение значений на концах отрицательно, значит f(a)f(a) и f(b)f(b) имеют разные знаки. По теореме Больцано-Коши непрерывная функция, меняющая знак, обязательно где-то проходит через ноль - внутри [a,b][a, b] есть хотя бы один корень. Этот отрезок называют отрезком отделения корня, а сам процесс его поиска - отделением корня.

Дальше работает простой шаг. Берём середину отрезка

c=a+b2c = \frac{a + b}{2}

и смотрим на знак f(c)f(c). Возможны три случая. Если f(c)=0f(c) = 0, нам повезло - корень найден точно. Если знак f(c)f(c) совпадает со знаком f(a)f(a), то смена знака сохраняется на правой половине [c,b][c, b], и левую половину можно отбросить: заменяем aa на cc. Если же знак f(c)f(c) совпадает со знаком f(b)f(b), корень лежит в левой половине [a,c][a, c], и мы заменяем bb на cc. В любом случае новый отрезок вдвое короче прежнего, а корень по-прежнему гарантированно внутри.

Формула и алгоритм по шагам

Соберём всё в чёткий алгоритм. На каждой итерации метода половинного деления мы:

  1. вычисляем середину c=(a+b)/2c = (a + b)/2;
  2. находим f(c)f(c) и определяем его знак;
  3. если f(a)f(a) и f(c)f(c) одного знака - полагаем a=ca = c, иначе b=cb = c;
  4. повторяем, пока ширина отрезка bab - a не станет меньше требуемой точности ε\varepsilon.
Отрезок [a, b] с корнем кубического уравнения делится пополам шаг за шагом. На каждой итерации золотая середина c показывает текущую оценку корня, серая половина без смены знака отбрасывается, а отрезок становится вдвое уже. После нескольких делений середина почти совпадает с корнем x* ≈ 1,5214

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

Сколько итераций нужно для заданной точности

Это любимый вопрос экзаменаторов, и он решается одной формулой. После nn делений начальный отрезок длины b0a0b_0 - a_0 сжимается до

b0a02n.\frac{b_0 - a_0}{2^{\,n}}.

Чтобы эта ширина стала не больше точности ε\varepsilon, нужно потребовать (b0a0)/2nε(b_0 - a_0)/2^{\,n} \le \varepsilon. Логарифмируя, получаем оценку числа итераций:

nlog2b0a0ε.n \ge \log_2 \frac{b_0 - a_0}{\varepsilon}.

Например, для отрезка [1,2][1, 2] длиной единица и точности ε=0,001\varepsilon = 0{,}001 выходит nlog210009,97n \ge \log_2 1000 \approx 9{,}97, то есть нужно 10 делений. Для точности 0,00010{,}0001 - уже 14 делений. Видно главное свойство бисекции: число шагов растёт лишь логарифмически при ужесточении точности, но при этом метод сходится линейно (за каждый шаг погрешность падает строго в 2 раза), что заметно медленнее, чем у метода Ньютона. Зато здесь не нужна производная и нет риска расходимости.

Один шаг метода половинного деления: на отрезке [1, 2] функция f(x) = x^3 - x - 2 меняет знак, середина c = 1,5 делит отрезок пополам, скобка показывает, что ширина уменьшается с 1 до 0,5
Один шаг метода половинного деления: на отрезке [1, 2] функция f(x) = x^3 - x - 2 меняет знак, середина c = 1,5 делит отрезок пополам, скобка показывает, что ширина уменьшается с 1 до 0,5

На рисунке выше - один шаг для кубического уравнения. Слева конец a=1a = 1 с f(a)<0f(a) < 0, справа b=2b = 2 с f(b)>0f(b) > 0, середина c=1,5c = 1{,}5 даёт f(c)<0f(c) < 0, значит корень правее, и отрезок ужмётся до [1,5; 2][1{,}5;\ 2]. Скобка внизу показывает, что ширина с единицы упала до половины.

Разбор типовой задачи

Решим классическое уравнение x3x2=0x^3 - x - 2 = 0 методом половинного деления с точностью до 0,10{,}1. Сначала отделяем корень: f(1)=112=2<0f(1) = 1 - 1 - 2 = -2 < 0, а f(2)=822=4>0f(2) = 8 - 2 - 2 = 4 > 0. Знаки разные, значит на [1,2][1, 2] есть корень - отрезок отделения найден.

Теперь делим:

  • Шаг 1. c=1,5c = 1{,}5, f(1,5)=3,3751,52=0,125<0f(1{,}5) = 3{,}375 - 1{,}5 - 2 = -0{,}125 < 0. Знак совпал с f(a)f(a), корень правее: новый отрезок [1,5; 2][1{,}5;\ 2].
  • Шаг 2. c=1,75c = 1{,}75, f(1,75)1,61>0f(1{,}75) \approx 1{,}61 > 0. Знак совпал с f(b)f(b), корень левее: отрезок [1,5; 1,75][1{,}5;\ 1{,}75].
  • Шаг 3. c=1,625c = 1{,}625, f(1,625)0,666>0f(1{,}625) \approx 0{,}666 > 0. Корень левее: отрезок [1,5; 1,625][1{,}5;\ 1{,}625].
  • Шаг 4. c=1,5625c = 1{,}5625, f(1,5625)0,252>0f(1{,}5625) \approx 0{,}252 > 0. Корень левее: отрезок [1,5; 1,5625][1{,}5;\ 1{,}5625] шириной 0,0625<0,10{,}0625 < 0{,}1.

Точность достигнута, за приближённый корень берём середину последнего отрезка: x1,53x \approx 1{,}53. Точное численное значение корня x1,5214x^* \approx 1{,}5214, и наша оценка отличается от него меньше чем на 0,10{,}1, как и требовалось. Метод бисекции хорош тем, что эта таблица механична: ни на одном шаге не нужно угадывать, куда двигаться - знак f(c)f(c) всё решает сам.

Связь с другими численными методами

Метод половинного деления - самый медленный, но самый устойчивый из методов уточнения корня. Его линейная сходимость уступает квадратичной сходимости метода касательных Ньютона и сверхлинейной у метода секущих, зато он не требует ни производной, ни хорошего начального приближения и никогда не расходится, если корень отделён. Поэтому бисекцию часто используют как «страховку»: ей грубо локализуют корень, а затем переключаются на быстрый метод касательных, который уже опирается на производную и потому стартует только из достаточно близкой точки.

Частые ошибки

  • Отрезок без смены знака. Если f(a)f(a) и f(b)f(b) одного знака, теорема Больцано-Коши ничего не гарантирует: корня на отрезке может не быть, и метод половинного деления применять нельзя. Всегда сначала проверяйте f(a)f(b)<0f(a)\cdot f(b) < 0.
  • Чётное число корней внутри отрезка. Если корней два (или любое чётное число), знаки на концах совпадают, и бисекция их «не видит». Сначала разбейте область на отрезки, где корень ровно один.
  • Сравнение значений вместо знаков. Решение о выборе половины принимается по знаку f(c)f(c), а не по тому, какое значение больше по модулю. Сравнивать нужно именно знаки f(a)f(a) и f(c)f(c).
  • Точность по корню, а не по отрезку. Останавливаться надо по ширине отрезка bab - a (она и есть граница погрешности), а не по близости f(c)f(c) к нулю - около пологого корня f(c)f(c) мало даже вдали от него.
  • Деление в градусах для тригонометрических уравнений. В выражениях вроде cosx=x\cos x = x аргумент берётся в радианах. Подстановка градусов даст неверные знаки и сорвёт сходимость.

FAQ

При каком условии можно применять метод половинного деления? Функция должна быть непрерывна на отрезке [a,b][a, b], и на его концах должна быть смена знака: f(a)f(b)<0f(a)\cdot f(b) < 0. Тогда корень гарантированно лежит внутри, и метод обязательно к нему сойдётся.

Чем метод половинного деления отличается от метода Ньютона? Бисекция сходится линейно (погрешность падает вдвое за шаг), не требует производной и не расходится. Метод Ньютона сходится квадратично (намного быстрее), но нуждается в производной и хорошем начальном приближении, иначе может разойтись.

Сколько шагов нужно для точности 0,001 на отрезке длины 1? По формуле nlog2(1/0,001)=log210009,97n \ge \log_2(1/0{,}001) = \log_2 1000 \approx 9{,}97, то есть 10 делений. Для точности 0,00010{,}0001 на том же отрезке потребуется уже 14 итераций.

Коротко

Метод половинного деления решает нелинейное уравнение f(x)=0f(x) = 0, многократно деля пополам отрезок, на концах которого функция меняет знак. Условие применимости - f(a)f(b)<0f(a)\cdot f(b) < 0; на каждом шаге считают середину c=(a+b)/2c = (a+b)/2, по знаку f(c)f(c) отбрасывают половину без корня, и ширина отрезка падает вдвое. Число итераций для точности ε\varepsilon оценивается формулой nlog2((ba)/ε)n \ge \log_2\big((b-a)/\varepsilon\big). Метод медленный, но надёжный: он сходится всегда, когда корень отделён, и потому служит базовым инструментом численного решения уравнений.

Доверьте текст нейросети EssayAI

Открыть EssayAI

Бесплатно, на русском языке и без VPN

Читайте также