Program.cs 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. using System;
  2. namespace Task3
  3. {
  4. class Program
  5. {
  6. static void Main(string[] args)
  7. {
  8. double a = 0;
  9. double b = Math.Round(Math.PI / 3, 5);
  10. int n = 10;
  11. int m = n / 2;
  12. double h = (b - a) / n;
  13. //awd
  14. double[,] arr1 = new double[n+1, 2]; // массив для x и f(x)
  15. //hellpo
  16. arr1[0, 0] = a; // первое значение x
  17. arr1[0, 1] = Math.Round(Math.Sin(2 * a + 1), 6); // первое значение f(x)
  18. for (int i = 1; i < n+1; i++) // Нахождение f(x)
  19. {
  20. arr1[i, 0] = Math.Round(a + h, 6);
  21. arr1[i, 1] = Math.Round(Math.Sin(2 * arr1[i, 0] + 1), 6);
  22. a += h;
  23. }
  24. for (int i = 0; i<n+1; i++) // Вывод массива
  25. {
  26. for (int j = 0; j<2; j++)
  27. {
  28. Console.Write($"{arr1[i, j]}\t");
  29. }
  30. Console.WriteLine();
  31. }
  32. Console.WriteLine("Интеграл:");
  33. double amountA = 0, amountB = 0;
  34. for (int i = 1; i < n;) // Нахождение интеграла
  35. {
  36. amountA += arr1[i, 1];
  37. i+=2;
  38. if (i >= n)
  39. {
  40. for (int j = 2; j<n;)
  41. {
  42. amountB += arr1[j, 1];
  43. j += 2;
  44. }
  45. }
  46. }
  47. double integral = (h*n) / (6 * m) * ((arr1[0, 1] + arr1[n, 1]) + 2 *amountB + 4 * amountA);
  48. integral = Math.Round(integral, 6);
  49. Console.WriteLine(integral);
  50. // ПОВТОРЕНИЕ ДЕЙСТВИЙ, НО N УМНОЖЕН ВДВОЕ
  51. a = 0;
  52. b = Math.Round(Math.PI / 3, 5);
  53. n = 20;
  54. m = n / 2;
  55. h = (b - a) / n;
  56. arr1 = new double[n+1,2];
  57. arr1[0, 0] = a;
  58. arr1[0, 1] = Math.Round(Math.Sin(2 * a + 1), 6);
  59. for (int i = 1; i < n + 1; i++)
  60. {
  61. arr1[i, 0] = Math.Round(a + h, 6);
  62. arr1[i, 1] = Math.Round(Math.Sin(2 * arr1[i, 0] + 1), 6);
  63. a += h;
  64. }
  65. for (int i = 0; i < n + 1; i++)
  66. {
  67. for (int j = 0; j < 2; j++)
  68. {
  69. Console.Write($"{arr1[i, j]}\t");
  70. }
  71. Console.WriteLine();
  72. }
  73. Console.WriteLine("Интеграл:");
  74. amountA = 0;
  75. amountB = 0;
  76. for (int i = 1; i < n;)
  77. {
  78. amountA += arr1[i, 1];
  79. i += 2;
  80. if (i >= n)
  81. {
  82. for (int j = 2; j < n;)
  83. {
  84. amountB += arr1[j, 1];
  85. j += 2;
  86. }
  87. }
  88. }
  89. double integral2 = (h * n) / (6 * m) * ((arr1[0, 1] + arr1[n, 1]) + 2 * amountB + 4 * amountA);
  90. integral2 = Math.Round(integral2, 6);
  91. Console.WriteLine(integral2);
  92. Console.WriteLine("Погрешность: ");
  93. decimal inaccuracy = (decimal)(Math.Abs(integral2 - integral) / 15); // Нахождение погрешности
  94. Console.WriteLine(Math.Round(inaccuracy, 6));
  95. }
  96. }
  97. }