Квадратным уравнением является уравнение следующего вида:
ax² + bx + c = 0
Квадратное уравнение может иметь один или два корня, а может и не иметь корней.
Для решения квадратного уравнения необходимо в начале вычислить дискриминант:
D = b² – 4ac
Если дискриминант отрицательный, то уравнение не имеет корней.
Если дискриминант равен нулю, то уравнение имеет единственный корень:
x = –b ÷ 2a
Если дискриминант положительный, то уравнение имеет два корня:
x₁ = (–b + √D) ÷ 2a
x₂ = (–b – √D) ÷ 2a
uses
math;
type
dptr = ^double;
procedure solveEquation(a: double; b: double; c: double; x1: dptr; x2: dptr);
var
d: double;
nan: double;
begin
nan := 0.0 / 0.0;
d := b*b - 4.0*a*c;
if (d < 0.0) then begin
x1^ := nan;
x2^ := nan;
end else if (d < 0.00001) then begin
x1^ := -b / 2.0 / a;
x2^ := -b / 2.0 / a;
end else begin
x1^ := (-b + sqrt(d)) / 2.0 / a;
x2^ := (-b - sqrt(d)) / 2.0 / a;
end;
end;
#include <math.h>
void solveEquation(double a, double b, double c, double* x1, double* x2) {
double d = b*b - 4.0*a*c;
if (d < 0.0) {
*x1 = NAN;
*x2 = NAN;
} else if (d < 0.00001) {
*x1 = -b / 2.0 / a;
*x2 = -b / 2.0 / a;
} else {
*x1 = (-b + sqrt(d)) / 2.0 / a;
*x2 = (-b - sqrt(d)) / 2.0 / a;
}
}
В качестве примера, решим следующее квадратное уравнение:
2x² – 8x + 6 = 0
Вычислим дискриминант:
D = b² – 4ac = 8² – 4·2·6 = 64 – 48 = 16
Дискриминант больше нуля, а значит уравнение имеет два корня:
x₁ = (–b + √D) ÷ 2a = (–8 + √16) ÷ 2·2 = (8 + 4) ÷ 4 = 3
x₂ = (–b - √D) ÷ 2a = (–8 - √16) ÷ 2·2 = (8 - 4) ÷ 4 = 1