Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/30: Рейтинг темы: голосов - 30, средняя оценка - 4.50
9 / 13 / 3
Регистрация: 18.08.2009
Сообщений: 487

Рассчитать значение п на основании бесконечного ряда

19.02.2010, 08:12. Показов 5935. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У Дейтлов есть задача:
Рассчитайте значение п на основании бесконечного ряда
п 4 4/3 4/5 4/7 4/9 4/11
Напечатайте таблицу, которая покажет, как значение п аппроксимируется одним членом этого ряда, двумя членами, тремя и тд. Сколько членов ряда потребовалось для получения значения 3.14? 3.141? 3.1415? 3.14159?
Это программа должна вывести
п = 4 + 4/3 = 4*(4/3) = 16/3
16/3 * 4/5 = 48/15 и т.д.?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.02.2010, 08:12
Ответы с готовыми решениями:

Рассчитайте значение п на основании бесконечного ряда
Рассчитайте значение п на основании бесконечного ряда 4/1-4/3+4/5-4/7+4/9-4/11... Напечатайте таблицу, которая покажет, как значение п...

Рассчитать значение Pi на основании бесконечного ряда
Помогите, пожалуйста, в консольном приложении написать.. Задание: Рассчитать значение Pi на основании бесконечного ряда Pi =...

Рассчитать сумму бесконечного ряда
Доброго времени суток) Возникла такая проблема... Задача такая - нужно рассчитать сумму бесконечного ряда. y=1-1/2!+1/3!_1/4!..... ...

7
9 / 13 / 3
Регистрация: 18.08.2009
Сообщений: 487
25.02.2010, 08:23  [ТС]
Вот я нашел формулу
1 - 1/3 + 1/5 - 1/7 + 1/9 - 1/11 + ... = П/4

А Дейтлы имеют в виду
4 - 4/3 + 4/5 - 4/7 + 4/9 - 4/11 + ... = П

Я правильно понимаю?

Добавлено через 21 час 29 минут
Написал код
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
#include <iostream>
#include <cmath>
#include<cstring>
#include <iomanip>
using namespace std;
 
int main()
{
   double p = 4;// значение Пи
   int delim = 4;// делимое
   int delit = 3;// делитель
   int chlenR = 1;// член ряда
 
   cout << "PI" << setw(20) << "Chlen" << endl;
   cout << "4" << setw(20) << "4 / 1" << endl;
 
   for (int i = 0; i < 10; i++)
//   while (p != 3.14159)
   {
      if (chlenR % 2 != 0)
      {
         p += delim / delit;
 
         cout << p << setw(20) << delim << " / " << delit << " = " << delim / delit << endl;
 
         delit +=2;
         chlenR++;
      }
      else
      {
         p -= delim / delit;
 
         cout << p << setw(20) << delim << " / " << delit << " = " << delim / delit << endl;
 
         delit +=2;
         chlenR++;
      }
   }
 
   system("pause");
   return 0;
}
Но почему то все члены начиная с 4/5 равны 0. Соответственно, и ПИ не меняется. В чем дело? С типами переменных напутал?
0
 Аватар для kazak
3599 / 2741 / 354
Регистрация: 11.03.2009
Сообщений: 6,298
25.02.2010, 13:16
Цитата Сообщение от fs444 Посмотреть сообщение
C++
1
p += delim / delit;
C++
1
p += delim / (double)delit;
или
C++
1
p += delim / static_cast<double>(delit);
0
9 / 13 / 3
Регистрация: 18.08.2009
Сообщений: 487
25.02.2010, 14:48  [ТС]
Так, деление получилось.

Идем дальше. В задании сказано, что нужно найти количество членов ряда, при которых ПИ будет равно 3.14159.

Я исправил код так:
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
#include <iostream>
#include <cmath>
#include<cstring>
#include <iomanip>
using namespace std;
 
