"Информатика (изд. "БИНОМ. Лаборатория знаний")", Угринович Н.Д.
Приближённое решение уравнения позволяет найти корень, когда точную формулу получить трудно или невозможно. Корень ищут как нуль функции f(x), то есть значение x, при котором f(x) = 0. Один из простых и надёжных способов — метод половинного деления: отрезок со сменой знака функции постепенно уменьшают, пока его длина не обеспечит заданную точность ε.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Корень уравнения — значение переменной, при котором уравнение становится верным. Уравнение f(x) = 0 означает, что нужно найти такой x, для которого значение функции f равно нулю. Поэтому решение уравнения можно представить как поиск нуля функции.
Приближённое решение — число, близкое к точному корню, но не обязательно совпадающее с ним. Например, √2 можно заменить числом 1,41. Такое решение нужно, когда точный ответ нельзя удобно выразить или вычислить.
Точность решения — допустимая погрешность приближённого значения. Её задают числом ε (эпсилон): чем меньше ε, тем ближе найденное число должно быть к корню. Например, ε = 0,01 означает требование получить ответ с ошибкой не более одной сотой.
Метод половинного деления — способ уточнения корня на отрезке, на концах которого функция имеет значения разных знаков. Отрезок последовательно делят пополам и оставляют часть со сменой знака. Так область поиска уменьшается, а приближение становится точнее.
Уравнение f(x) = 0 превращают в задачу поиска корня функции, потому что функцию можно вычислять для разных значений x и сравнивать с нулём. Некоторые уравнения решаются формулами, но для сложных выражений такие формулы могут быть неизвестны, громоздки или неудобны для вычислений. Численный метод заменяет получение точной формулы последовательностью простых операций.
Сначала выбирают отрезок [a; b], на концах которого f(a) и f(b) имеют разные знаки. Если функция непрерывна, то при переходе от одного конца к другому она не может перескочить через ноль, не приняв нулевое значение. Поэтому внутри отрезка есть хотя бы один корень; однако несколько корней тоже возможны.
Пусть m = (a + b) / 2 — середина текущего отрезка. Если f(m) = 0, корень найден точно. Если знак f(m) совпадает со знаком f(a), корень сохраняется в правой половине [m; b]; если совпадает со знаком f(b), оставляют левую половину [a; m]. Иными словами, выбирают ту часть, на концах которой знаки различаются.
Затем новую половину снова делят пополам и выполняют ту же проверку. После каждого шага длина отрезка уменьшается в два раза, поэтому возможная ошибка постепенно сокращается. Если принять середину последнего отрезка за ответ, её расстояние от корня не превосходит половины длины этого отрезка.
Вычисления можно остановить, когда (b − a) / 2 ≤ ε. Тогда найденная середина обеспечивает заданную точность. В программе границы отрезка хранятся в переменных, середина вычисляется в цикле, а условный оператор выбирает, какую границу заменить.
Таблица показывает порядок действий и контрольные условия метода. На каждом шаге нужно не просто вычислить середину, а проверить знаки: иначе можно случайно отбросить часть, содержащую корень. Последняя строка объясняет, какое число записывают как результат.
| Этап | Действие | Что проверить |
|---|---|---|
| Выбор начального отрезка | Взять [a; b] и вычислить f(a), f(b) | Непрерывность функции и f(a) · f(b) < 0 |
| Вычисление середины отрезка | Найти m = (a + b) / 2 и вычислить f(m) | Не является ли f(m) равным нулю |
| Определение половины, содержащей корень | Оставить [a; m] или [m; b] | На новых концах должны быть разные знаки |
| Проверка условия остановки | Сравнить (b − a) / 2 с ε | Если значение не больше ε, цикл завершается |
| Запись приближённого корня | Взять середину последнего отрезка | Ответ соответствует требуемой точности |
Найдём корень на [1; 2] с точностью 0,1. Обозначим f(x) = x² − 2. На концах f(1) = −1 и f(2) = 2, поэтому смена знака есть.
Ответ: x ≈ 1,44 с точностью 0,1. Точное значение положительного корня равно √2, но для метода оно заранее не требуется.
Пусть f(x) = x³ − x − 1, а начальный отрезок — [1; 2]. Значения f(1) = −1 и f(2) = 5 имеют разные знаки, значит, при непрерывности функции корень находится внутри.
Ответ: x ≈ 1,32 с точностью 0,01. Каждый выбор половины основан не на близости чисел, а на сохранении разных знаков на её концах.
Нужно найти корень на [0; 1] с заданной точностью ε. Обозначим f(x) = cos(x) − x: f(0) = 1, f(1) = cos(1) − 1 < 0, поэтому начальный отрезок подходит.
Ответ: при ε = 0,01 программа выдаст приближение x ≈ 0,74. Изменив ε, можно получить более или менее точный результат без изменения самого алгоритма.
Одинаковые знаки на концах. Если f(a) и f(b) оба положительны или оба отрицательны, наличие корня не гарантируется. Такую ошибку допускают, проверяя только числа, а не их знаки; нужно вычислить произведение f(a) · f(b) и убедиться, что оно отрицательно.
Уверенность в единственности корня. Смена знака гарантирует хотя бы один корень при непрерывности функции, но не ровно один. На отрезке может быть несколько пересечений с осью; единственность нужно обосновывать отдельно.
Неверное обновление границы. Иногда после вычисления середины заменяют границу, не проверив знак. В результате корень теряется; после каждого шага проверьте, что у новых концов снова разные знаки.
Неправильная остановка. Число шагов само по себе не равно точности, а слишком слабое условие может дать грубый ответ. Надёжная проверка — сравнить половину текущей длины отрезка с ε.
До изучения метода нужно уметь вычислять значения функции, сравнивать числа и определять знак результата. Эти действия нужны для проверки концов отрезка и выбора нужной половины.
В алгоритмах и программах метод опирается на переменные, условные операторы и циклы. Переменные хранят границы, условие выбирает половину, а цикл повторяет действия до достижения точности.
Приближённые вычисления встречаются в численных методах и при программном решении математических задач. Тот же подход применяют, когда формула точного ответа слишком сложна для практического использования.
Зачем решать уравнение приближённо, если можно искать точный ответ?
Для многих уравнений точную формулу найти трудно или невозможно. Приближённый метод позволяет получить число с заранее заданной погрешностью и использовать его в вычислениях.
Как понять, что на выбранном отрезке есть корень?
Если функция непрерывна на отрезке [a; b], а значения f(a) и f(b) имеют разные знаки, то между ними есть хотя бы один корень. На практике проверяют условие f(a) · f(b) < 0.
Почему на каждом шаге оставляют именно одну половину отрезка?
В середине отрезка вычисляют значение функции и сравнивают его знак со знаками на концах. Оставляют ту половину, где снова сохраняется смена знака, поэтому наличие корня остаётся гарантированным.
Как определить, сколько шагов метода потребуется?
После каждого шага длина отрезка уменьшается в два раза. Если начальная длина равна b − a, то после n шагов она станет (b − a) / 2ⁿ; число шагов выбирают так, чтобы половина этой длины не превышала ε.
Что выбрать в программе в качестве условия остановки?
Удобно остановиться, когда (b − a) / 2 ≤ ε. Тогда середина текущего отрезка отличается от корня не более чем на заданную точность.
2.5. Приближенное решение уравнений