Advertisement
Sanlover

Untitled

Nov 3rd, 2020
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.22 KB | None | 0 0
  1. #include <iostream>
  2. #include <Windows.h>
  3. #include <cmath>
  4. using namespace std;
  5.  
  6. int main()
  7. {
  8. SetConsoleOutputCP(1251);
  9. SetConsoleCP(1251);
  10.  
  11. double leftSide, rightSide = 0; // Левая и правая части равенства
  12. double e, x; // Погрешность и x
  13. double eSummary = 0, e10Summary = 0; // Суммы элементов меньше Eps и Eps*10 соответсвено
  14. size_t nE = 0, nE10 = 0; // количество элементов меньше Eps и Eps*10 соответсвено
  15. size_t N; // кол-во элементов
  16.  
  17. // Ввод начальных значений
  18. cout << " Введите начальные параметры:" << endl << " E = ";
  19. cin >> e;
  20. cout << " N = ";
  21. cin >> N;
  22. cout << " X = ";
  23. cin >> x;
  24.  
  25. if (abs(x) >= 1) // Если X не подходит под наше (-R;R), то завершаем работу
  26. {
  27. cout << "Ошибка: X должна лежать в интервале (-1;1)" << endl;
  28. return 0;
  29. }
  30.  
  31. leftSide = asin(x); // Левое значение дано изначально (функция)
  32.  
  33. double denominator = 1, numerator = 1; // знаменатель и числитель нашего n члена
  34. double xScale = x;
  35. size_t nScale = 1;
  36.  
  37. for (size_t i = 0; i < N; i++)
  38. {
  39. double temp = (numerator / denominator) * (xScale / nScale); // Чтобы его сто раз не вычислять
  40.  
  41. // Сразу сравним с E и E*10
  42. if (abs(temp) > e) // Если по модулю наш n-ый член больше E
  43. {
  44. if (abs(temp) > e * 10) // Если по модулю наш n-ый член больше E*10
  45. {
  46. nE10++; // Увеличиваем количество таких элементов
  47. e10Summary += temp; // Суммируем
  48. }
  49. nE++; // Увеличиваем количество таких элементов
  50. eSummary += temp; // Суммируем
  51. }
  52.  
  53. //Добавим к правой стороне n-ый член
  54. rightSide += temp;
  55.  
  56. xScale *= x * x;
  57. nScale += 2;
  58. numerator *= (nScale - 2);
  59. denominator *= (nScale - 1);
  60. }
  61.  
  62. cout << endl << endl << " Результаты: " << endl;
  63. cout << "1) Значение функции 'asin(x)' = " << leftSide << endl;
  64. cout << "2) Сумма (N = " << N << ") слогаемых равна = " << rightSide << endl;
  65. cout << "3) Сумма (" << nE << ") элементов, превышающих по абсолютной величине (E = " << e << ") = " << eSummary << endl;
  66. cout << "4) Сумма (" << nE10 << ") элементов, превышающих по абсолютной величине (E*10 = " << e * 10 << ") = " << e10Summary << endl;
  67. return 0;
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement