Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
zer0mail
2334 / 1960 / 192
Регистрация: 03.07.2012
Сообщений: 7,029
Записей в блоге: 1
#1

Чему равна сумма 10^10 членов гармонического ряда? - C++

17.08.2014, 00:28. Просмотров 1288. Ответов 33
Метки нет (Все метки)

С точностью 12 знаков после запятой. Сколько времени считается, на каком оборудовании?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.08.2014, 00:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Чему равна сумма 10^10 членов гармонического ряда? (C++):

Чему равна минимальная сумма первых членов последовательности, превышающая некоторое заданное число R - C++
Помогите решить! Дана последовательность 1/2, 1/3, 1/4, … . Чему равна минимальная сумма первых членов последовательности, превышающая...

Найти сумму первых N членов гармонического ряда - C++
Написать программу, которая вычисляет ряд такого вида: 1+ 1/2+1/3+1/4+… от одного до N. N задается пользователем. На каждый вопрос...

Написать программу: сумма гармонического ряда - C++
Дано число A (> 1). Вывести наибольшее из целых чисел K, для которых сумма 1 + 1/2 + … + 1/K будет меньше A, и саму эту сумму. В С++...

Чему равна сумма цифр числа n. - C++
Чему равна сумма цифр числа n. Параметр n задать при опросе. помогите пожалуйста...

Чему равна сумма значений переменных - C++
Чему равна сумма значений переменных a, b, c после выполнения фрагмента программы bool f1, f2; int a, b, c, d; f1 = true; f2 =...

Сколько цифр в числе и чему равна их сумма? - C++
дано натуральное число n(n<=100) a) Сколько цифр в числе n? б) Чему равно сумма его чисел? в) Найти последнюю цифру г) первую...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Andrej
И целого heap'а мало
94 / 55 / 9
Регистрация: 31.07.2014
Сообщений: 291
17.08.2014, 01:10 #2
В матане не очень смыслю и может так быть, местные гуру поправят. Но если считать сумму ряда с определённой точностью, то берётся какая-то эпсилон (мера сравнения) и по мере суммирования сравниваем её с приростом, дельтой. Как только дельта оказалась меньше эпсилон, посчитали. При чём тут количество членов ряда (если, конечно, тупо не сложить данное число членов)?
Либо по точности, либо по количеству.
Цитата Сообщение от zer0mail Посмотреть сообщение
Сколько времени считается
1. берёте ряд
2. кодируете
3. засекаете время
Зависит от ряда и от техники. Ну вот на парах считали похожее на ноуте пару минут с низкой точностью - порядка 10 знаков.
0
zer0mail
2334 / 1960 / 192
Регистрация: 03.07.2012
Сообщений: 7,029
Записей в блоге: 1
17.08.2014, 01:17  [ТС] #3
Видно, что в матане не смыслите

Не надо рассказывать "как" - просто возьми и сделай. Напиши ответ: Сумма равна XXX, времени на расчет затратил YYY, процессор ZZZ.
0
_Ivana
3147 / 1774 / 152
Регистрация: 01.03.2013
Сообщений: 4,976
Записей в блоге: 2
17.08.2014, 01:53 #4
Считал "в лоб" в цикле. Если не ошибся, то 23.603066594997500, 75 секунд, процессор Intel Pentium CPU G850 2.90GHz

Добавлено через 6 минут
zer0mail, а зачем вам это?

Добавлено через 17 минут
UPD посчитал "с конца" - время то же, процессор тот же, сумма другая: 23.603066594888269, отклонение от "прямой" 1.092317347684002e-10, превышает необходимую точность расчета. Я не знаю есть ли среди обеих сумм верная, но я бы "обратной" сумме верил больше
0
gru74ik
Модератор
Эксперт CЭксперт С++
4177 / 1805 / 197
Регистрация: 20.02.2013
Сообщений: 4,943
Записей в блоге: 21
17.08.2014, 02:28 #5
Цитата Сообщение от _Ivana Посмотреть сообщение
Считал "в лоб" в цикле. Если не ошибся, то 23.603066594997500, 75 секунд, процессор Intel Pentium CPU G850 2.90GHz
Да ладно! 10^10 членов - это же 10 000 000 000 (10 миллиардов). У меня миллион вычисляется 2 минуты. А когда ставлю 10 миллионов циклов - вообще ни конца ни края не видно вычислениям.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
 
