@kapysta13

Как вычислить сумму первых N элементов ряда?

int n;   
float x;
 cout <<"Enter n=";
 cin >>n;cout <<"Enter x="; 
cin >>x;
float R = -1 * (2*n-1)*pow(x,n);  
float u=1;
 float suma =u;
for(int i = 2; i < n; i++){
u = u * R / ((2 * i -1)*(2 * i -2));
suma = suma + u;}
cout <<"suma"<<suma <<endl;

Не понимаю, почему неправильно. Поправьте, пожалуйста
  • Вопрос задан
  • 75 просмотров
Решения вопроса 1
wataru
@wataru
Разработчик на С++, гуглер, экс-олимпиадник.
Вам уже дана формула n-го элемента.
В формуле, похоже, опечатка. Должно быть -1 в начале (если подставить n=0).
Но это не особо важно, все равно первые члены ряда считаются отдельно.

Соответственно, можно считать текущий элемент через предыдущий, как вы пытались:
a_k = a_(k-1)*(-x)*(2k+1)/(2k-1)/(2k-1)/(2k-2)

Только она не работает для k=1. Поэтому 2 первых члена ряда надо прибавить руками, а остальное в цикле i=2..n-1

Т.е. R вам не нужен, и в коде должно быть:
u = 1+3*x;
...
  u *= (-x)*(2i+1)/(2i-1)/(2i-1)/(2i-2);
  summa += u;


Да, еще стоит разобрать крайние случаи, если n =0, то надо отдельно вывести 1 (или -1, если мы исправляем опечатку).
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы