sofiakrakova

мы все

Feb 27th, 2020
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.41 KB | None | 0 0
  1. /*
  2.     Лабораторная работа №1.
  3.     При некоторых x, N, E, определяемых вводом, высчитать для ряда №9:  
  4.     1/(1+x)^3 = 1 - (2*3/(2*x)) + (3*4/(2*x^2)) - (4*5/(2*x^3)) + ... R=1
  5.     а) Сумму N слагаемых данного ряда
  6.     б) Сумму тех слагаемых, которые по абсолютной величине больше E.
  7.     Вычисление второй суммы выполнить для дыух значений Е, отличающихся на порядок, при этом определите количество слагаемых,
  8.     включенных в сумму, вычисляемую для каждого значения Е. Сравните результаты со значением функции,
  9.     для которой данная сумма определяет приближенное значение при х, лежащем в интервале (-R,R), вычисленным с помощью встроенных функций компилятора.
  10.     Выполнена студенткой 2 курса 62 группы Краковой Софьей.
  11. */
  12.  
  13. #include "pch.h"
  14. #include <iostream>
  15. using namespace std;
  16.  
  17. float rsum(float x, int n) // Первая функция rsum, вычисляет значение ряда №9 для заданного вещ. аргумента x с помощью N слагаемых ряда. Имеет 2 параметра и возвращает вещественное значение вычисленной суммы.
  18. {
  19.     float sum = 1;
  20.     int z = -1;
  21.     float a = x;
  22.     for (int i = 2; i <= n; i++)
  23.     {
  24.         sum += z* i * (i + 1) * a/2;
  25.         a *= x;
  26.         z *= -1;
  27.     }
  28.     return sum;
  29. }
  30.  
  31. float rsum(float x, float e, int &count) // Вторая (перегруженная) функция с тем же именем вычисляет по тому же алгоритму значение суммы с заданной точностью eps. Она возвращает в основную функцию не только вычисленное значение суммы, но и количество слагаемых в этой сумме (int &count).
  32. {
  33.     int z = -1;
  34.     float a = x;
  35.     float sum = 1;
  36.     int i = 2;
  37.     while (i * (i + 1) * a / 2 > e) // пока очередное слагаемое по абсолютной величине больше е.
  38.     {
  39.         sum += z * i * (i + 1) * a / 2;
  40.         a *= x;
  41.         z *= -1;
  42.         i++;
  43.         count++;
  44.     }
  45.     return sum;
  46. }
  47.  
  48. int main()
  49. {
  50.     setlocale(0, "");
  51.     int n;
  52.     cout << "Введите n: ";
  53.     cin >> n; // Количество слагаемых.
  54.     cout << "Введите x: ";
  55.     float x;
  56.     cin >> x; // Некоторое вещественное значение х.
  57.     cout << rsum(x, n) << endl;
  58.     cout << "Введите первое значение E: "; // Заданная точность
  59.     float e;
  60.     cin >> e;
  61.     int count = 1;
  62.     cout << rsum(x, e, count) << " Количество слагаемых = ";
  63.     cout << count << endl;
  64.     cout << "Введите второе значение E: ";
  65.     cin >> e;
  66.     count = 1;
  67.     cout << rsum(x, e, count) << " Количество слагаемых = ";
  68.     cout << count << endl;
  69.     cout << 1/pow((1+x),3); // Сравниваем со значением функции, вычисленной с помощью встроенных функций компилятора.
  70.     return 0;
  71. }
Add Comment
Please, Sign In to add comment