
C/C++
ПОМОГИТЕ С ЗАДАЧЕЙ НА C++
Вычисление бесконечных сумм. Написать программу вычисления суммы n членов ряда согласно условию задачи.


В С++ не силен. На Python по моему так


Валерий Колосов
А... Там еще минус есть... Не заметил. Так что не так это решается
Я предлагаю, чтобы n (количество слагаемых ряда) определял сам компьютер в итерационном процессе. А сам этот ряд - это разложение функции f(x) = x - 1 + cos x по степеням её аргумента.
Тогда в программе можно сделать две функции - вычисляемую при помощи ряда и вычисляемую при помощи библиотеки cmath. После ввода аргумента х на экран выведется вычисленная сумма ряда, количество потребовавшееся для вычисления суммы слагаемых n и абсолютная ошибка в сравнении со значением "истинной" функцией в точке х. Так как этот ряд знакопеременный, то ошибка будет быстро расти с ростом |х|, но для х є [-10;10] она очень маленькая, a n получается не больше тридцати.
#include <iostream>
#include <cmath>
using namespace std; int n;
double F(double x) { return x - 1. + cos(x); }
double f(double x) { double y = - x * x, p = 1.,
s = x, q = 0.; while (fabs(p) > 1e-18) { q += 2.;
p *= y / (q * (q - 1.)); s += p; } n = int(q / 2);
return s; }
int main() { double x, y; for(;;) { cout << "x » ";
cin >> x; y = f(x); cout << f(x) << ' ' << n <<
" terms of series, error = " << y - F(x) << endl; } }
Тогда в программе можно сделать две функции - вычисляемую при помощи ряда и вычисляемую при помощи библиотеки cmath. После ввода аргумента х на экран выведется вычисленная сумма ряда, количество потребовавшееся для вычисления суммы слагаемых n и абсолютная ошибка в сравнении со значением "истинной" функцией в точке х. Так как этот ряд знакопеременный, то ошибка будет быстро расти с ростом |х|, но для х є [-10;10] она очень маленькая, a n получается не больше тридцати.
#include <iostream>
#include <cmath>
using namespace std; int n;
double F(double x) { return x - 1. + cos(x); }
double f(double x) { double y = - x * x, p = 1.,
s = x, q = 0.; while (fabs(p) > 1e-18) { q += 2.;
p *= y / (q * (q - 1.)); s += p; } n = int(q / 2);
return s; }
int main() { double x, y; for(;;) { cout << "x » ";
cin >> x; y = f(x); cout << f(x) << ' ' << n <<
" terms of series, error = " << y - F(x) << endl; } }
double last = 1;
double s = 1;
for (auto i = 2; i <2 *n; i += 2)
{
last *= x * x / (i * (i-1));
last *= -1;
s += last;
}
но не проверял результат
double s = 1;
for (auto i = 2; i <2 *n; i += 2)
{
last *= x * x / (i * (i-1));
last *= -1;
s += last;
}
но не проверял результат
Андрей Cмотриков
а ты проверь :) особенно в нагрузку подумать, что будет при
n = ULLONG_MAX или n = 18 446 744 073 709 551 615
n = ULLONG_MAX или n = 18 446 744 073 709 551 615
Похожие вопросы
- Помогите решить задачу по C++!
- Помогите решить задачу на C++.
- Помогите с задачей по C++
- Помогите решить задачу на C++
- Помогите решить задачу на c++
- Помогите решить задачу на C++
- Помогите с задачей по C++
- Помогите с задачей в C++ пожалуйста. Какое условие правильно написать в Z чтобы выводилось сообщение "error!" ?
- Помогите решить задачу на C++
- Помогите по задачам по c++