@pwN11

Почему программа работает неверно?

Суть задачи : Вычислить бесконечную сумму с заданной точностью e(e>0). Считать что требуемая точность достигнута ,если вычислена сумма нескольких первых слагаемых и очередное слагаемое оказалось по модулю меньше чем e -это и все последующие слагаемые можно не учитывать. Изначально I=1 . Вычислить s=-1^(I+1) / i * (i + 1) * (i + 2). Тут представлен мой набросок в консоли,который работает не верно.
1.
double e,  s=0;
            e= double.Parse(Console.ReadLine());
            for (double i = 1, a = 6; i < a; i++) { s = s + Math.Pow(-1,i + 1) / i * (i + 1) * (i + 2); if (s <= e) { a = 1; } else { a = 100; }; Console.Write(i); };
          
            2.
            Console.Write("s=" + s + "e=" + e); Console.Read();

double i=1, e;
            e= double.Parse(Console.ReadLine());
            while (Math.Pow(-1, i + 1) / i * (i + 1) * (i + 2) >= e)
            { Console.Write(i); i++; };
            Console.Read();
            Console.Read();
  • Вопрос задан
  • 2548 просмотров
Решения вопроса 1
@smozhaykin
double si = 1.0 / 6; // initial value for i = 1
double s = 0;
int i = 2;
double eps = double.Parse(Console.ReadLine());
while (Math.Abs(si) >= eps)
{
    s += si;
    si = -1 * si * (i - 1) / (i + 2);
    i++;
}
Console.WriteLine(s);
Console.ReadLine();
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
Scorpi
@Scorpi
Math.Pow(i + 1, -1) -> Math.Pow(-1, i + 1)
Ответ написан
@Sumor
Вам больше подходит цикл while, нежели for.
По условиям задачи вам нужно сравнивать только i-ый член, ДО его прибавления к s, а вы сравниваете e с s.
Непонятная игра с параметром a запутывает читателя, а также не даёт сумме вычислиться с точность более 100 слагаемых.
Ответ написан
@carbon88
.NET developer/ORM developer
Считать что требуемая точность достигнута ,если вычислена сумма нескольких первых слагаемых и очередное слагаемое оказалось по модулю меньше чем e

Похоже вы забыли про модуль от s когда сравниваете с эпсилон.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы