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