Форум программистов, компьютерный форум, киберфорум
C++/CLI Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 10.01.2015
Сообщений: 37

Вычисление суммы гармонического ряда при n 1-10 млн

17.09.2017, 12:41. Показов 651. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте уважаемые форумчане.
Есть задание: "Дан Гармонический ряд 1 + 1/2 + 1/3 + 1/4 + ... + 1/n. Получить сумму членов гармонического ряда, в разной последовательности, по убыванию и по возрастанию его членов. Также дано, что при вычислении суммы членов ряда с обычной точностью (тип Float) разность порядков между первым и последним членом ряда, при которой происходит нарушение ассоциативного закона, составляет 6-7 единиц, т.е. n должно быть равно от 1 до 10 миллионов. При суммировании с двойной точностью (тип double), результат не должен зависеть от порядка суммирования, т.к. ассоциативный закон еще не нарушается".
Написал следующий код, но сумма членов ряда при вычислении по возрастанию и убыванию различаются не только во float, но и в double. Никак не могу понять, в чем причина, почему существует разница в 6 знаков при использовании Double? Результат вычисления в примере задания, (тип double), при n = 5000000, не зависимо от порядка суммирования равен 16.0021643008974. У меня же, при подсчете от 1 до N, (в double), получается 16.0021642352986, а при подсчете от N до 1: 16.0021642353001. Видимо, я что-то делаю не так или не понимаю. Заранее благодарен за помощь!
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
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
                 
                 int n;
                double sumD, sumD_ = { 0. };
                 float sumF, sumF_ = { 0.f };
    
   n= System::Convert::ToInt64(textBox1 -> Text);
   if (n > 0)
   {
       for (int i=1, j = n; i <= n, j >0; i++, j--)
    {
       sumD +=(1. / (double)i);
       sumF += float(1.f / (float)i);
       sumD_ +=(1. / (double)j);
       sumF_ += (1.f / (float)j);
       
    }
       //sumD_ = System::Math::Log((double)n) + 0.5772;
        this->label6->Text =L"Значение Double, при посчете от 1 до n : "+ sumD.ToString();
        this->label7->Text = L"Значение Float, при посчете от 1 до n : " + sumF.ToString();
        this->label8->Text = L"Значение Double, при посчете от n до 1 : " + sumD_.ToString();
        this->label9->Text = L"Значение Float, при посчете от n до 1 : " + sumF_.ToString();
    }
    else
    {
        MessageBox::Show(this, L" Число n меньше или равно 0", L"Ошибка!");
    }
             }
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.09.2017, 12:41
Ответы с готовыми решениями:

Вычисление суммы гармонического ряда
Ну могу найти ошибку в коде. Задание(Вариант 20): S = 1 - (sin(x))/sqrt(2) - (sin(2x))/sqrt(3) + (sin(3x))/sqrt(4) ... x...

Расчет суммы гармонического ряда
Добрый день помогите пожалуйста с такой программой.. никак не могу понять как и что делать.. вот задание: Ряд гармоник первого порядка -...

Вычисление суммы членов ряда с точностью до члена ряда, меньшего ε
Составить программу для вычисления суммы членов ряда с точностью до члена ряда, меньшего ε( по абсолютной величине). Первоначально...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.09.2017, 12:41
Помогаю со студенческими работами здесь

По формуле члена ряда с номером k . Вычисление суммы всех членов ряда
По заданной формуле (k+2)/(k³+4) члена ряда с номером k составить программу вычисления суммы всех членов ряда, не меньших заданного числа E.

Вычисление суммы членов бесконечного ряда с точностью до члена ряда, меньшего ε
Доброе утро, форум. Если кому не сложно, то помогите с программой, вернее найти ошибку в ней Само задание : &quot;Составить...

Цикл: вычисление суммы членов бесконечного ряда с точностью до члена ряда, меньшего ε
Добрый вечер, помогите пожалуйста: Составить программу для вычисления суммы членов бесконечного ряда с точностью до члена ряда,...

Вычисление суммы ряда с заданным числом членов ряда
Разработать алгоритм и программу на языке ASSEMBLER для вычисления суммы с заданным числом N членов ряда (цикл – LOOP)

Вычисление частичной суммы ряда (для n членов ряда)
Напишите пожалуйста метод вычисления частичной суммы ряда. Необходимо узнать последовательность действий не для особого примера, а в целом...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru