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

C++로 선형 외삽(Linear Extrapolation) 구현하기

이 튜토리얼에서는 선형 외삽(Linear Extrapolation)을 구현하는 C++ 프로그램에 대해 알아보겠습니다.

선형 외삽이란?

외삽(Extrapolation)은 특정 함수에서 요구되는 값이 함수 정의 범위의 하한 또는 상한을 벗어나 있을 때, 그 값을 추정하는 과정을 의미합니다.

선형 외삽의 경우, 함수 그래프 위에 만든 접선(tangent)을 이용하여 범위 밖의 값을 구합니다. 선형 외삽은 실제 적용 시 상당히 정확한 결과를 제공하는 것으로 알려져 있습니다.

구현 원리

두 점 (x₁, y₁)과 (x₂, y₂)가 주어졌을 때, 선형 외삽은 다음 공식을 사용합니다.

y = y₁ + (x − x₁) / (x₂ − x₁) × (y₂ − y₁)

즉, 알려진 두 점을 지나는 직선의 기울기를 활용해 범위 밖의 x값에 해당하는 y값을 계산하는 방식입니다.

C++ 예제 코드

#include <bits/stdc++.h>
using namespace std;

// x와 y 값을 담기 위한 구조체
struct Data {
    double x, y;
};

// 선형 외삽 계산 함수
double calc_extrapolate(Data d[], double x){
    double y;
    y = d[0].y
      + (x - d[0].x)
      / (d[1].x - d[0].x)
        * (d[1].y - d[0].y);
    return y;
}

int main(){
    Data d[] = { { 1.2, 2.7 }, { 1.4, 3.1 } };
    double x = 2.1;
    cout << "Value of y (x = 2.1) : " << calc_extrapolate(d, x) << endl;
    return 0;
}

실행 결과

Value of y (x = 2.1) : 4.5

코드 설명

위 예제에서는 좌표 쌍 (1.2, 2.7)과 (1.4, 3.1)이라는 두 개의 데이터 포인트를 사용했습니다. calc_extrapolate 함수는 이 두 점으로 결정되는 직선을 따라 x = 2.1 지점의 y값을 계산하며, 그 결과 4.5가 출력됩니다.

이처럼 선형 외삽은 주어진 데이터가 직선적 추세를 따른다고 가정할 때, 관측 범위를 벗어난 값을 간단하고 효과적으로 예측할 수 있는 유용한 수학적 기법입니다.