freesky

task_sem2_4.1

Nov 3rd, 2012
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.73 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <math.h>
  3.  
  4. double t_4[4][2];
  5. double t_6[6][2];
  6. double t_11[11][2];
  7. double t_16[16][2];
  8. double t_21[21][2];
  9.  
  10. double p(double x, double t[][2], int n) {
  11.     double s = 0.0;
  12.  
  13.     for (int k = 0; k <= n; k++) {
  14.         double m = t[k][1];
  15.         for (int j = 0; j <= n; j++)
  16.             if (j != k)
  17.                 m *= ((x - t[j][0]) / (t[k][0] - t[j][0]));
  18.         s += m;
  19.     }
  20.  
  21.     return s;
  22. }
  23.  
  24. int main(int argc, char *argv[]) {
  25.     extern double t_4[4][2];
  26.     extern double t_6[6][2];
  27.     extern double t_11[11][2];
  28.     extern double t_16[16][2];
  29.     extern double t_21[21][2];
  30.  
  31.     // populate our tables
  32.     for (int i = 0; i < 4; i++) {
  33.         t_4[i][0] = i / 3.0;
  34.         t_4[i][1] = sqrt(t_4[i][0]);
  35.     }
  36.    
  37.     for (int i = 0; i < 6; i++) {
  38.         t_6[i][0] = i / 5.0;
  39.         t_6[i][1] = sqrt(t_6[i][0]);
  40.     }
  41.  
  42.     for (int i = 0; i < 11; i++) {
  43.         t_11[i][0] = i / 10.0;
  44.         t_11[i][1] = sqrt(t_11[i][0]);
  45.     }
  46.    
  47.     for (int i = 0; i < 16; i++) {
  48.         t_16[i][0] = i / 15.0;
  49.         t_16[i][1] = sqrt(t_16[i][0]);
  50.     }
  51.    
  52.     for (int i = 0; i < 21; i++) {
  53.         t_21[i][0] = i / 20.0;
  54.         t_21[i][1] = sqrt(t_21[i][0]);
  55.     }
  56.  
  57.     FILE *f;
  58.    
  59.     f = fopen("p_3.dat", "w");
  60.     for (double x = 0.0; x <= 1.0; x += 0.01) {
  61.         printf("x = %g; P_3(x) = %e; sqrt(x) = %e; r(x) = %e\n", x, p(x, t_4, 3), sqrt(x), sqrt(x) - p(x, t_4, 3));
  62.         fprintf(f, "%e\t%e\n", x, sqrt(x) - p(x, t_4, 3));
  63.     }
  64.     fclose(f);
  65.     getchar();
  66.  
  67.     f = fopen("p_5.dat", "w");
  68.     for (double x = 0.0; x <= 1.0; x += 0.01) {
  69.         printf("x = %g; P_5(x) = %e; sqrt(x) = %e; r(x) = %e\n", x, p(x, t_6, 5), sqrt(x), sqrt(x) - p(x, t_6, 5));
  70.         fprintf(f, "%e\t%e\n", x, sqrt(x) - p(x, t_6, 5));
  71.     }
  72.     fclose(f);
  73.     getchar();
  74.  
  75.  
  76.     f = fopen("p_10.dat", "w");
  77.     for (double x = 0.0; x <= 1.0; x += 0.01) {
  78.         printf("x = %g; P_10(x) = %e; sqrt(x) = %e; r(x) = %e\n", x, p(x, t_11, 10), sqrt(x), sqrt(x) - p(x, t_11, 10));
  79.         fprintf(f, "%e\t%e\n", x, sqrt(x) - p(x, t_11, 10));
  80.     }
  81.     fclose(f);
  82.     getchar();
  83.  
  84.     f = fopen("p_15.dat", "w");
  85.     for (double x = 0.0; x <= 1.0; x += 0.01) {
  86.         printf("x = %g; P_15(x) = %e; sqrt(x) = %e; r(x) = %e\n", x, p(x, t_16, 15), sqrt(x), sqrt(x) - p(x, t_16, 15));
  87.         fprintf(f, "%e\t%e\n", x, sqrt(x) - p(x, t_16, 15));
  88.     }
  89.     fclose(f);
  90.     getchar();
  91.  
  92.     f = fopen("p_20.dat", "w");
  93.     for (double x = 0.0; x <= 1.0; x += 0.01) {
  94.         printf("x = %g; P_20(x) = %e; sqrt(x) = %e; r(x) = %e\n", x, p(x, t_21, 20), sqrt(x), sqrt(x) - p(x, t_21, 20));
  95.         fprintf(f, "%e\t%e\n", x, sqrt(x) - p(x, t_21, 20));
  96.     }
  97.     fclose(f);
  98.  
  99.     return 0;
  100. }
Advertisement
Add Comment
Please, Sign In to add comment