본문 바로가기
programming language/MATLAB

MATLAB 다항식의 계수 추정 polyfit(), polyval()

by 남성 2011. 3. 12.

polyfit() 함수는 입력과 출력 값으로부터 다항식의 계수를 찾아 주는 함수 입니다. 예를 들면 라는 식에서 x, y 값을 알고 있으면 다항식의 계수값 a, b, c 값을 찾아 준다는 것입니다. polyfit() 함수의 원형은 다음과 같습니다.

 

p = polyfit(x,y,n)

 

  • x 는 다항식의 입력값, y 는 다항식의 결과값입니다.
  • n 은 차수를 의미 합니다.
  • p 는 차수에 따른 다항식의 계수 값을 의미 합니다.

 

다음과 같은 x, y 값에 대하여 다항식의 계수를 찾아보겠습니다.

x=0:5

x =

0 1 2 3 4 5

 

y=2*x.^3 + 5*x.^2 + 6*x+4

y =

4 17 52 121 236 409

 

위와 같은 값이 있을 때 다음과 같이 3차 다항식의 계수를 찾습니다.

결과 p 의 값을 보면 위에 있는 y 식에서의 계수를 정확히 찾는 것을 볼 수가 있습니다.

 

p=polyfit(x,y,3)

p =

2.0000 5.0000 6.0000 4.0000

 

만약 4차 다항식으로 fitting을 해보면

 

p4=polyfit(x,y,4)

p4 =

0.0000 2.0000 5.0000 6.0000 4.0000

 

다음과 같은 값이 나오는 군요.

위 결과로부터 알 수 있는 것은 차수를 모를 때는 최대한 큰 차수를 넣어 보는 것이 좋습니다.

위 결과에서는 4 차 다항식의 계수 값은 0 이므로 x, y 사이의 관계는 3차 다항식이라는 것을 알 수가 있습니다.

 

다음으로 다항식 계수로부터 값을 계산하는 함수인 polyval 함수에 대해 알아봅니다.

polyfit 함수로 찾은 계수의 값이 제대로 나온 건지 검증 하기 위하여 polyval 함수를 주로 이용합니다.

 

함수의 원형은 아래와 같습니다.

 

y = polyval(p,x)

p 는 다항식 계수 값이고 x 는 입력 값입니다.

 

앞에서 y=2*x.^3 + 5*x.^2 + 6*x+4 라고 표현했던 부분은

polyval 함수를 이용해서 y=polyval([2 5 6 4], x) 라고 표현해도 동일한 결과가 나오는 겁니다.

 


댓글0