Advertisement
Guest User

Untitled

a guest
Dec 17th, 2017
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.38 KB | None | 0 0
  1. #define CRT_SECURE_NO_WARNINGS
  2. #include "stdafx.h"
  3. #include <math.h>
  4. #include <cmath>
  5. #include <omp.h>
  6.  
  7. #define A 8.2
  8. #define B -0.7
  9. #define C 0.64
  10. #define D 0.18
  11.  
  12.  
  13. double F(double x1, double x2)
  14. {
  15. return A*x1 + B*x2 + exp(C*x1*x1 + D*x2*x2);
  16. }
  17.  
  18. int main()
  19. {
  20. double xmax = 5.0, ymax = 5.0;
  21. double h1 = 0.1, h2 = 0.001, x = -xmax, y = -ymax;
  22.  
  23. double min[3];
  24.  
  25. min[0] = F(x, y);
  26. min[1] = x;
  27. min[2] = y;
  28.  
  29. double tn = omp_get_wtime();
  30.  
  31. int nx = (int)((xmax - x) / h1) + 1;
  32. int ny = (int)((ymax - y) / h1) + 1;
  33.  
  34. for (int i = 0; i < nx; i++)
  35. for (int j = 0; j < ny; j++)
  36. if (F(x + i*h1, y + j*h1) < min[0]) {
  37. min[0] = F(x + i*h1, y + j*h1);
  38. min[1] = x + i*h1;
  39. min[2] = y + j*h1;
  40. }
  41.  
  42. x = min[1] - (xmax - x) / 20;
  43. y = min[2] - (ymax - y) / 20;
  44. xmax = abs(x - min[1]) + min[1];
  45. ymax = abs(y - min[2]) + min[2];
  46. if (x < -5.0) x = -5.0;
  47. if (y < -5.0) y = -5.0;
  48. if (xmax > 5.0) xmax = 5.0;
  49. if (ymax > 5.0) ymax = 5.0;
  50.  
  51. nx = (int)((xmax - x) / h2) + 1;
  52. ny = (int)((ymax - y) / h2) + 1;
  53.  
  54. for (int i = 0; i < nx; i++)
  55. for (int j = 0; j < ny; j++)
  56. if (F(x + i*h2, y + j*h2) < min[0]) {
  57. min[0] = F(x + i*h2, y + j*h2);
  58. min[1] = x + i*h2;
  59. min[2] = y + j*h2;
  60. }
  61.  
  62. double tk = omp_get_wtime();
  63.  
  64. FILE *f;
  65. f = fopen("outPosl.txt", "w");
  66. fprintf(f,"%f\nTime %f\n", min[0],tk-tn);
  67. fclose(f);
  68.  
  69. return 0;
  70. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement