영상처리에서
이차방정식
의 두 해는
로 표현된다. 고유값의 특성방정식으로 보면 계수
의 해를 프로그램으로 구하면
double b = 1.0e8, c = 1.;
double d = sqrt(b * b - 4. * c);
double x1 = (b + d)/2., x2 = (b - d)/2.;
TRACE("x1=%e, x2=%e", x1, x2);
프로그램을 돌리면 얻게 되는 결과는
그런데 테일러 전개를 사용하면
이어야 한다. 따라서
을 통해서 구하는 것이 더 수치적으로 정교하다. 일반적으로 두 근의 합
// Find two roots of a quadratic eq: x * x - b * x + c = 0;
void Quadratic2(double b, double c, double& x1, double& x2) {
double d = sqrt(b * b - 4. * c);
x1 = (b + d)/ 2., x2 = (b - d)/ 2.;
TRACE("x1=%e, x2=%e\r\n", x1, x2);
if (b > 0)
if (x1 != 0) x2 = c / x1;
else
if (x2 != 0) x1 = c / x2;
TRACE("Improved: x1=%e, x2=%e\r\n", x1, x2);
}
이 경우 결과는 훨씬 더 정교한 값을 보여준다.
'Mathematics' 카테고리의 다른 글
Fourier Interpolation (0) | 2024.03.20 |
---|---|
Generalized eigenvalues problem (0) | 2024.03.02 |
열방정식의 Green function (0) | 2024.02.12 |
지구의 나이는(Age of Earth)? (0) | 2024.02.11 |
n 차원 공의 부피(Volume of an n Ball) (2) | 2024.02.07 |