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

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