> | restart; Lagrange := proc() local n,X,Y,i,j,F,prod,x; printf("Enter # data points:\n"); n:= scanf("%d")[1]; printf("Enter data points:\n"); X:=array(1..n); Y:=array(1..n); for i from 1 to n do X[i]:= scanf("%f")[1]; Y[i]:= scanf("%f")[1]; od; F:=0; for i from 1 to n do prod:=1; for j from 1 to n do if j<>i then prod := prod*(x-X[j])/(X[i]-X[j]); fi; od; F:=F+Y[i]*prod; od; printf("F(x)= %a\n",F); printf("Test:\n"); do x:= scanf("%f")[1]: if x > 1000 then printf("Bye!\n"); break; fi; printf(" F(%f)= %f\n",x,F(x)); od; end: |
> | Lagrange(); |
Enter # data points:
> | 3 |
Enter data points:
> | 0 1 |
> | 1 2 |
> | 2 5 |
F(x)= -.5000000000*(-1.000000000*x+1.000000000)*(x-2.)-2.000000000*x*(x-2.)+2.500000000*x*(x-1.)
Test:
> | 0 |
F(0.000000)= 1.000000
> | 1 |
F(1.000000)= 2.000000
> | 2 |
F(2.000000)= 5.000000
> | 3 |
F(3.000000)= 10.000000
> | 1.5 |
F(1.500000)= 3.250000
> | 100000 |
Bye!