3.
A polynomial an x^n + an-1 x^n-1 + … + a0 can be evaluated(計值)
方法(A). In a straightforward way by performing the indicated operations and using power function.
方法(B). An alternative method is to factor the polynomial according to the following formula, known as HORNER’S Rule:
(…( ( an x + an-1 ) x + an-2 ) x + …+ a1 ) + a0
(1). Write two programs to evaluate polynomials by these two different methods.
為簡化題目,多項式最高項次方小於等於5,係數由keyboard key in
(2). Please compare these two methods.
(方法A,B需幾次的乘算及加算)
Ex: f(x)=5x^4 +4x^3 +3x^2 +2x+1 ( input x from keyboard)
方法(B): let a0 =1, a1 =2, a2 =3, a3 =4, a4 =5
We have : f0 = a4 , f1 = f0 * x + a3 , f2 = f1 * x + a2 , f3 = f2 * x + a1
f4 = f3 * x + a0 = 5x^4 +4x^3 +3x^2 +2x+1 ------->Answer
( In general form f = f *x + a , f =a )- #include<stdio.h>
- int main(void){
- int a1,a2,a3,a4,a5,r;
- double x,ans;
-
- printf("please input a1 :");
- scanf("%d",&a1);
- printf("please input a2 :");
- scanf("%d",&a2);
- printf("please input a3 :");
- scanf("%d",&a3);
- printf("please input a4 :");
- scanf("%d",&a4);
- printf("please input a5 :");
- scanf("%d",&a5);
- printf("please input r :");
- scanf("%d",&r);
-
- printf("please input x :");
- scanf("%lf",&x);
-
- //case1
-
- ans = a1*x*x*x*x*x+a2*x*x*x*x+a3*x*x*x+a4*x*x+a5*x+r;
- printf("\ncase 1 answer is %lf",ans);
-
- //case2
-
- double f1,f2,f3,f4;
-
- f1 = a1*x+a2;
- f2 = f1*x+a3;
- f3 = f2*x+a4;
- f4 = f3*x+a5;
-
- ans = f4*x+r;
- printf("\ncase 2 answer is %lf",ans);
-
- //compare
-
- printf("\nmethod 1 use '*' 15 times and '+' 5 times ");
- printf("\nmethod 2 use '*' 5 times and '+' 5 times ");
- return 0;
- }
複製代碼 |