home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1989 / 08 / praxis / inteparw.c < prev    next >
Encoding:
C/C++ Source or Header  |  1989-03-05  |  1.4 KB  |  80 lines

  1. /* #include <math.h> */
  2. #include <net.h>
  3.  
  4.  
  5. #define PI 3.1415926536
  6. #define UNEND 1e4
  7. #define INTERVALLE 20000
  8. #define FVEKSIZE 3
  9.  
  10. /* Nachrichtenstruktur */
  11. struct Nachr{
  12.         int MatZeilenNr;
  13.         double MatZeile[FVEKSIZE];
  14.         }   Nachricht;
  15.  
  16. extern double sin();
  17. int errno;
  18.  
  19. double UeberlappIntegralTrapez(f1,f2,a,b,n)
  20. double (*f1)();
  21. double (*f2)();
  22. double a,b;
  23. int n;
  24. {
  25.   double integ, step, aktx;
  26.   int i;
  27.  
  28.   step = (b-a)/n;
  29.   integ = 0.0;
  30.   for( i = 0, aktx = a + step; i < (n-1); i++, aktx += step){
  31.     integ += 2.0*((*f1)(aktx))*((*f2)(aktx));
  32.   }
  33.   integ += ((*f1)(a))*((*f2)(a));
  34.   integ += ((*f1)(b))*((*f2)(b));
  35.   integ *= (step/2.0);
  36.   return(integ);
  37.   }
  38.  
  39.  
  40.  
  41.  
  42. double MyF(x)
  43. double x;
  44. {
  45.   return(2.0*x);
  46. }
  47.  
  48. double ZweiS(r)
  49.   double r;
  50. {
  51.   return(exp(-r)*r);
  52. }
  53.  
  54.  
  55. double (* fvek[FVEKSIZE])();
  56.  
  57. main(){
  58.   int i,j;
  59.  
  60.   fvek[0] = MyF;
  61.   fvek[1] = sin;
  62.   fvek[2] = ZweiS;
  63.  
  64.   for(;;){
  65.     /* Zeile loeschen */
  66.     for(j = 0; j < FVEKSIZE; j++) Nachricht.MatZeile[j] = 0.0;
  67.  
  68.     /* Horchen welche Zeile dran ist */
  69.     net_receive(&i,&j);
  70.     Nachricht.MatZeilenNr = i;
  71.  
  72.     /* Matrixzeile berechnen */
  73.     for (j = 0; j < FVEKSIZE; j++){
  74.       Nachricht.MatZeile[j] = UeberlappIntegralTrapez(fvek[i],fvek[j],0.0,UNEND,INTERVALLE);
  75.     }
  76.     /* Und zuruecksenden */
  77.     net_send(sizeof(Nachricht),&Nachricht,1);
  78.   }
  79. }
  80.