Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript로 이차방정식의 해(실근) 계산하기

문제 정의

이번 글에서는 세 개의 숫자를 인자로 받아 이차방정식의 해(근)를 구하는 JavaScript 함수를 작성해 보겠습니다. 세 숫자는 순서대로 이차항의 계수(a), 일차항의 계수(b), 상수항(c)을 의미합니다.

함수는 방정식의 실근을 배열 형태로 반환하고, 만약 실근이 존재하지 않는다면 false를 반환해야 합니다.

수학적 배경

일반형이 ax² + bx + c = 0인 이차방정식은 근의 공식을 사용하여 해를 구할 수 있습니다. 먼저 판별식 D = b² − 4ac를 계산하며, 그 값에 따라 해의 성질이 결정됩니다.

  • D ≥ 0 : 서로 다른 두 실근 또는 중근이 존재
  • D < 0 : 실근이 존재하지 않음 (허근)

실근이 존재하는 경우에는 근의 공식 x = (−b ± √D) / 2a를 적용하여 두 근을 구합니다.

구현 예제

위 내용을 바탕으로 작성한 코드는 다음과 같습니다.

const coeff = [1, 12, 3];
const findRoots = co => {
    const [a, b, c] = co;
    const discriminant = (b * b) - 4 * a * c;
    // 실근이 존재하지 않는 경우
    if(discriminant < 0){
        return false;
    };
    const d = Math.sqrt(discriminant);
    const x1 = (d - b) / (2 * a);
    const x2 = ((d + b) * -1) / (2 * a);
    return [x1, x2];
};
console.log(findRoots(coeff));

실행 결과

콘솔에 출력되는 결과는 다음과 같습니다.

[ -0.2554373534619714, -11.744562646538029 ]

코드 설명

입력된 계수 [1, 12, 3]은 방정식 x² + 12x + 3 = 0에 해당합니다. 판별식은 12² − 4×1×3 = 132로 양수이므로 두 개의 실근이 존재합니다.

Math.sqrt()로 판별식의 제곱근을 구한 뒤 근의 공식에 대입하면 x₁ ≈ −0.2554와 x₂ ≈ −11.7446이라는 두 실근을 얻을 수 있습니다. 참고로 두 근의 합은 −12(= −b/a), 곱은 3(= c/a)이 되므로 근과 계수의 관계도 성립함을 확인할 수 있습니다.