int main()
{
   double p = 0;// значение Пи
   int delim = 4;// делимое
   int delit = 1;// делитель
   int chlenR = 1;// член ряда
 
   cout << "PI" << setw(20) << "Slagaemoe" << endl;
//   cout << "4" << setw(20) << "4 / 1" << endl;
 
//   for (int i = 0; i < 3000; i++)
   while (p != 3.14159)
   {
      if (chlenR % 2 != 0)
      {
         p += delim / (double)delit;
 
         cout << p << setw(20) << delim << " / " << delit << endl;
 
         delit +=2;
         chlenR++;
      }
      else
      {
         p -= delim / (double)delit;
 
         cout << p << setw(20) << delim << " / " << delit << endl;
 
         delit +=2;
         chlenR++;
      }
   }
 
   system("pause");
   return 0;
}
И заметил, что значение ПИ циклично перебирается между несколькими числами, и как оно тогда дойдет до нужной мне 3.14159?
0
125 / 123 / 0
Регистрация: 30.03.2009
Сообщений: 766
25.02.2010, 16:17
вместо
C++
1
while (p != 3.14159)
C++
1
while (fabs(p - 3.14159)>5e-6)
0
 Аватар для System16v
3 / 3 / 1
Регистрация: 19.02.2014
Сообщений: 115
16.03.2015, 15:20
Так, а может пояснить кто,написал код этой программы,программа считает пи,но цикл не завершается все равно,она продолжает считать дальше.Почему так?
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
//---------------------------------------------------------------------------
#include <vcl.h>
#include <iostream>
#include <cstdlib>
#include <math>
#include <iomanip>
 
using namespace std;
 
int main()
{
        double pi=0;
        double x=4;
        int a=1,b=1;
        while(pi!=3.14159)
        {
          if(b%2!=0)
           {
           pi+=x/a;
           a+=2;
           b++;
           }
          else
            {
            pi-=x/a;
            a+=2;
            b++;
            }
         cout << setprecision(5) << fixed  << pi << "   -   " << b <<endl;
        }
        system("pause");
        return 0;
}
3.14159 - получается где-то на 130658 итерации,но программа не завершает цикл. Можно конечно в цикле while просто изменить условие на while(b<=130660) и просто увидеть конец где получается 3.14159,но просто интересно почему так
0
 Аватар для LemonMuffin
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 12
14.12.2016, 17:08
Решал эту задачку, решил себя проверить и наткнулся на тему)

Если кому интересное будет
- "3.14159 - получается где-то на 130658 итерации,но программа не завершает цикл. Можно конечно в цикле while просто изменить условие на while(b<=130660) и просто увидеть конец где получается 3.14159,но просто интересно почему так "

То всё просто, 3.14159 подразумевает конечное число, т.е. что у вас будет 3.14159000000000... и т.д.
В действительности же число Пи бесконечное и оно не соответствует какому-то конкретному числу, в связи с чем цикл продолжается и продолжается. Я останавливал программу изменениями в операторе повторения while (p<3.14159 || p>3.14160)

Т.е. пк не отображает дальнейшие знаки и кажется, что это 3.14159 в действительности соответствует условию.
0
0 / 0 / 0
Регистрация: 11.07.2017
Сообщений: 1
11.07.2017, 21:35
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
#include <iostream>
 
using namespace std;
 
int main()
{
    double k,k1,t,a;
    int i;
    t = -1.0;
    a = 1.0;
    k1 = 0;
    for (i = 1; i <= 130658; i++)
    {
    cout << i <<"\t";
    k = t*(-4/a);
    cout << a <<"\t";
    a = a + 2;
    t = t*(-1);
    k1 = k1 + k;
    cout << k1 <<"\n";
 
    }
 //   cout << i-1 <<"\t";
 //   cout << k1 <<"\n";
 
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.07.2017, 21:35
Помогаю со студенческими работами здесь

Рассчитать сумму бесконечного ряда
1)Составить схему алгоритма, написать и отладить программу в соответствии с вариантом. Рассчитать сумму бесконечного ряда П = 4(1 - 1/3...

Рассчитать сумму бесконечного ряда
помогите решить и если можно то с объяснением

Рассчитать сумму бесконечного ряда
Здравствуйте! Помогите написать код для VBA по следующему заданию. Прикреплю скрин задания и кода. Рассчитать сумму бесконечного ряда...

Рассчитать сумму бесконечного ряда
2) Рассчитать сумму бесконечного ряда с точностью до \varepsilon , где x - \frac{x^3}{3!}+\frac{x^5}{5!}- ...\; ,\; x\in \left( -1;\,...

Рассчитать Пи, как сумму бесконечного ряда
Дана формула: Пи = 4 - 4 / 3 + 4 / 5 - 4 / 7 + 4 / 9 - 4 / 11 ... Правильно ли я понял, что нужно просто делать всё по формуле,...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
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