[Python]다항식의 보간법 - 뉴턴, 라그랑주
선형 보간법, 뉴턴 보간법, 라그랑주 보간법의 개념과 Python에서의 구현 방법을 설명합니다. numpy.interp 함수를 활용한 선형 보간법과 scipy를 이용한 고차 다항식 보간법의 예제를 통해 실제 적용 방법을 보여줍니다.
다항식의 보간법
선형, 비선형 보간법(실제 식을 모르니 보간하는것이다.)
다항식의 보간법은 x, y, z… 등 각 값들을 통해서 다항식을 유추하는 과정을 알아보는것이다.
n=0(차), p(x)=y
n=1(차), p(x)=직선방정식 활용 => 선형 보간법
n>=2(차) 부터 비선형 보간법 => 뉴턴, 라그랑주 형태 소개
참고 : 선형 보간법
-
참고로 사용가능한 라이브러리를 알려주기 위함이므로 선형 보간법의 자세한 설명은 생략.
-
numpy.interp
를 사용할 수 있으며, 값 까지 반환이 된다. - 빨간점이 보간 하기전 데이터이고, 파란점이 보간을 완료한 데이터이다.
- 기존의 y인 sinx그래프와 보간한 그래프가 매우 유사하다는것을 알 수 있다.
보간 다항식 : 뉴턴 형태
뉴턴 형태의 공식을 활용해서 예제 3처럼 x, y값이 있다면,
각각 순서대로 해당 차수의 다항식을 구해나갈 수 있다.
- 예로 p1(x) 를 구해보면 -5 + 2x 로 다항식이 나타난다.
- 표를보면 p(0)=-5, p(1)=-3 임을 알 수 있고, 공식에 대입을 해보면
- p1(x)=p0(x)+c(x-0)=-5+cx 이다. 여기서 p1(1)=-3 을 사용하면 -5+c=-3 -> c=2 가 도출된다.
- 최종적으로 p1(x)=-5+2x 다항식을 구할 수 있다.
- 이처럼 다항식을 차례로 보간해서 구해 나갈수 있다.
- 그리고 최종 마지막 다항식을 구했으면 그것이 최종
보간 다항식
인 것이다.- 즉 x와 y의 값만을 가지고 다항식을 보간해서 구해본 과정인 것이다.
- 뉴턴 라이브러리는 구글링을 할 것
보간 다항식 : 라그랑주 형태
공식은 이것이며, 뉴턴 때 처럼 값 넣어보면 다항식을 계속 구해나갈 수 있다.
아래사진은 교수님이 풀이해주셨던 모습 중 하나이다.
- x={0,1,2}, y=f(x)={0,1,8} 의 값이 있을 때 “라그랑주 공식”을 사용하여 “보간 다항식”을 구하는 예시
- P2(x) 를 구하는게 목적이다. 즉, P2(x) = l0f(x0) + l1f(x1) + l2f(x2) 구하라.
- 이를위해 l0(x) ~ l2(x) 도 구해줘야 하므로 P(x), l(x) 두가지 공식을 전부 사용 한다.
- 아래 사진은 참고만하고 직접 공식을 대입하여 풀어보자. 어렵지 않다.
활용 가능한 라이브러리를 소개하겠다.
- 아래 예시는
x로 0,1,2
y는 1, 1, 8
을 통해서 보간 완료한 다항식이 3x2 - 2x 이다.
댓글남기기