int main ()
{
    using namespace std;
 
    const long double STOP_LOOP = 1000000.0;
    long double sum = 0.0;
    for (long double k = 1.0; k<STOP_LOOP; ++k)
    {
        sum +=(1.0 / k);
        cout << fixed;
        cout.precision(12);
        cout.setf(ios_base::showpoint);
        cout << sum << endl << endl;
    }
 
    cout << "Finally, sum = " << sum << endl << endl;
 
    return 0;
}
P.S. Конфиг моего компа:
DualCore AMD Athlon 64 X2, 2300 MHz (11.5 x 200) 4400+, Gigabyte GA-MA770-UD3 v2.0, 2048 Мб (DDR2-667 DDR2 SDRAM), NVIDIA GeForce 8600 GTS (256 Мб), ST3750528AS (750 Гб, 7200 RPM, SATA-II).
0
Миниатюры
Чему равна сумма 10^10 членов гармонического ряда?  
_Ivana
3147 / 1774 / 152
Регистрация: 01.03.2013
Сообщений: 4,976
Записей в блоге: 2
17.08.2014, 02:35 #6
пример расчета за 2 секунды - техника дошла...
Я в Матлабе считал, если что
1
gru74ik
Модератор
Эксперт CЭксперт С++
4177 / 1805 / 197
Регистрация: 20.02.2013
Сообщений: 4,943
Записей в блоге: 21
17.08.2014, 02:44 #7
Цитата Сообщение от _Ivana Посмотреть сообщение
Я в Матлабе считал
Ааа... ну тогда понятно. Эх, а я то, со свиным рылом, да в калашный ряд
0
_Ivana
3147 / 1774 / 152
Регистрация: 01.03.2013
Сообщений: 4,976
Записей в блоге: 2
17.08.2014, 02:45 #8
gru74ik,
C
1
long double k
имхо плохо инкрементируется - надо целый тип. И конечно же вы выкинули из цикла все лишнее - вывод промежуточных результатов, например?
ЗЫ не, ну ТС не ограничивал выбор программных средств хотя и в С должен не медленнее посчитаться, надо будет попробовать. а Вольфрам Альфа по ссылке дает за секунду 100500 десятичных знаков ....
0
gru74ik
Модератор
Эксперт CЭксперт С++
4177 / 1805 / 197
Регистрация: 20.02.2013
Сообщений: 4,943
Записей в блоге: 21
17.08.2014, 03:09 #9
Цитата Сообщение от _Ivana Посмотреть сообщение
имхо плохо инкрементируется - надо целый тип
Так получше?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
 
int main ()
{
    const long long STOP_LOOP = 1000000;
    long double sum = 0.0;
    long double k = 1.0;
    for (long long i=1; i<STOP_LOOP; ++i)
    {
        sum += (1.0 / k);
        std::cout << std::fixed;
        std::cout.precision(12);
        std::cout.setf(std::ios_base::showpoint);
        std::cout << i << ".\t\t\t" << sum << std::endl << std::endl;
        k += 1.0;
    }
 
    std::cout << "\nFinally, sum = " << sum << std::endl << std::endl;
 
    return 0;
}
0
MastAKK
145 / 136 / 12
Регистрация: 13.10.2012
Сообщений: 586
Записей в блоге: 1
17.08.2014, 03:16 #10
gru74ik, лучше целый тип, как говорили выше. Просто при делении явно приводите его в double.
0
_Ivana
3147 / 1774 / 152
Регистрация: 01.03.2013
Сообщений: 4,976
Записей в блоге: 2
17.08.2014, 03:17 #11
Ну вы сами по времени должны увидеть, получше или нет. И неужели вы выводите в цикле каждый раз std::cout !?!?! Так у вас и месяца не хватит. Убирайте из цикла все лишнее, я же вам говорил! И потестируйте на миллионе сначала - но с минимальными действиями в цикле
ЗЫ и подскажите как printf long double в строку сделать - я на этом застрял, не могу проверить свой код ))))
1
gru74ik
Модератор
Эксперт CЭксперт С++
4177 / 1805 / 197
Регистрация: 20.02.2013
Сообщений: 4,943
Записей в блоге: 21
17.08.2014, 03:22 #12
На компе сына миллион итераций 5 минут считалось.
Конфиг компа:
Кликните здесь для просмотра всего текста

Центральный процессор QuadCore Intel Core i5-4440, 3100 MHz

Материнская плата MSI B85M-E33 LGA 1150, mATX, Retail

Чипсет системной платы Intel Lynx Point B85, Intel Haswell

Системная память 8120 МБ (DDR3-1333 DDR3 SDRAM)
DIMM1: Corsair Vengeance CMZ8GX3M2A1600C9 4 ГБ DDR3-1333 DDR3 SDRAM
DIMM3: Corsair Vengeance CMZ8GX3M2A1600C9 4 ГБ DDR3-1333 DDR3 SDRAM

