Как решить уравнение, для которого нет формулы. 10 класс, углублённый уровень — занятие четырнадцатое.
Уроки 27–28 поурочного плана: «Численные методы» и практическая работа «Численное решение уравнений». Сегодня компьютер найдёт корни уравнения x³ − 7x + 1 = 0 с точностью до тысячных — перебором с шагом и половинным делением.
Для x² + px + q = 0 есть формула через дискриминант. А для x³ − 7x + 1 = 0 в школе формулы нет — и для большинства уравнений, которые встречаются в физике, экономике, графике, её нет вообще.
Зато компьютер умеет быстро считать значение функции f(x) = x³ − 7x + 1 в любой точке: f(2) = −5, f(3) = 7.
Численный метод — способ найти корень приближённо: считать f в разных точках и сужать место, где лежит корень.
| x | −3 | −2 | −1 | 0 | 1 | 2 | 3 |
|---|---|---|---|---|---|---|---|
| f(x) = x³ − 7x + 1 | −5 | 7 | 7 | 1 | −5 | −5 | 7 |
f(−3) = −5, а f(−2) = 7. Чтобы попасть из минуса в плюс, непрерывная функция обязана пройти через ноль: на отрезке [−3; −2] есть корень. Так же на [0; 1] и на [2; 3].
Перебираем отрезки [x; x + 1] с шагом 1 и печатаем те, на концах которых f меняет знак.
Вывод: ,
,
— три отрезка,
на каждом по корню.
Отделить корни — найти отрезки, на каждом из которых лежит ровно один корень. Это первый шаг любого численного решения.
Ищем √7 — корень уравнения x² = 7. Шагаем по x с шагом 0.1, пока x² ещё меньше 7: 2.5² = 6.25, 2.6² = 6.76, 2.7² = 7.29 — стоп.
Программа печатает .
Ответ — первый x, где условие уже не выполнено: корень, округлённый вверх до десятых. Точность метода — шаг.
Корень на [2; 3]. Берём середину c = 2.5: f(2.5) = −0.875, f(2) = −5 — знак один, корня слева нет, он в правой половине: a = 2.5.
Дальше [2.5; 3] → c = 2.75 → … пока отрезок не станет короче 0.001.
Ответ: .
Каждый шаг вдвое укорачивает отрезок с корнем. Остаётся та половина, на концах которой f разного знака.
| шагов | 0 | 1 | 2 | 3 | … | 9 | 10 |
|---|---|---|---|---|---|---|---|
| длина отрезка | 1 | 0.5 | 0.25 | 0.125 | … | 0.00195… | 0.00098… |
От длины 1 до точности 0.001 — 10 шагов: 2¹⁰ = 1024, и 1/1024 уже меньше 0.001. Сама функция на число шагов не влияет — только длина и точность.
→
: деление «/» всегда даёт вещественное
число. Целое деление —
.
→
: 0.1 в двоичной
записи — бесконечная дробь, хранится приближение.
→ ровно три знака:
,
.
→
: лишние нули round не
дописывает.
Вещественные числа не сравнивают через ==. Цикл пишут через
«длина больше точности»: .
Отметка: три задания — «5», два — «4», одно — «3». Все три файла — в одну новую папку.
Сначала тренажёр, потом три программы.
Домашнее задание — на странице «Домашнее задание»: шесть типов задач — таблица шагов на бумаге, данные, на которых врёт программа, вопросы про численные методы; Python дома не нужен. Исправленное после подсказки в отметку не идёт — вместо него новая задача, добирать можно до пятёрки. В начале следующей пары — проверочная по этим же типам.