R
Rendall
есть задача
"Даны действительные x,e(x!=0, e>0) и целые k,a,n числа. Вычислить с
точностью e сумму и указать количество учтенных слагаемых. Считать, что требуемая точность достигнута, если вычислена сумма нескольких первых слагаемых и очередное слагаемое оказалось по модулю меньше, чем e , - это и все последующие слагаемые можно уже не учитывать. Проверить правильность вычислений на тестовых примерах, используя возможности отладчика, проследить изменение значений слагаемых суммы ряда, выполнив отладку цикла."
есть формула суммы ряда
есть ПОЧТИ правильный код
и есть конечно же проблема, а именно, в цикле числитель (summand) должен делится на 2*k!(факториал), а получается что-то совсем не то, поскольку при проверке 3й и последующие члены ряда определяются неверно. пожалуйста поправьте код и, если не затруднит, напишите еще 1 вариант вычисления этой суммы ряда. заранее спасибо
точностью e сумму и указать количество учтенных слагаемых. Считать, что требуемая точность достигнута, если вычислена сумма нескольких первых слагаемых и очередное слагаемое оказалось по модулю меньше, чем e , - это и все последующие слагаемые можно уже не учитывать. Проверить правильность вычислений на тестовых примерах, используя возможности отладчика, проследить изменение значений слагаемых суммы ряда, выполнив отладку цикла."
есть формула суммы ряда
есть ПОЧТИ правильный код
C++:
// ConsoleApplication1.cpp: определяет точку входа для консольного приложения.
//
#include "stdafx.h"
#include <iostream>
#include <cmath>
#include <clocale>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(0,"Rus");
double x, e;
cout<<"Введите значение аргумента x = ";
cin>>x;
cout<<"Введите значение точности вычисляемой суммы (e>0) e = ";
cin>>e;
//в переменной summa накапливаем сумму ряда
double summa = 0;
//точность E должна быть больше нуля
if (e>0)
{
//вычисляем первое слагаемое ряда
//pow(x, y) - функция возведения в степень, x - основание степени, y -показатель степени
int k = 1;
double summand = pow(x, k*2);
//вычисление суммы ряда
while (summand > e && k <= INT_MAX)
{
cout<<"k = "<<k<<"\t"<<summand<<"\n";
summa += summand;
k++;
summand *= x;
summand /= 2*k; //<<ТУТ ОШИБКА
}
cout<<"Сумма ряда = "<<summa<<"\n";
cout<<"Количество учтенных слагаемых = "<<k-1<<"\n";
}
else
cout<<"Ошибка ввода. Точность больше нуля!\n";
system("pause");
return 0;
}
и есть конечно же проблема, а именно, в цикле числитель (summand) должен делится на 2*k!(факториал), а получается что-то совсем не то, поскольку при проверке 3й и последующие члены ряда определяются неверно. пожалуйста поправьте код и, если не затруднит, напишите еще 1 вариант вычисления этой суммы ряда. заранее спасибо