Решатель линейных уравнений
Линейное уравнение — это уравнение, в котором переменная (например, 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
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
не равно c
. В этой ветке мы выводим сообщение: «Уравнение не имеет решений» и завершаем программу.
Отлично.
Мы добавили в программу обработку исключительных случаев. Теперь можем проверить её с другими параметрами.
Например, как справится программа с отрицательным значением a
в уравнении? Отлично справляется.
Подберём такие значения параметров уравнения, чтобы ответ был дробным. Справится ли программа с этим? Отлично справляется!
Финальный шаг! Давайте добавим анимацию, чтобы визуально показать этапы вычислений. Теперь процесс решения стал более понятным и интересным.
Мы создали программу, которая способна решать любые линейные уравнения. Понимая, как она работает, мы можем создавать ещё больше полезных программ: генератор задач для подготовки к ЕГЭ, телеграм-бота для решения уравнений, программы для визуализации уравнений, различные игры и даже настоящие приложения, в которых используются линейные уравнения!