Решатель линейных уравнений
Линейное уравнение — это уравнение, в котором переменная (например, x
) не возводится в степень, не умножается сама на себя и не находится под корнем.
Самый простой и важный вид линейного уравнения — это ax + b = c
. Где x
— переменная, то, что мы хотим найти. a
, b
, c
— числа, которые задаёт условие.
Любое линейное уравнение можно привести к виду ax + b = c
.
Это называется канонической формой линейного уравнения (или нормальной формой). С таким видом уравнений уже можно работать спокойно — например, написать программу для решения таких уравнений.
Примеры, которые сводятся к канонической форме:
Уравнение | Каноническая форма |
---|
2x = 6 | 2x + 0 = 6 |
x + 4 = 10 | 1x + 4 = 10 |
5 = x - 3 | -1x + 5 = -3 |
Если вы научитесь решать уравнения в виде ax + b = c
, вы будете щёлкать практически все задачи в 7–9 классе, и легко подготовитесь к ЕГЭ.
Сегодня мы напишем программу, которая поможет разобраться, как решаются такие уравнения.
Для начала подключим к нашей странице файл script.js
, в котором будем писать программу, и откроем его в редакторе.
Создаём пустую функцию solveLinear()
, которая будет принимать три числа: a
, b
и c
.
Мы создали «волшебную коробку», в которую можно положить три числа: a
, b
и c
. Это будут коэффициенты из уравнения вида ax + b = c
. Пока эта коробка ничего не делает — только существует. Но это наша основа.
Прежде чем решать уравнение, полезно его увидеть. Мы просто показываем, как оно выглядит с подставленными числами. Это как первая строчка в тетради, чтобы понимать, что вообще решаем.
Мы используем специальную команду showStep
, которая будет показывать каждый этап решения как отделный шаг. Но пока что ничего не изменилось!
Чтобы что-то увидеть, надо запустить нашу программу! Для этого вызываем функцию solveLinear()
.
Это как если бы вы дали задачу другу: «Реши 3x + 7 = 25» — и он бы посчитал за вас.
Теперь мы можем постепенно дорабатывать программу и видеть, что происходит внутри.
Переносим b
в правую часть.
Мы хотим, чтобы слева осталась только переменная x
, а всё остальное — справа. Для этого переносим +b
вправо, но с противоположным знаком — становится -b
. Ученики часто здесь путаются, но важно помнить: перенос происходит с противоположным знаком.
Теперь мы вычисляем правую часть, для этого вычитаем из c
коэффициент b
и сохраняем во временну переменную rightSide
.
Мы уже посчитали правую часть, теперь важно показать, что у нас получилось. Это промежуточный результат — видно, что от уравнения осталось только ax = что-то
.
Давайте убедимся, что при переносе b
в правую часть правильно меняется знак. Для этого изменим значение b
с 7
на -7
.
Отлично видно, как программа вычитает отрицательное число:
25 - -7 = 25 + 7 = 32
Вернём положительное значение b
, чтобы двигаться дальше.
Делим обе части на a
.
Чтобы избавиться от a
, нужно разделить обе стороны уравнения на это число. Это важный шаг: мы превращаем ax = число
в x = что-то
.
Чтобы найти значение x
нужно значение правой части уравнения поделить на a
.
Значение правой части хранится в промежуточной переменной rightSide
. Поэтому берём rightSide
и делим на переменную a
. Результат записываем в переменную x
.
Мы показываем окончательный ответ и возвращаем его. То есть говорим: «x равен вот этому числу».
Важно не забывать особые случаи. Для линейных уравнений особый случай наступает, когда a = 0
.
Давайте зададим переменной a
нулевое значение и запустим программу. Она выдаёт какую-то ерунду — x = NaN
.
Когда в уравнениии перед x
стоит 0
— это значит, переменной x
вообще нет. Такое уравнение становится странным, как наше 0x + 7 = 7
.
Такие случаи надо обрабатывать отдельно. Добавляем в начало функции проверку равно ли значение a
нулю.
Если b
равно c
, то решений бесконечно много. Если у нас получилось, например, 7 = 7
, это всегда верно — неважно, какое x
. Значит, решений бесконечно много.
Добавляем внутрь проверки на равенство a
нулю ещё одну проверку на равенство b
и c
.
И если проверка срабатывает, то выводим результат — «Уравнение имеет бесконечно много решений». И сразу выходим из программы.
Давайте изменим входные параметры программы, чтобы b
отличалось от с
. Программа снова показывает ерунду — x = Infinity
.
Если a = 0
и при этом b ≠ c
, то решений нет. Действительно, уравнение 7 = 8
не имеет никакого смысла и решить его невозможно.
Поэтому добавляем в проверку альтернативную ветку else
, которая срабатывает когда b
не равно с
. Внутри этой ветки выводим результат «Уравнение не имеет решений» и завершаем программу.
Отлично. Мы добавили в программу обработку исключительных случаев. И теперь можем проверить её с другими параметрами.
Например, как справится программа с отрицательным x
в уравнении? Отлично справляется.
Подберём такое уравнение, чтобы ответ был дробным. Справится ли программа с этим? Отлично справляется!
Финальный штрих! Добавим небольшую анимацию для этапов вычислений. Теперь ход решения стал более наглядным.
Мы написали программу, которая может решить любое линейное уравнение. Понимая, как она работает, мы сможем написать ещё больше полезных программ: свой генератор заданий ЕГЭ, телеграм-бота для решения линейных уравнений, визуализаторы уравнений, несколько игр и настоящих приложений, в которых используются линейные уравнения!