Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
2688 / 2260 / 244
Регистрация: 03.07.2012
Сообщений: 8,231
Записей в блоге: 1

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

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

Студворк — интернет-сервис помощи студентам
С точностью 12 знаков после запятой. Сколько времени считается, на каком оборудовании?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.08.2014, 00:28
Ответы с готовыми решениями:

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

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

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

33
И целого heap'а мало
 Аватар для Andrej
96 / 57 / 17
Регистрация: 31.07.2014
Сообщений: 291
17.08.2014, 01:10
В матане не очень смыслю и может так быть, местные гуру поправят. Но если считать сумму ряда с определённой точностью, то берётся какая-то эпсилон (мера сравнения) и по мере суммирования сравниваем её с приростом, дельтой. Как только дельта оказалась меньше эпсилон, посчитали. При чём тут количество членов ряда (если, конечно, тупо не сложить данное число членов)?
Либо по точности, либо по количеству.
Цитата Сообщение от zer0mail Посмотреть сообщение
Сколько времени считается
1. берёте ряд
2. кодируете
3. засекаете время
Зависит от ряда и от техники. Ну вот на парах считали похожее на ноуте пару минут с низкой точностью - порядка 10 знаков.
0
2688 / 2260 / 244
Регистрация: 03.07.2012
Сообщений: 8,231
Записей в блоге: 1
17.08.2014, 01:17  [ТС]
Видно, что в матане не смыслите

Не надо рассказывать "как" - просто возьми и сделай. Напиши ответ: Сумма равна XXX, времени на расчет затратил YYY, процессор ZZZ.
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,984
Записей в блоге: 32
17.08.2014, 01:53
Считал "в лоб" в цикле. Если не ошибся, то 23.603066594997500, 75 секунд, процессор Intel Pentium CPU G850 2.90GHz

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

Добавлено через 17 минут
UPD посчитал "с конца" - время то же, процессор тот же, сумма другая: 23.603066594888269, отклонение от "прямой" 1.092317347684002e-10, превышает необходимую точность расчета. Я не знаю есть ли среди обеих сумм верная, но я бы "обратной" сумме верил больше
0
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
17.08.2014, 02:28
Цитата Сообщение от _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).
Миниатюры
Чему равна сумма 10^10 членов гармонического ряда?  
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,984
Записей в блоге: 32
17.08.2014, 02:35
пример расчета за 2 секунды - техника дошла...
Я в Матлабе считал, если что
1
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
17.08.2014, 02:44
Цитата Сообщение от _Ivana Посмотреть сообщение
Я в Матлабе считал
Ааа... ну тогда понятно. Эх, а я то, со свиным рылом, да в калашный ряд
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,984
Записей в блоге: 32
17.08.2014, 02:45
gru74ik,
C
1
long double k
имхо плохо инкрементируется - надо целый тип. И конечно же вы выкинули из цикла все лишнее - вывод промежуточных результатов, например?
ЗЫ не, ну ТС не ограничивал выбор программных средств хотя и в С должен не медленнее посчитаться, надо будет попробовать. а Вольфрам Альфа по ссылке дает за секунду 100500 десятичных знаков ....
0
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
17.08.2014, 03:09
Цитата Сообщение от _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
148 / 139 / 18
Регистрация: 13.10.2012
Сообщений: 592
17.08.2014, 03:16
gru74ik, лучше целый тип, как говорили выше. Просто при делении явно приводите его в double.
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,984
Записей в блоге: 32
17.08.2014, 03:17
Ну вы сами по времени должны увидеть, получше или нет. И неужели вы выводите в цикле каждый раз std::cout !?!?! Так у вас и месяца не хватит. Убирайте из цикла все лишнее, я же вам говорил! И потестируйте на миллионе сначала - но с минимальными действиями в цикле
ЗЫ и подскажите как printf long double в строку сделать - я на этом застрял, не могу проверить свой код ))))
1
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
17.08.2014, 03:22
На компе сына миллион итераций 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, Гидродинамический)
Миниатюры
Чему равна сумма 10^10 членов гармонического ряда?  
0
 Аватар для MastAKK
