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

4차 방정식의 근의 합과 곱의 절대 차이 구하는 방법

이 글에서는 4차 방정식의 근의 합과 근의 곱 사이의 절대 차이를 구하는 방법을 알아봅니다.

일반적인 4차 방정식은 다음과 같은 형태입니다.

ax4 + bx3 + cx2 + dx + e = 0

방정식을 직접 풀어 네 개의 근을 구한 뒤 합과 곱을 계산하는 방법도 있지만, 4차 방정식의 해법은 복잡하고 계산량이 많아 매우 비효율적입니다. 다행히 비에타 정리(Vieta's formulas)를 활용하면 근을 일일이 구하지 않고도 두 값을 즉시 얻을 수 있습니다.

  • 근의 합: −b∕a
  • 근의 곱: e∕a

따라서 구하고자 하는 절대 차이는 다음 식 하나로 표현됩니다.

|−b∕a − e∕a|

알고리즘

rootSumProdDiff(a, b, c, d, e)

begin
    sum := -b/a
    prod := e/a
    return |sum - prod|
end

C++ 예제 코드

#include<iostream>
#include<cmath>
using namespace std;
double rootSumProdDiff(double a, double b, double c, double d, double e){
    double sum = double(-b/a);
    double prod = double(e/a);
    return abs(sum - prod);
}
main() {
    double a,b,c,d,e;
    cout << "Enter a, b, c, d, e for equation ax^4 + bx^3 + cx^2 + dx + e:";
    cin >> a >> b >> c >> d >> e;
    cout << "Difference between sum and product of roots are: " << rootSumProdDiff(a, b, c, d, e);
}

실행 결과

Enter a, b, c, d, e for equation ax^4 + bx^3 + cx^2 + dx + e:8 4 6 4 1
Difference between sum and product of roots are: 0.625

결과 해석

a = 8, b = 4, e = 1을 대입하면 다음과 같이 계산됩니다.

  • 근의 합 = −b∕a = −4∕8 = −0.5
  • 근의 곱 = e∕a = 1∕8 = 0.125
  • 절대 차이 = |−0.5 − 0.125| = 0.625

이처럼 비에타 정리를 이용하면 4차 방정식을 실제로 풀 필요 없이 상수 시간(O(1)) 안에 근의 합과 곱의 절대 차이를 손쉽게 구할 수 있습니다.