Стоит задача
Создать приложение с помощью которого можно для ряда, члены которого вычисляются по формуле подсчитать сумму членов ряда с точностью до 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();
Когда нажимаю на кнопку на форме чтобы это всё посчитало то форму фризит и она зависает
Что я сделал не так?
Прикиньте - у вас нужно порядка миллиона членов. Так? А чему будет равно (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 и посмотреть, что получается?
И еще - такие медленно сходящиеся ряды лучше считать с конца, начиная с мелких значений слагаемых - так точность будет более высокой. Для вашего примера и вашей точности это не так важно, но приобретать хорошие манеры :) имеет смысл с самого начала.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Пишу серверное приложениеУ меня сервер написан на java а клиент android приложение
Подскажите как такое можно сделать с помощью стримов? Я в них новичок, может хотябы с помощью каких метов можно сделатьБуду рад любой помощи!