Решение квадратных уравнений
Квадратные уравнения изучают в 8 классе, поэтому ничего сложного здесь нет. Умение решать их совершенно необходимо.
— это уравнение вида ax 2 + bx + c = 0, где коэффициенты a , b и c — произвольные числа, причем a ≠ 0.
Прежде, чем изучать конкретные методы решения, заметим, что все квадратные уравнения можно условно разделить на три класса:
- Не имеют корней;
- Имеют ровно один корень;
- Имеют два различных корня.
В этом состоит важное отличие квадратных уравнений от линейных, где корень всегда существует и единственен. Как определить, сколько корней имеет уравнение? Для этого существует замечательная вещь — дискриминант.
Дискриминант
Пусть дано квадратное уравнение ax 2 + bx + c = 0. Тогда — это просто число D = b 2 − 4 ac .
Эту формулу надо знать наизусть. Откуда она берется — сейчас неважно. Важно другое: по знаку дискриминанта можно определить, сколько корней имеет квадратное уравнение. А именно:
- Если D < 0, корней нет;
- Если D = 0, есть ровно один корень;
- Если D > 0, корней будет два.
Обратите внимание: дискриминант указывает на количество корней, а вовсе не на их знаки, как почему-то многие считают. Взгляните на примеры — и сами все поймете:
- x 2 − 8 x + 12 = 0;
- 5 x 2 + 3 x + 7 = 0;
- x 2 − 6 x + 9 = 0.
Выпишем коэффициенты для первого уравнения и найдем дискриминант:
a = 1, b = −8, c = 12;
D = (−8) 2 − 4 · 1 · 12 = 64 − 48 = 16
Итак, дискриминант положительный, поэтому уравнение имеет два различных корня. Аналогично разбираем второе уравнение:
a = 5; b = 3; c = 7;
D = 3 2 − 4 · 5 · 7 = 9 − 140 = −131.
Дискриминант отрицательный, корней нет. Осталось последнее уравнение:
a = 1; b = −6; c = 9;
D = (−6) 2 − 4 · 1 · 9 = 36 − 36 = 0.
Дискриминант равен нулю — корень будет один.
Обратите внимание, что для каждого уравнения были выписаны коэффициенты. Да, это долго, да, это нудно — зато вы не перепутаете коэффициенты и не допустите глупых ошибок. Выбирайте сами: скорость или качество.
Кстати, если «набить руку», через некоторое время уже не потребуется выписывать все коэффициенты. Такие операции вы будете выполнять в голове. Большинство людей начинают делать так где-то после 50-70 решенных уравнений — в общем, не так и много.
Корни квадратного уравнения
Теперь перейдем, собственно, к решению. Если дискриминант D > 0, корни можно найти по формулам:
Когда D = 0, можно использовать любую из этих формул — получится одно и то же число, которое и будет ответом. Наконец, если D < 0, корней нет — ничего считать не надо.
- x 2 − 2 x − 3 = 0;
- 15 − 2 x − x 2 = 0;
- x 2 + 12 x + 36 = 0.
Первое уравнение:
x 2 − 2 x − 3 = 0 ⇒ a = 1; b = −2; c = −3;
D = (−2) 2 − 4 · 1 · (−3) = 16.
D > 0 ⇒ уравнение имеет два корня. Найдем их:
Второе уравнение:
15 − 2 x − x 2 = 0 ⇒ a = −1; b = −2; c = 15;
D = (−2) 2 − 4 · (−1) · 15 = 64.
D > 0 ⇒ уравнение снова имеет два корня. Найдем их
Наконец, третье уравнение:
x 2 + 12 x + 36 = 0 ⇒ a = 1; b = 12; c = 36;
D = 12 2 − 4 · 1 · 36 = 0.
D = 0 ⇒ уравнение имеет один корень. Можно использовать любую формулу. Например, первую:
Как видно из примеров, все очень просто. Если знать формулы и уметь считать, проблем не будет. Чаще всего ошибки возникают при подстановке в формулу отрицательных коэффициентов. Здесь опять же поможет прием, описанный выше: смотрите на формулу буквально, расписывайте каждый шаг — и очень скоро избавитесь от ошибок.
Неполные квадратные уравнения
Бывает, что квадратное уравнение несколько отличается от того, что дано в определении. Например:
- x 2 + 9 x = 0;
- x 2 − 16 = 0.
Несложно заметить, что в этих уравнениях отсутствует одно из слагаемых. Такие квадратные уравнения решаются даже легче, чем стандартные: в них даже не потребуется считать дискриминант. Итак, введем новое понятие:
Уравнение ax 2 + bx + c = 0 называется , если b = 0 или c = 0, т.е. коэффициент при переменной x или свободный элемент равен нулю.
Разумеется, возможен совсем тяжелый случай, когда оба этих коэффициента равны нулю: b = c = 0. В этом случае уравнение принимает вид a x 2 = 0. Очевидно, такое уравнение имеет единственный корень: x = 0.
Рассмотрим остальные случаи. Пусть b = 0, тогда получим неполное квадратное уравнение вида ax 2 + c = 0. Немного преобразуем его:
Поскольку арифметический квадратный корень существует только из неотрицательного числа, последнее равенство имеет смысл исключительно при (− c / a ) ≥ 0. Вывод:
- Если в неполном квадратном уравнении вида ax 2 + c = 0 выполнено неравенство (− c / a ) ≥ 0, корней будет два. Формула дана выше;
- Если же (− c / a ) < 0, корней нет.
Как видите, дискриминант не потребовался — в неполных квадратных уравнениях вообще нет сложных вычислений. На самом деле даже необязательно помнить неравенство (− c / a ) ≥ 0. Достаточно выразить величину x 2 и посмотреть, что стоит с другой стороны от знака равенства. Если там положительное число — корней будет два. Если отрицательное — корней не будет вообще.
Теперь разберемся с уравнениями вида ax 2 + bx = 0, в которых свободный элемент равен нулю. Тут все просто: корней всегда будет два. Достаточно разложить многочлен на множители:
Произведение равно нулю, когда хотя бы один из множителей равен нулю. Отсюда находятся корни. В заключение разберем несколько таких уравнений:
- x 2 − 7 x = 0;
- 5 x 2 + 30 = 0;
- 4 x 2 − 9 = 0.
x 2 − 7 x = 0 ⇒ x · ( x − 7) = 0 ⇒ x 1 = 0; x 2 = −(−7)/1 = 7.
5 x 2 + 30 = 0 ⇒ 5 x 2 = −30 ⇒ x 2 = −6. Корней нет, т.к. квадрат не может быть равен отрицательному числу.
4 x 2 − 9 = 0 ⇒ 4 x 2 = 9 ⇒ x 2 = 9/4 ⇒ x 1 = 3/2 = 1,5; x 2 = −1,5.
Смотрите также:
- Теорема Виета
- Следствия из теоремы Виета
- Тест на тему «Значащая часть числа»
- Метод коэффициентов, часть 1
- Однородные тригонометрические уравнения: общая схема решения
- Задача B4: строительные бригады
- Вход для учеников
- ЕГЭ-2024
- Школьникам
- 1. Арифметика
- Арифметика
- Дроби
- Модуль
- Проценты
- Корни
- Степени
- Прогрессии
- Текстовые задачи
- 2. Алгебра
- Уравнения
- Системы уравнений
- Неравенства
- Системы неравенств
- Рациональные дроби
- Функции
- Многочлены
- Логарифмы
- Экспонента
- Задачи с параметром
- Вероятность
- 4. Геометрия
- Треугольники
- Многоугольники
- Окружность
- Стереометрия
- Векторы
- 3. Математический анализ
- Тригонометрия
- Предел
- Производная
- Интегралы
- Студентам
- Реклама
- Обо мне
- © 2010—2024 ИП Бердов Павел Николаевич
ИНН 760708479500; ОГРНИП 309760424500020 - При использовании материалов ссылка на сайт обязательна
Телефон: +7 (963) 963-99-33; почта: pavel@berdov.com - Карта сайта
Калькулятор уравнений
С помощью этого калькулятора вы сможете решить линейное, квадратное или кубическое уравнение онлайн. Примеры вычислений можно найти в соответствующем разделе.
Решение уравнений
Уравнение — это равенство с переменной (или неизвестной). Уравнение с одной переменной $x$ в общем виде обычно записывается таким образом: $f(x) = g(x)$.
Решением (или корнем) уравнения называется такое значение переменной, при котором уравнение превращается в верное числовое равенство. Решить уравнение — значит найти все его решения или доказать, что их нет.
Как решить уравнение на калькуляторе: сначала ввести часть уравнения до знака =, нажать кнопку x=y, ввести оставшуюся часть уравнения, нажать кнопку =, чтобы произвести вычисления. Например, для уравнения $2x — 4 = 0$ корнем является $x = 2$. Вот как этот результат был получен с помощью калькулятора уравнений:
$$2x — 4 = 0 \\ \Downarrow \\ x = 2$$
Линейные уравнения
Линейное уравнение с одной неизвестной — это уравнение следующего вида:
- $x$ — неизвестная,
- $a$ — коэффициент при неизвестной,
- $b$ — свободный член уравнения.
Линейные уравнения являются простейшим видом алгебраических уравнений, решение которых сводится к выполнению простых арифметических действий.
$$4x — 16 = 0 \\ \Downarrow \\ x = 4$$
$$3x + 2 = 6 — x \\ \Downarrow \\ x = 1$$
Квадратные уравнения
Квадратным уравнением называется уравнение следующего вида:
$$ax^2 + bx + c = 0 \ \ \ (a \ne 0)$$
Решение квадратных уравнений на калькуляторе:
$$4x^2 — 6x + 2 = 0 \\ \Downarrow \\ x_1 = 1, \ x_2 = 0.5$$
$$x^2 — 3x — 4 = 0 \\ \Downarrow \\ x_1 = 4, \ x_2 = -1$$
$$x^2 — 4x + 4 = 0 \\ \Downarrow \\ x_1 = x_2 = x = 2$$
Соотношения коэффициентов
Существуют такие квадратные уравнения, у которых коэффициенты находятся в соотношениях, позволяющих решать эти уравнения гораздо проще.
$$a + b + c = 0 \\ \Downarrow \\ x_1 = 1, \ x_2 = \frac $$
$$a + c = b \\ \Downarrow \\ x_1 = -1, \ x_2 = — \frac $$
Корни таких уравнений можно найти и с помощью обычного калькулятора.
Дискриминант
Дискриминант применяется для нахождения корней квадратного уравнения. Формула вычисления дискриминанта:
Формула вычисления корней с использованием дискриминанта:
Если $D > 0$, то уравнение имеет два различных корня. Например:
$$4x^2 — 6x + 2 = 0 \\ \Downarrow \\ a = 4, \ b = -6, \ c = 2 \\ \Downarrow \\ D = (-6)^2 — 4 × 4 × 2 = 4 \\ \Downarrow \\ x_ = \frac \\ \Downarrow \\ x_1 = \frac = 1, \ x_2 = \frac = 0.5$$
Если $D = 0$, то уравнение имеет один корень (или два одинаковых корня). Например:
$$x^2 — 4x + 4 = 0 \\ \Downarrow \\ a = 1, \ b = -4, \ c = 4 \\ \Downarrow \\ D = (-4)^2 — 4 × 1 × 4 = 0 \\ \Downarrow \\ x_ = \frac \\ \Downarrow \\ x_1 = x_2 = x = \frac = 2$$
$$x^2 + 4x + 5 = 0 \\ \Downarrow \\ a = 1, \ b = 4, \ c = 5 \\ \Downarrow \\ D = 6^2 — 4 × 1 × 5 = -4 \\ \Downarrow \\ x_ = \frac > \\ \Downarrow \\ x_1 = \frac = -2 + i, \\ x_2 = \frac = -2 — i$$
Теорема Виета
Теорема Виета устанавливает простые алгебраические соотношения (формулы Виета) между корнями квадратного уравнения $x_1, x_2$ и его коэффициентами $a, b, c$. Используя эти формулы, можно найти корни, если известны коэффициенты, или вычислить коэффициенты, если известны корни.
Биквадратные уравнения
Биквадратным уравнением называется уравнение следующего вида:
$$ax^4 + bx^2 + c = 0 \ \ \ (a \ne 0)$$
Если произвести замену $x^2$ на $y \ (y \ge 0)$, то получится квадратное уравнение, для которого можно найти корни $y_1, y_2$. Корни биквадратного уравнения находятся так:
Кубические уравнения
Кубическим уравнением называется уравнение следующего вида:
$$ax^3 + bx^2 + cx + d = 0 \ \ \ (a \ne 0)$$
$$x^3 — 6x^2 — 31x + 120 = 0 \\ \Downarrow \\ x_1 = -5, x_2 = 3, x_3 = 8$$
Если кубическое уравнение разделить на $a$ и заменить $x$ на $y — \frac $, то оно примет следующий более простой вид:
Формула Кардано
Если кубическое уравнение имеет следующий вид:
то для нахождения корней этого уравнения можно применить формулу Кардано:
Как решить квадратное уравнение написанное в виде строки?
Вводим,например: 21x^2+3x+5=0 . Нужно считать строку каким-то способом взять из нее a,b,c, то есть 21,3,5, чтобы эти числа были типом double. И потом уже решить квадратное уравнение. В программе можно использовать только библиотеку stdio и только одну функцию из библиотеки math.h — это sqrt , больше ничего нельзя. Уравнение я смогу написать а вот как изьять из строки числа как double понятия не имею.
Отслеживать
13.8k 12 12 золотых знаков 44 44 серебряных знака 77 77 бронзовых знаков
задан 13 дек 2017 в 17:49
43 3 3 бронзовых знака
Заменить все не-цифры на пробелы, а потом уже высканивать числа (1-е, 3-е и 4-е).
13 дек 2017 в 17:57
Понял схему.но не понимаю как именно с ее помощью вывести три числа в три разные переменные типа doble.Если бы вы могли написать.спасибо
13 дек 2017 в 17:59
@Akina Все не совсем так просто, ввести же могут (наверно) и 5+3x+21x^2=0 , и 21x^2+3x=-5 , и (наверняка) 21x^2+5=0 , и 21x^2+3x=0 . И это ещё без учета более экзотических вариантов типа 21x^2+2x+x+5=0 .
13 дек 2017 в 18:00
Нет,это примитивная задача как бы)Должны ввести точно так же как в примере ax^2+bx+c=0
13 дек 2017 в 18:02
@Сергей: И что, даже так вводить нельзя: 5x^2-3x-10=0 ?
14 дек 2017 в 5:45
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
В данном случае scanf() с одной большой форматной строкой, как предложил @Sergey, не подойдёт. Раз члены уравнения могут следовать в любом порядке, то и строку надо считывать частями.
Пусть на входе у нас строка вида S1+. +SN=0 или S1+. +SN= (где Si = x , либо Si = x^ ), а на выходе — массив коэффициентов, где индекс массива соответствует нужной степени при коэффициенте.
Важное замечание: так как число может быть сколь угодно большим, то во избежание переполнения строкового буфера мы будем считывать его поциферно. Ну а так как строка сложная, воспользуемся конечным автоматом.
#include #define bool unsigned char #define true 1 #define false 0 enum States < // Конечные состояния Result_Success, // Успешное завершение Result_CoefficientCantBeStored, // Ошибка: массив outCoeffs слишком мал Result_UnexpectedSymbolInCoeff, // Ошибка: неожиданный символ в коэффициенте Result_UnexpectedEndOfPower, // Ошибка: После знака степени нет самой степени Result_UnexpectedEndOfRightSide,// Ошибка: не указана правая часть уравнения // Промежуточные состояния State_AtCoeffStart, // Первый символ коэффициента (+/-/цифра) State_AtCoeff, // Дальнейшие цифры коэффициента State_AtX, // Буква "икс" State_AtPowerCoeffStart, // Первый символ показателя степени члена State_AtPowerCoeff, // Показатель степени члена State_AtRightSideStart, // Первый символ справа от знака равенства State_AtRightSide, // Дальнейшие цифры справа от знака равенства // Первое неконечное состояние (используется при проверке на необходимость выхода) FirstInternalState = State_AtCoeffStart >; /** * Функция разбора строки с линейным уравнением и вычленения из неё коэффициентов. * * Переметры: * * in * Дескриптор входного символьного потока. * * outCoeffs * Указатель на массив, который будет принимать коэффициенты, считанные * из уравнения. Коэффициент для N-й степени идёт в outCoeffs[N]. * Если определённый коэффициент не указан в уравнении, то в соответствующий * элемент массива будет записан положительный ноль. * * coeffsCount * Количество элементов в массиве outCoeffs. Если очередная степень приводит * к записи за пределами outCoeffs, функция возвращает * Result_CoefficientCantBeStored. * * Возвращаемое значение: * * Константа из семейства States::Result_*. При возникновении ошибки происходит * возврат кода, отличного от Result_Success; массив outCoeffs при этом содержит * те коэффициенты, которые были успешно считаны целиком до возникновения ошибки. */ enum States parse(FILE* in, double* outCoeffs, size_t coeffsCount) < // Зануляем все указанные коэффициенты, вдруг не все из них будут указаны в уравнении for(size_t i = 0; i < coeffsCount; ++i) outCoeffs[i] = 0.0; enum States state = State_AtCoeffStart; size_t currentPowCoefficient = 0; bool isPositiveCoeff; double numBuffer = 0.0; bool metDecimalDot = false; size_t denomPower = 0; // Так как нам может потребоваться попридержать текущий символ до следующего // состояния, введём для него промежуточный буфер char ch = fgetc(in); while(state >= FirstInternalState) < // Считываем очередной символ и решаем, что с ним делать (решение принимаем // с помощью простенького конечного автомата). // // Да простят меня нелюбители switch-bases FSM, но пробрасывать // во вспомогательные функции все параметры и переменные — для учебного // примера это, пожалуй, перебор. switch(state) < case State_AtCoeffStart: // Сюда мы можем выйти при завершении предыдущего члена. // Поэтому именно здесь мы выдаём готовый коэффициент. if(coeffsCount >currentPowCoefficient) < // Чтобы сместить десятичную точку на denomPower позиций // вправо, мы могли бы воспользоваться pow(). Однако, // для этого потребуется зпрещённая math.h, а потому мы //вынуждены крутить цикл double decimalPointOffseter = 1.0; for(size_t i = 0; i < denomPower; ++i) decimalPointOffseter /= 10.0; outCoeffs[currentPowCoefficient] = numBuffer * (isPositiveCoeff ? 1.0 : -1.0) / decimalPointOffseter; >else state = Result_CoefficientCantBeStored; // Переходим непосредственно к чтению нового члена metDecimalDot = false; if(ch == '-') < numBuffer = 0.0; isPositiveCoeff = false; ch = fgetc(in); state = State_AtCoeff; >else if(ch == '=') < ch = fgetc(in); state = State_AtRightSideStart; >else if(ch == EOF) < state = Result_Success; >else < numBuffer = 0.0; isPositiveCoeff = true; state = State_AtCoeff; >break; case State_AtCoeff: if(ch >= '0' && ch else if(ch == 'x') < state = State_AtX; ch = fgetc(in); >else if(ch == '+' || ch == '-' || ch == EOF) < // Окончание коэффициента с нулевой степенью. Придерживаем символ currentPowCoefficient = 0; state = State_AtCoeffStart; >else if(ch == '.') < metDecimalDot = true; denomPower = 0; >else state = Result_UnexpectedSymbolInCoeff; break; case State_AtX: // Подготавливаем аккумулятор для коэффициента currentPowCoefficient = 0; if(ch == '^') < ch = fgetc(in); state = State_AtPowerCoeffStart; >else < // Окончание коэффициента с первой степенью. Придерживаем символ currentPowCoefficient = 1; state = State_AtCoeffStart; >break; case State_AtPowerCoeffStart: state = (ch != EOF) ? State_AtPowerCoeff : Result_UnexpectedEndOfPower; break; case State_AtPowerCoeff: if(ch >= '0' && ch else state = State_AtCoeffStart; break; case State_AtRightSideStart: if(ch == '-') < numBuffer = 0.0; isPositiveCoeff = true; // Инверсия знака ch = fgetc(in); state = State_AtRightSide; >else if(ch == EOF) < state = Result_UnexpectedEndOfRightSide; >else < numBuffer = 0.0; isPositiveCoeff = false; // Инверсия знака state = State_AtRightSide; >break; case State_AtRightSide: if(ch == EOF) < currentPowCoefficient = 0; numBuffer = -numBuffer; // Переходим, чтобы сохранить коэффициент и сразу же выйти state = State_AtCoeffStart; >else if(ch == '.') < metDecimalDot = true; denomPower = 0; >else < numBuffer *= 10.0; numBuffer += (double)(int)(ch - '0'); ch = fgetc(in); ++denomPower; // Ничего не проверяем, всё равно будет сброс при точке >break; > > return state; >
Решение квадратного уравнения
Уравнение вида a⋅x 2 + b⋅x + c = 0 — квадратное уравнение.
a, b, c — действительные числа, a ≠ 0.
Для того чтобы вычислить корни квадратного уравнения, нужно сначала найти дискриминант.
D = b 2 — 4⋅a⋅c;
- если D < 0, то квадратное уравнение не имеет корней;
- если D = 0, то уравнение имеет один действительный корень(иногда говорят, что корней два, но они одинаковые):
- x1 = x2 = -b / (2⋅a);
- x1 = (-b + √D) / (2⋅a);
- x2 = (-b + √D) / (2⋅a).
Программа для решения квадратного уравнения
using System; using System.Text; class Program < static void Main( ) < Console.OutputEncoding = Encoding.UTF8; Console.WriteLine("Решение квадратного уравнения"); //ввод данных Console.Write("a hljs-keyword">var a = double.Parse(Console.ReadLine()); Console.Write("b hljs-keyword">var b = double.Parse(Console.ReadLine()); Console.Write("c hljs-keyword">var c = double.Parse(Console.ReadLine()); double x1, x2; //дискриминант var discriminant = Math.Pow(b, 2) - 4 * a * c; if (discriminant < 0) < Console.WriteLine("Квадратное уравнение не имеет корней"); > else < if (discriminant == 0) //квадратное уравнение имеет два одинаковых корня < x1 = -b / (2 * a); x2 = x1; > else //уравнение имеет два разных корня < x1 = (-b + Math.Sqrt(discriminant)) / (2 * a); x2 = (-b - Math.Sqrt(discriminant)) / (2 * a); > //вывод корней уравнения Console.WriteLine($"x1 = ; x2 = "); > Console.WriteLine("Для выхода нажмите любую клавишу. "); Console.ReadKey(true); > >
Метод Math.Pow, языка C#, используется для возведения числа в степень.
Метод Math.Sqrt используется для получения квадратного корня числа.