Видеокарта 2Gb PCI-E GeForce GTX 760, ASUS [GTX760-DCMOC-2GD5] (GDDR5, 192bit, 2xDVI, HDMI, DisplayPort, PCI-E_3.0) RTL

Монитор Acer AL1916W [19" LCD] (L520912663E1)

Звуковой адаптер nVIDIA HDMI/DP @ nVIDIA GK104 - High Definition Audio Controller

Звуковой адаптер Realtek ALC887 @ Intel Lynx Point PCH - High Definition Audio Controller [C-2]

Дисковый накопитель SSD Smartbuy Ignition 2 SB120GB-IGNT-25SAT3, 120Гб, SATA III

Дисковый накопитель HDD WDC WD10EZEX-00ZF5A0 ATA Device (1000 ГБ, 7200 RPM, SATA-III)

Сетевой адаптер Realtek PCIe GBE Family Controller

Блок питания ATX Zalman 500W (ZM-500GS) APFC, ATX 2.31, 120mm FAN + 4x HDD + 6x SATA, + 2x PCIE 6pin , black, RTL

Охлаждение ЦП Cooler DeepCool GAMMAXX 200

Корпус MiniTower ZALMAN ZM-T2 PLUS, mATX, Чёрный (без блока питания) 270mm VGA. USB3.0, FAN120 LED

Вентилятор Arctic Cooling F12 PWM для ATX корпуса 120x120 (600 - 1350 rpm, 57 CFM, 24.4 dBA, 4 pin, Гидродинамический)

Вентилятор Arctic Cooling F9 PWM для ATX корпуса 92x92 (550 - 1800 rpm, 35 CFM, 23,5dBA, 4pin, Гидродинамический)
0
Миниатюры
Чему равна сумма 10^10 членов гармонического ряда?  
MastAKK
145 / 136 / 12
Регистрация: 13.10.2012
Сообщений: 586
Записей в блоге: 1
17.08.2014, 03:24 #13
gru74ik, так долго считается из-за кучи выводов в консоль.

Добавлено через 50 секунд
_Ivana,
C++
1
printf("%le", a);
Если не ошибаюсь.
1
_Ivana
3147 / 1774 / 152
Регистрация: 01.03.2013
Сообщений: 4,976
Записей в блоге: 2
17.08.2014, 03:26 #14
C++
1
wsprintfW(buf, L"%le", sum);
Выводит букву "e". Если после l идет f, a или другая буква - выводит ее Вот проблема-то, программа работает - результат вывести не могу ))))
0
gru74ik
Модератор
Эксперт CЭксперт С++
4177 / 1805 / 197
Регистрация: 20.02.2013
Сообщений: 4,943
Записей в блоге: 21
17.08.2014, 03:33 #15
Цитата Сообщение от _Ivana Посмотреть сообщение
неужели вы выводите в цикле каждый раз std::cout !?!?! Так у вас и месяца не хватит.
Цитата Сообщение от MastAKK Посмотреть сообщение
gru74ik, так долго считается из-за кучи выводов в консоль.
Всё, дошло. Вот так быстро считает (правда, только 10^9):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
 
int main ()
{
    const long long STOP_LOOP = 1000000000;
    long double sum = 0.0;
 
    for (long long k=0; k<STOP_LOOP; ++k)
        sum += (1.0 / k);
 
    std::cout << std::fixed;
    std::cout.precision(12);
    std::cout.setf(std::ios_base::showpoint);
    std::cout << "\nFinally, sum = " << sum << std::endl << std::endl;
 
    return 0;
}
0
Миниатюры
Чему равна сумма 10^10 членов гармонического ряда?  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.08.2014, 03:33
Привет! Вот еще темы с ответами:

Найти произведение членов пифагорейского триплета, сумма которых равна заданному числу - C++
Здравствуйте! Пожалуйста, помогите. Неизвестный автор пишет программу Специальный триплет Пифагорейский Пифагорейский триплет это...

Определить сколько цифр в заданном натуральном числе, и чему равна сумма его цифр - C++
Дано натуральное число n (n&lt;=100). Определить сколько цифр в числе n, чему равна сумма его цифр.

сумма первыйх членов ряда - C++
Написать программу, которая вычисляет сумму первых п членов ряда: 1, 3, 5, 7 ... Количество суммируемых членов ряда задается во время...

сумма первых N членов ряда - C++
Помогите пожалуйста составить программу, которая вычисляет и выводит на экран сумму первых N членов ряда:1, 1/3, 1/5, 1/7, 1/9... Число N...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
17.08.2014, 03:33
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru