Computational Intelligence/수치계산

호너법(Horner's Method)의 C프로그래밍

초인로크 2012. 12. 23. 20:32
반응형

호너법에 대한 위키백과


간단한 다항식 계산에 대한 프로그래밍이다.

f(x)=5x^4+4x^3+3x^2+2x+1 에 대한 계산을 c언어로 해주려면 아래와 같이...


x=5*(x*x*x*x)+4*(x*x*x)+3*(x*x)+2*x+1


로 해 주어도 되나, 프로그래밍을 할 경우 효율이 상당히 떨어진다.

f(x)는 아래와 같이,


이므로 곱셈과 덧셈이 반복되는 계산식으로 바꿔줄 수 있으므로,

이걸 이용하면 f(x)를 아래와 같이 간단한 소스코드로 작성이 가능하다.


       f=(f*x)+a[i];


여담으로 [조립제법]이란 단어가 [組立除法]이라고 똑같은 단어가 일본어 교과서에 있더라.

한자권에서 원래 있던 단어인지, 일본어를 그대로 들여온건지 확실한건 잘 모르겠지만,

영어도 그렇고 수학도 그렇고 일본의 영향을 많이 받은듯하다.


아래는 간단한 소스코드...


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <stdio.h>
#include <math.h>
double horner_method(int x);
 
double horner_method(int x){
   
    double a[5] = {5.,4.,3.,2.,1.};
    int i;
    double f=a[0];
   
    for(i=1;i<5;i++){
        f=(f*x)+a[i];
        printf("%lf\n",f);
    }
    printf("The answer is %lf\n",f);
   
}
 
int main (int argc, const char * argv[])
{
    double a;
    printf("Input the number :");
    scanf("%lf",&a);
    horner_method(a);
    return 0;
}


반응형