Advertisement
Guest User

Untitled

a guest
Dec 18th, 2014
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.56 KB | None | 0 0
  1. void form_time(int n, double arr[], int t){
  2.     int i = 0;
  3.     for(i = 0; i < n; i++)
  4.         arr[i] = (double)t / n * i;
  5. }
  6.  
  7. void form_u_in(int n, double arr[], double arr2[]){
  8.     int i = 0;
  9.     for(i = 0; i < n; i++)
  10.         arr[i] = (double)15. * cos(3.141592653 * arr2[i]) + 8. * cos(3. * 3.141592653 * arr2[i] / 2.);
  11. }
  12.  
  13. void form_u_out(int n, double arr[], double arr2[], double u1, double u2, double v1, double v2){
  14.     int i = 0;
  15.     for(i = 0; i < n; i++)
  16.         if(arr2[i] < u1)
  17.             arr[i] = v1;
  18.         else if(arr2[i] < u2)
  19.             arr[i] = (double)(7. *  arr2[i] / 2. - 10.);
  20.         else
  21.             arr[i] = v2;
  22. }
  23.  
  24. void form_tbl(int n, double arr[], double arr2[], double arr3[] ){
  25.     int i = 0;
  26.     printf("№\ttime\tU in\tU out\n");
  27.     for(i = 0; i < n; i++)
  28.         printf("%3d\t%6.3f\t%6.3f\t%6.3f\n", i, arr[i], arr2[i], arr3[i]);
  29. }
  30.  
  31. int find_minimum(int n, double arr[]){
  32.     int i = 0, min_index = 0;
  33.     double min = arr[0];
  34.     for(i = 1; i < n; i++)
  35.         if(arr[i] < min){
  36.             min = arr[i];
  37.             min_index = i;
  38.         }
  39.     return min_index;
  40. }
  41.  
  42. void print_zast(){
  43.     FILE *zast;
  44.     zast = fopen("zast.txt","r");
  45.     char ch;
  46.     while (!feof(zast)){
  47.         fscanf(zast,"%c",&ch);
  48.         printf("%c",ch);
  49.     }
  50.     printf("\n");
  51.     fclose(zast);
  52. }
  53.  
  54.  
  55. void parametr_u_in_min(int t){
  56.     int n = 11, i = 0;
  57.     double p = 1., eps=0.01, par = 10000000000., par1 = 0.;
  58.     while(p > eps){
  59.         double tmp_array_time[n], tmp_array_u_in[n];
  60.         form_time(n, tmp_array_time, t);
  61.         form_u_in(n, tmp_array_u_in, tmp_array_time);
  62.         i = find_minimum(n, tmp_array_u_in);
  63.         par1 = tmp_array_u_in[i];
  64.         p = fabs((par - par1) / par1);
  65.         printf("n=%d (par1)u in=%lf par=%lf t=%lf error=%lf\n", n, par1, par, tmp_array_time[i], p);
  66.         par = par1;
  67.         n = 2 * n;
  68.     }
  69. }
  70.  
  71. void parametr_u_out_min(double u1, double u2, double v1, double v2, int t){
  72.     int n = 11, i = 0;
  73.     double p = 1., eps=0.01, par = 10000000000., par1 = 0.;
  74.     while(p > eps){
  75.         double tmp_array_time[n], tmp_array_u_in[n], tmp_array_u_out[n];
  76.         form_time(n, tmp_array_time, t);
  77.         form_u_in(n, tmp_array_u_in, tmp_array_time);
  78.         form_u_out(n, tmp_array_u_out, tmp_array_u_in, u1, u2, v1, v2);
  79.         i = find_minimum(n, tmp_array_u_out);
  80.         par1 = tmp_array_u_out[i];
  81.         p = fabs((par - par1) / par1);
  82.         printf("n=%d u out=%lf t=%lf error=%lf\n", n, par1, tmp_array_time[i], p);
  83.         par = par1;
  84.         n = 2 * n;
  85.     }
  86. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement