C언어/코드로 보는 수학

코드로 보는 수학 : 선형 보간법

_minit 2024. 11. 8. 11:33

 

 

선형 보간법이란?

선형 보간법(linear interpolation)은 두 개의 알려진 값 사이에 위치한 어떤 지점의 값을 예측하는 방법이다. 간단히 말해, 두 점을 직선으로 연결하고 그 직선 위의 특정 위치에서 값을 찾는 것이다. 이 방법은 두 점 사이의 관계가 선형적일 때 매우 유용하다.

선형이란 무엇인가?

'선형'이라는 용어는 일직선 형태로 변화하는 관계를 의미한다. 즉, 두 변수 사이에 일정한 비율로 변화가 일어나면 선형적이라고 할 수 있다. 예를 들어, 온도가 시간에 따라 꾸준히 증가하거나 감소하는 경우, 그 관계를 선형적이라 할 수 있다. 선형 관계에서는 그래프가 직선의 형태를 가지며, 모든 점들이 직선 위에 위치한다.

선형 보간법에서 사용하는 선형 관계는 이러한 두 점 사이에 존재하는 직선적인 변화를 가정하는 것이다. 따라서 두 점 사이의 값을 구할 때 이 두 점을 연결하는 직선을 사용하여 그 중간 지점의 값을 예측한다.

수학적 공식

선형 보간법을 수학적으로 표현하면 다음과 같은 공식으로 나타낼 수 있다:

\[ L(x) = y_1 + \frac{(x - x_1)}{(x_2 - x_1)} \times (y_2 - y_1) \]

여기서,
- \(x_1, y_1\)과 \(x_2, y_2\)는 두 개의 알려진 좌표이다.
- \(x\)는 우리가 값을 추정하고 싶은 지점이다.
- \(L(x)\)는 \(x\)에서의 예측된 값이다.

이 공식은 두 점 \((x_1, y_1)\)과 \((x_2, y_2)\)를 직선으로 연결하고, 그 직선 위에서 원하는 위치 \(x\)의 값을 구하는 방법이다.

예시

온도 데이터를 예로 들어 좀 더 자세히 설명해보겠다. 예를 들어, \(x_1 = 1\), \(y_1 = 20\), \(x_2 = 3\), \(y_2 = 30\)이라고 해보자. 그리고 \(x = 2\)일 때의 값을 구하고 싶다면:

\[ L(2) = 20 + \frac{(2 - 1)}{(3 - 1)} \times (30 - 20) = 20 + 0.5 \times 10 = 25 \]

따라서, 2초에서의 온도는 25도로 추정된다.

C 코드로 구현해보기

이제 C 언어를 사용해서 선형 보간법을 구현해 보겠다. 간단한 함수를 통해 직접 계산할 수 있다.


#include <stdio.h>

// 선형 보간 함수 정의
float linear_interpolation(float x1, float y1, float x2, float y2, float x) {
    return y1 + ((x - x1) / (x2 - x1)) * (y2 - y1);
}

int main() {
    // 예시 데이터
    float x1 = 1.0, y1 = 20.0;
    float x2 = 3.0, y2 = 30.0;
    float x = 2.0;

    // 보간된 값 계산
    float y = linear_interpolation(x1, y1, x2, y2, x);
    printf("%.1f초에서의 온도는 %.1f도입니다.\n", x, y);

    return 0;
}
    

위 코드에서는 linear_interpolation 함수를 정의하고, 두 점 사이의 값을 추정하도록 했다. 이를 통해 간단하게 보간된 값을 계산할 수 있다.

선형 보간법의 응용

선형 보간법은 그래프를 그리거나 센서 데이터를 보정할 때, 또는 영상 처리나 게임 개발에서 자주 사용된다. 간단하고 빠른 계산으로 데이터의 중간 값을 예측할 수 있기 때문에 많은 분야에서 유용하게 쓰인다. 특히, 데이터의 간격이 좁고 선형적 관계가 유지되는 경우에 매우 효과적이다.

728x90