home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / cpm / basic / astrmenu.lbr / INTERP.BZS / INTERP.BAS
BASIC Source File  |  1987-04-26  |  1KB  |  47 lines

  1. 1 PRINT "From the April 1984 SKY & TELESCOPE, p. 359."
  2. 2 PRINT
  3. 3 PRINT "This program interpolates values in an ephemeris or other table,"
  4. 4 PRINT "using the mdethod developed by French mathematician J.L. Lagrange."
  5. 5 PRINT
  6. 6 PRINT "INPUT:  Number of known points to be entered from a table, value (F)"
  7. 7 PRINT "        for each point (X), desired intermediate point."
  8. 8 PRINT
  9. 9 PRINT "OUTPUT:  Interpolated value for desired intermediate point." : PRINT
  10. 10 REM LAGRANGE INTERPOLATION
  11. 12 REM
  12. 14 INPUT "HOW MANY POINTS";N
  13. 16 PRINT
  14. 18 DIM X(N),F(N),L(N)
  15. 20 FOR I=1 TO N
  16. 22 INPUT "X,F";X(I),F(I)
  17. 24 NEXT I
  18. 26 FOR I=1 TO N : L(I)=1
  19. 28 FOR J=1 TO N
  20. 30 IF J=I THEN 34
  21. 32 L(I)=L(I)*(X(I)-X(J))
  22. 34 NEXT J
  23. 36 L(I)=F(I)/L(I)
  24. 38 NEXT I
  25. 40 PRINT
  26. 42 INPUT "DESIRED X (ENTER X TO END)";X$
  27. 44 IF X$="X" THEN 78
  28. 46 IF X$>"9" THEN 42
  29. 48 X=VAL(X$) : F1=0
  30. 50 FOR I=1 TO N
  31. 52 IF X<>X(I) THEN 56
  32. 54 F=F(I) : F1=1
  33. 56 NEXT I
  34. 58 IF F1=1 THEN 74
  35. 60 T=1 : F=0
  36. 62 FOR I=1 TO N
  37. 64 T=T*(X-X(I))
  38. 66 NEXT I
  39. 68 FOR I=1 TO N
  40. 70 F=F+L(I)*T/(X-X(I))
  41. 72 NEXT I
  42. 74 PRINT "F:  ";F
  43. 76 PRINT : GOTO 42
  44. 78 RUN"ASTRMENU.BAS"
  45. )
  46. 66 NEXT I
  47. 68 FOR I=1