반응형
간단한 다항식 계산에 대한 프로그래밍이다.
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; } |
반응형