Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <Windows.h>
- #include <cmath>
- using namespace std;
- int main()
- {
- SetConsoleOutputCP(1251);
- SetConsoleCP(1251);
- double leftSide, rightSide = 0; // Левая и правая части равенства
- double e, x; // Погрешность и x
- double eSummary = 0, e10Summary = 0; // Суммы элементов меньше Eps и Eps*10 соответсвено
- size_t nE = 0, nE10 = 0; // количество элементов меньше Eps и Eps*10 соответсвено
- size_t N; // кол-во элементов
- // Ввод начальных значений
- cout << " Введите начальные параметры:" << endl << " E = ";
- cin >> e;
- cout << " N = ";
- cin >> N;
- cout << " X = ";
- cin >> x;
- if (abs(x) >= 1) // Если X не подходит под наше (-R;R), то завершаем работу
- {
- cout << "Ошибка: X должна лежать в интервале (-1;1)" << endl;
- return 0;
- }
- leftSide = 1 / sqrt(1 + x); // Левое значение дано изначально (функция)
- double denominator = 1, numerator = 1; // знаменатель и числитель нашего n члена
- size_t factor = 2;
- for (size_t i = 0; i < N; i++)
- {
- double temp = numerator / denominator; // Чтобы его сто раз не вычислять
- // Сразу сравним с E и E*10
- if (abs(temp) > e) // Если по модулю наш n-ый член больше E
- {
- if (abs(temp) > e * 10) // Если по модулю наш n-ый член больше E*10
- {
- nE10++; // Увеличиваем количество таких элементов
- e10Summary += temp; // Суммируем
- }
- nE++; // Увеличиваем количество таких элементов
- eSummary += temp; // Суммируем
- }
- //Добавим к правой стороне n-ый член
- rightSide += temp;
- //Поскольку каждый n элемент отличается от n+1 на константу, просто умножим знаменатель и числитель
- numerator *= (factor - 1) * -x; // Каждый раз повышается степень икса, меняется знак(- пере иксом) и умножается на след.нечётное
- denominator *= factor; // умножается на след. четное
- factor += 2; // Нужен чтобы добавлять нечетные и четные
- }
- cout << endl << endl << " Результаты: " << endl;
- cout << "1) Значение функции '1/sqrt(1+x)' = " << leftSide << endl;
- cout << "2) Сумма (N = " << N << ") слогаемых равна = " << rightSide << endl;
- cout << "3) Сумма (" << nE << ") элементов, превышающих по абсолютной величине (E = " << e << ") = " << eSummary << endl;
- cout << "4) Сумма (" << nE10 << ") элементов, превышающих по абсолютной величине (E*10 = " << e * 10 << ") = " << e10Summary << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement