Математическая формула в С++

136
28 октября 2019, 14:00

Стоит задача

Создать приложение с помощью которого можно для ряда, члены которого вычисляются по формуле подсчитать сумму членов ряда с точностью до 0,000001 и сумму первых 10 членов ряда.

Вот сама формула:

Написал такой код:

int n = 1;
        double a = 1, sum = 0.0, eps = 0.000001, sum_of_10 = 0;
        while (fabs(a) > 0.000001) {
            a = pow(-1, n)*((double)(2 * (n + 1)) / (2 + (n+1) * (n-1)));
            sum += a;
            if (n == 10)
                sum_of_10 = sum;
            n++;
        }
        textBox1->Text = sum_of_10.ToString();

Когда нажимаю на кнопку на форме чтобы это всё посчитало то форму фризит и она зависает

Что я сделал не так?

Answer 1

Прикиньте - у вас нужно порядка миллиона членов. Так? А чему будет равно (n+1) * (n-1) при этом? В double преобразование вы делаете позже... Вот ваши 1012 никак и не хотят в int влезть... Соответственно, a не хочет становиться малым - вот и имеем то, что имеем - бесконечный цикл.

Сделайте хотя бы так:

int n = 1;
double a = 1, sum = 0.0, eps = 0.000001, sum_of_10 = 0.0, sign = 1;
while (fabs(a) > eps)
{
    sum += (a = (sign *= -1)*(2.0*(n + 1))/(1.0+double(n)*n));
    if (n == 10) sum_of_10 = sum;
    n++;
}

Я только учусь и как проводить отладку совсем не знаю

Ну хотя бы выводить промежуточные результаты можете? Скажем, для каждого тысячного n вывести an и посмотреть, что получается?

И еще - такие медленно сходящиеся ряды лучше считать с конца, начиная с мелких значений слагаемых - так точность будет более высокой. Для вашего примера и вашей точности это не так важно, но приобретать хорошие манеры :) имеет смысл с самого начала.

READ ALSO
Socket Android Java

Socket Android Java

Пишу серверное приложениеУ меня сервер написан на java а клиент android приложение

127
Сумирование значений в postgresql

Сумирование значений в postgresql

Хочу просумировать значения в JPA таким образом:

129
Парсинг строки arduino

Парсинг строки arduino

Передаю строку из андроид приложения

138
Парсинг файла с помощью Stream API

Парсинг файла с помощью Stream API

Подскажите как такое можно сделать с помощью стримов? Я в них новичок, может хотябы с помощью каких метов можно сделатьБуду рад любой помощи!

139