Advertisement
Guest User

Untitled

a guest
Feb 20th, 2020
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.43 KB | None | 0 0
  1. #include <iostream>
  2. #include <iomanip>
  3. #include "quanc8.c"
  4. #include "spline.c"
  5.  
  6. const int N = 7;
  7. double resultArray[N];
  8. double resultArray2[N-1];
  9. double pointArray[N];
  10. const double h = 0.2;
  11. const double A = 1;
  12. const double lowX = 1.5;
  13. const double topX = 2.7;
  14. double EA = 0;
  15. double ER = 0;
  16. double RESULT = 0;
  17. double ERR = 0;
  18. int NOFUN = 0;
  19. double POSNR = 0;
  20. int FLAG = 0;
  21.  
  22. double FUN(double t)
  23. {
  24. return sin(t) * sin(t);
  25. }
  26.  
  27. double lagrange8(double resultArray[N], double pointArray[N], double x)
  28. {
  29. double res = 0;
  30. for (int i = 0; i < N-1; i++)
  31. {
  32. double chislitel = 1;
  33. double znamenatel = 1;
  34. for (int j = 0; j < N-1; j++)
  35. {
  36. if (j != i)
  37. {
  38. chislitel *= x - pointArray[j];
  39. znamenatel *= pointArray[i] - pointArray[j];
  40. }
  41. }
  42. res += (resultArray[i] * chislitel) / znamenatel;
  43. }
  44. return res;
  45. }
  46.  
  47. int main()
  48. {
  49. int j = 0;
  50. for (double i = lowX; i <= topX; i += h)
  51. {
  52. quanc8(*FUN, A, i, EA, ER, &RESULT, &ERR, &NOFUN, &POSNR, &FLAG);
  53. pointArray[j] = i;
  54. resultArray[j++] = RESULT;
  55. std::cout << std::setw(4) << i << " " << RESULT << '\n';
  56. }
  57. std::cout << '\n';
  58.  
  59. int last = 0;
  60. const double x0 = 1.6;
  61.  
  62. for (int k = 0; k <= 5; k++)
  63. {
  64. quanc8(*FUN, A, x0 + h * k, EA, ER, &RESULT, &ERR, &NOFUN, &POSNR, &FLAG);
  65. resultArray2[k] = RESULT;
  66. std::cout << x0 + h * k << " : " << RESULT << '\n';
  67. }
  68. std::cout << '\n';
  69. std::cout << " Lagrange" << " Spline" << '\n';
  70. double b[N];
  71. double c[N];
  72. double d[N];
  73. spline(N, 0, 0, resultArray[0], resultArray[N - 1], pointArray, resultArray, b, c, d, &FLAG);
  74.  
  75. for (int k = 0; k <= 5; k++)
  76. {
  77. quanc8(*FUN, A, x0 + h * k, EA, ER, &RESULT, &ERR, &NOFUN, &POSNR, &FLAG);
  78. resultArray2[k] = RESULT;
  79. }
  80.  
  81. for (int k = 0; k <= 5; k++)
  82. {
  83. double lagrangeResult = lagrange8(resultArray, pointArray, x0 + h * k);
  84. double splineResult = seval(N, x0 + h * k, pointArray, resultArray, b, c, d, &last);
  85. std::cout << "x = " << x0 + h * k << ": " << std::setw(8) << lagrangeResult << " " << std::setw(8) <<splineResult << " | EPS_Lagrange = " << std::setw(8) << resultArray2[k] - lagrangeResult << " EPS_Spline = " << resultArray2[k] - splineResult << '\n';
  86. }
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement