home *** CD-ROM | disk | FTP | other *** search
/ World of Shareware - Software Farm 2 / wosw_2.zip / wosw_2 / CPROG / ANUMR5.ZIP / EDRKFTST.C < prev    next >
C/C++ Source or Header  |  1991-11-24  |  1KB  |  75 lines

  1. /* OK mémoire */
  2.  
  3.  
  4. #include <math.h>
  5. #include <conio.h>
  6. #include <stdio.h>
  7. #include <stdlib.h>
  8. #include <alloc.h>
  9.  
  10. #include "anum.h"
  11. #include "sysio.h"
  12.  
  13.  
  14.  
  15. double bf(double t, double x)
  16.  
  17. {    double res;
  18.  
  19.     res = x/t + t - 1;
  20.     return(res);
  21. }
  22.  
  23.  
  24.  
  25. void results(int nret, double *xval, double *tval)
  26.  
  27. {    int i;
  28.  
  29.     puts("       T          X");
  30.     puts("---------------------------");
  31.     for (i=0; i<nret; i++)
  32.         printf("% 10.5le  % 10.5le\n", *(tval+i), *(xval+i));
  33. }
  34.  
  35.  
  36.  
  37. void main(void)
  38.  
  39. {    double lb,ub,x0,tol,*xval,*tval;
  40.     int nret,errcode;
  41.  
  42.     clrscr();
  43.     puts("Test program for function RKF");
  44.     puts("-----------------------------\n");
  45.  
  46.     lb=2.0;
  47.     ub=3.0;
  48.     x0=4.0;
  49.     nret=5;
  50.     tol=1.0e-6;
  51.  
  52.     printf("Lower bound            : %+10.5lf\n",lb);
  53.     printf("Upper bound            : %+10.5lf\n",ub);
  54.     printf("x at t = %+lf     : %+10.5lf\n\n",lb,x0);
  55.     printf("Number of asked values : %3d\n",nret);
  56.     printf("Tolerance in X/T units : %10.5le\n\n",tol);
  57.  
  58.     xval=farcalloc(nret,sizeof(double));
  59.     tval=farcalloc(nret,sizeof(double));
  60.     if (xval==NULL || tval==NULL)
  61.     {    fputs("Not enough core", stderr);
  62.         exit(-1);
  63.     }
  64.  
  65.     RKF(lb, ub, x0, tol, nret,tval, xval, &errcode, bf);
  66.     SYSMSG(errcode, stderr);
  67.  
  68.     results(nret, xval, tval);
  69.  
  70.     farfree(tval);
  71.     farfree(xval);
  72.  
  73. }
  74.  
  75.