148 / 139 / 18
Регистрация: 13.10.2012
Сообщений: 592
17.08.2014, 03:24
gru74ik, так долго считается из-за кучи выводов в консоль.

Добавлено через 50 секунд
_Ivana,
C++
1
printf("%le", a);
Если не ошибаюсь.
1
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,984
Записей в блоге: 32
17.08.2014, 03:26
C++
1
wsprintfW(buf, L"%le", sum);
Выводит букву "e". Если после l идет f, a или другая буква - выводит ее Вот проблема-то, программа работает - результат вывести не могу ))))
0
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
17.08.2014, 03:33
Цитата Сообщение от _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;
}
Миниатюры
Чему равна сумма 10^10 членов гармонического ряда?  
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,984
Записей в блоге: 32
17.08.2014, 03:36
Мне бы ваши сложности А я все не могу победить вывод результата... В описании функции вообще не нашел вывод плавающих чисел....
0
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
17.08.2014, 03:39
Тьфу, ёпрст. Опять с кодом напутал. Вот как надо:
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 = 10000000000;
    long double sum = 0.0;
 
    for (long long k=1; 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
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
17.08.2014, 03:46
Лучший ответ Сообщение было отмечено IrineK как решение

Решение

В асимптотической приближенной формуле Эйлера из Википедии взял всего два члена ряда, и уже достигается требуемая точность:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
/////////////////////////////////////////////////////////////////////////////////////////
// Чему равна сумма 10^10 членов гармоническнго ряда с точностью 12 знаков после запятой.
/////////////////////////////////////////////////////////////////////////////////////////
#include <cmath>
#include <iomanip>
#include <iostream>
/////////////////////////////////////////////////////////////////////////////////////////
void    set_n_th_partial_sum_of_harmonic_series
    (
        double      n,
        double  &   partial_sum
    )
{
    static  const   double  GAMMA   =   0.57721566490153286;
 
    partial_sum                     =       log(n) 
                                        +   GAMMA 
                                        +   1.0 / 2 / n 
                                        -   1.0 / 12 / n / n;
}
/////////////////////////////////////////////////////////////////////////////////////////
int     main()
{
    std::locale::global(std::locale(""));
 
    for(;;)
    {
        double  n   =   0;
        std::cout   <<  "n = ";
        std::cin    >>  n;
 
        double  partial_sum   =   0;
        double  partial_sum_pract   =   0;
        double  precision_theor     =   0;
        double  precision_pract     =   0;
 
        set_n_th_partial_sum_of_harmonic_series
            (
                n,
                partial_sum
            );
 
        std::cout   <<  "Частичная сумма: "
                    <<  std::fixed
                    <<  std::setprecision(20)
                    <<  partial_sum
                    <<  std::endl
                    <<  std::endl;
    }//for
}
1
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
17.08.2014, 03:47
Цитата Сообщение от _Ivana Посмотреть сообщение
Мне бы ваши сложности А я все не могу победить вывод результата... В описании функции вообще не нашел вывод плавающих чисел....
А тебе (давай на ты что ли?) обязательно в винде надо и обязательно на Си ?
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,984
Записей в блоге: 32
17.08.2014, 03:51
Я хотел просто взять свой код тетриса, вставить в него за пару секунд код расчета, запуская его по горячей клавише и вывести результат в поле окна, которое уже есть. Чтобы было по-быстрому Но такой засады с форматированием и выводом я не ожидал!... Хоть на чем, у меня код вывода такой:
C++
1
2
3
    wchar_t buf[50];
    wsprintfW(buf, L"%lf", sum);
    SetWindowTextW(hwndSta3, buf);
если подскажете, как на С++ красиво сделать, будет неплохо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.08.2014, 03:51
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru