home *** CD-ROM | disk | FTP | other *** search
/ C!T ROM 2 / ctrom_ii_b.zip / ctrom_ii_b / PROGRAM / PASCAL / NRPAS13 / CHEBPC.DEM < prev    next >
Text File  |  1991-04-29  |  1KB  |  50 lines

  1. PROGRAM d5r8(input,output);
  2. (* driver for routine CHEBPC *)
  3. LABEL 10,99;
  4. CONST
  5.    nval=40;
  6.    pio2=1.5707963;
  7. TYPE
  8.    glcarray= ARRAY [1..nval] OF real;
  9. VAR
  10.    a,b,poly,x,y : real;
  11.    i,j,mval : integer;
  12.    c,d : glcarray;
  13.  
  14. FUNCTION func(x: real): real;
  15. BEGIN
  16.    func := sqr(x)*(sqr(x)-2.0)*sin(x)
  17. END;
  18.  
  19. (*$I MODFILE.PAS *)
  20. (*$I CHEBFT.PAS *)
  21.  
  22. (*$I CHEBPC.PAS *)
  23.  
  24. BEGIN
  25.    a := -pio2;
  26.    b := pio2;
  27.    chebft(a,b,c,nval);
  28. 10:   writeln;
  29.    writeln('How many terms in Chebyshev evaluation?');
  30.    write('Enter n between 6 and ',nval:2,
  31.          '. (n := 0 to end).  ');
  32.    readln(mval);
  33.    IF ((mval <= 0) OR (mval > nval)) THEN GOTO 99;
  34.    chebpc(c,d,mval);
  35. (* test polynomial *)
  36.    writeln;
  37.    writeln('x':9,'actual':14,'polynomial':14);
  38.    FOR i := -8 to 8 DO BEGIN
  39.       x := i*pio2/10.0;
  40.       y := (x-(0.5*(b+a)))/(0.5*(b-a));
  41.       poly := d[mval];
  42.       FOR j := mval-1 DOWNTO 1 DO BEGIN
  43.          poly := poly*y+d[j]
  44.       END;
  45.       writeln(x:12:6,func(x):12:6,poly:12:6)
  46.    END;
  47.    GOTO 10;
  48. 99:
  49. END.
  50.