"Информатика", Поляков К.Ю., Еремин Е.А.
Численные методы помогают находить приближённые ответы, когда точное решение уравнения получить трудно или нельзя. Один из таких способов — метод половинного деления: он сужает отрезок, на котором находится корень, вдвое на каждом шаге. Чтобы результат был надёжным, проверяют знаки функции на концах отрезка и заранее задают допустимую погрешность. В программе повторяют вычисления до тех пор, пока отрезок не станет достаточно коротким.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Численный метод — способ получить приближённый результат вычисления с помощью последовательности арифметических операций. Вместо готовой формулы выполняют ряд понятных шагов, например многократно делят отрезок пополам. Такой способ нужен, когда точное решение найти трудно или не удаётся.
Численное решение уравнения — приближённое значение его корня, найденное с заданной точностью. Корень — это такое значение переменной, при котором левая часть уравнения обращается в ноль. Приближение позволяет работать с ответом, даже если корень нельзя удобно записать точной формулой.
Погрешность — отличие приближённого результата от точного. Абсолютная погрешность равна модулю разности между точным значением и приближением: |x − x₀|. Точность задаёт, насколько малой должна быть эта погрешность: например, точность 0,1 означает допустимое отклонение не больше 0,1.
Метод половинного деления — способ приближённого поиска корня на отрезке, при котором выбирают половину со сменой знака функции. На каждом шаге отрезок с корнем становится вдвое короче. Поэтому этот метод позволяет последовательно уточнять ответ и контролировать его точность.
Точное решение удаётся получить не для каждого уравнения: иногда подходящей формулы нет или её применение слишком сложно. Численный метод заменяет поиск точного ответа повторяющимися вычислениями, которые можно поручить компьютеру. Результат получается приближённым, потому что процесс останавливают после достижения заданного уровня точности, а не продолжают бесконечно.
Точность задают до начала вычислений, например ε = 0,01. В методе половинного деления удобно следить за длиной отрезка: если b − a ≤ ε, то его середина уже даёт ответ с достаточной точностью. Чем короче отрезок, тем ближе любая его точка к корню, который внутри него заключён. Если оценивают погрешность именно середины, она не превышает половины длины отрезка.
Метод используют, когда значения функции на концах отрезка имеют разные знаки: f(a) · f(b) < 0. Если функция непрерывна, при переходе от отрицательного значения к положительному она должна пройти через ноль, значит, внутри есть корень. Одна только смена знака не показывает точное положение корня, но позволяет сохранить отрезок, в котором он находится. Непрерывность функции на отрезке — важное условие этого вывода.
Сначала вычисляют середину m = (a + b) / 2 и находят f(m). Если f(m) имеет тот же знак, что f(a), корень сохраняется на отрезке [m; b]; иначе оставляют [a; m]. Так выбирают половину, на концах которой по-прежнему разные знаки. После выбора границ вычисления повторяют уже для нового, более короткого отрезка.
Одинаковые действия удобно записать в цикле программы: на каждом шаге вычислить середину, проверить знак функции и обновить одну из границ. У цикла должно быть условие завершения, например b − a > ε: пока оно истинно, поиск продолжается. Когда длина отрезка станет не больше ε, цикл остановится, а программа выведет середину и число шагов. Перед циклом нужно проверить начальный отрезок: если на его концах нет смены знака, этот метод для него не подходит.
| Характеристика | Точный аналитический способ | Метод половинного деления |
|---|---|---|
| Что получают | Точное выражение или точное значение корня | Приближённое значение корня |
| Когда применим | Когда уравнение удаётся решить с помощью известных формул и преобразований | Когда на отрезке есть смена знака непрерывной функции |
| Какие исходные данные нужны | Уравнение и подходящие аналитические приёмы | Функция, границы отрезка и заданная точность |
| Как контролируют точность | Проверяют точное равенство или преобразования | Следят за длиной отрезка и заданной погрешностью |
| Основное ограничение | Не для всякого уравнения удаётся получить удобную точную формулу | Нужны непрерывность и смена знака на концах отрезка |
Таблица помогает выбрать подход: если точное решение получить трудно, можно проверить, подходит ли уравнение для метода половинного деления. Для этого нужны функция и отрезок со сменой знака на концах. Затем точность численного ответа сравнивают с требованиями задачи.
Задача 1. Найти с точностью до 0,1 корень уравнения x² − 2 = 0 на отрезке [1; 2] методом половинного деления.
Ответ: корень приближённо равен 1,4 с точностью до 0,1.
Задача 2. Найти с точностью до 0,01 корень уравнения x³ − x − 1 = 0 на [1; 2] и записать приближения в таблицу. В столбце «середина» указана проверяемая точка, а в столбце «новый отрезок» — часть, где остаётся смена знака.
| Шаг | Середина | Новый отрезок |
|---|---|---|
| 1 | 1,5 | [1; 1,5] |
| 2 | 1,25 | [1,25; 1,5] |
| 3 | 1,375 | [1,25; 1,375] |
| 4 | 1,3125 | [1,3125; 1,375] |
| 5 | 1,34375 | [1,3125; 1,34375] |
| 6 | 1,328125 | [1,3125; 1,328125] |
| 7 | 1,3203125 | [1,3203125; 1,328125] |
Ответ: корень приближённо равен 1,324 (или 1,32 с точностью до сотых).
Задача 3. Составить программу, которая получает границы отрезка и точность ε, ищет корень f(x) = 0 методом половинного деления и сообщает число шагов. Для примера возьмём f(x) = x³ − x − 1; в программе функцию можно заменить на нужную.
Ответ: алгоритм выдаёт приближённый корень и число шагов, а неподходящий начальный отрезок отклоняет до начала поиска.
Считать, что корень есть на любом выбранном отрезке. Так думают, потому что при поиске обращают внимание только на само уравнение. Но без смены знака на концах отрезка метод не подтверждает, что внутри есть корень. Перед началом вычислений проверьте значения f(a) и f(b); для непрерывной функции их знаки должны различаться.
Выбирать половину отрезка наугад. Иногда кажется, что достаточно просто сохранить половину, которая выглядит подходящей. Однако корень можно случайно отбросить, если не сравнить знаки функции. После вычисления середины проверьте, на какой половине значения на концах имеют разные знаки, и оставьте именно её.
Путать точность с числом шагов. Число вроде 0,01 задаёт допустимую погрешность, а не количество повторений. Нужное число шагов зависит также от длины начального отрезка: длинный отрезок обычно приходится делить больше раз. Проверьте себя по условию остановки: вычисления заканчиваются, когда длина отрезка стала не больше ε.
Задать условие цикла, которое не станет ложным. Ошибка возникает, если условие не связано с уменьшением отрезка или достижением нужной точности. Тогда программа может выполнять шаги бесконечно. Проверьте, что при каждом повторении границы обновляются, длина отрезка уменьшается, а условие, например b − a > ε, в итоге становится ложным.
Для метода нужно уметь вычислять значения функции, сравнивать числа и понимать, что такое отрезок числовой прямой. Эти знания помогают проверить знаки на границах и выбрать часть отрезка после каждого шага. При программировании метод связывается с циклами, условными операторами и счётчиками. Он пригодится для поиска приближённых решений уравнений и в моделировании процессов, где точный расчёт затруднён.
Почему не всегда можно найти точное решение уравнения?
Для некоторых уравнений нет удобной формулы, которая выражает корень через известные числа и действия. Даже если формула существует, её вычисление может быть слишком сложным. Тогда используют численный метод и получают ответ с заранее выбранной точностью.
Как понять, что корень находится на выбранном отрезке?
Для непрерывной функции достаточно проверить, что на концах отрезка её значения имеют разные знаки: f(a) · f(b) < 0. Тогда между концами есть хотя бы один корень. Если знаки одинаковы, метод половинного деления применять нельзя без дополнительных оснований.
Какую точность задавать в программе?
Точность выбирают по задаче: например, 0,1 означает, что допустимое отклонение результата не должно превышать одной десятой. В методе половинного деления удобно остановиться, когда длина текущего отрезка не больше заданной точности. Чем меньше это число, тем точнее ответ и тем больше шагов может потребоваться.
Почему метод называется методом половинного деления?
На каждом шаге текущий отрезок делят на две равные части и проверяют значение функции в середине. Затем оставляют половину, в которой сохраняется смена знака на концах. Поэтому длина отрезка с корнем каждый раз уменьшается вдвое.
Что произойдёт, если не задать условие остановки цикла?
Цикл может выполняться бесконечно, потому что программе не будет известно, когда достаточно точности. В результате программа не выдаст ответ и продолжит вычисления. Нужно задать условие, которое станет истинным при достижении требуемой точности.
§ 28. Численные методы