• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

Задача: Вычисление числа ПИ

  • Автор темы KOPC1886
  • Дата начала
Статус
Закрыто для дальнейших ответов.
K

KOPC1886

Пожалуйста можете помочь с задачей. Напишите программу, которая вычисляет число ПИ с заданной
пользователем точностью. Для вычисления значения числа ПИ воспользуйтесь тем, что значение частичной суммы ряда 1-1/3+1/5-1/7+1/9 ... при суммировании достаточно большого количества членов приближается к значению ПИ/4 . Количество членов равно 502.
 
L

lazybiz

KOPC1886
Я тебе помогу, если ты что-то попытаешься сделать сам. Предлагай свои попытки, иначе тебе просто предложат сделать это за деньги, а в случае отказа тупо проигнорируют... Таковы правила форума.

Добавлено: Есть мысли?
 
B

BashOrgRu

Если не то, и не то:

C++:
#include <stdlib.h>
#include <stdio.h>

int main(){
double Sum=0;
unsigned long long i,n;

printf("n=");
scanf("%I64u",&n);/* для Linux: scanf("%llu",&n);*/
for (i=0;i<n;i++){
Sum+=(1.0/(1.0+2.0*i))*((i%2==0) ? 1:(-1));
}
Sum*=4;
printf("Sum=%lf",Sum);
return 0;
}
 
D

DarkKnight

Вообще ваше кол-во членов 502: Не говорит ни о чем, вовсяком точно не о числе PI (см. скины какая погрешность)
На втором скине я вычислял с точностью 10^-13 честно сказать, задолбался ждать пока посчитает (секунд 40 наверное(это при условии что delit-делитель тогда был int-типа и в нем наступило переполнение, а вот когда он unsigned long - еще считается ;-)), а кол-во итераций там видите насколько разнитца с вашим 502...
Напишите программу, которая вычисляет число ПИ с заданной
пользователем точностью. Для вычисления значения числа ПИ воспользуйтесь тем, что значение частичной суммы ряда 1-1/3+1/5-1/7+1/9 ... при суммировании достаточно большого количества членов приближается к значению ПИ/4 . Количество членов равно 502.
C++:
/*
Напишите программу, которая вычисляет число ПИ с заданной 
пользователем точностью. Для вычисления значения числа ПИ воспользуйтесь тем, что значение частичной суммы ряда 1-1/3+1/5-1/7+1/9 ... 
при суммировании достаточно большого количества членов приближается к значению ПИ/4 . Количество членов равно 502.
*/
/*
codeby.net
Autor: DarkKnight125 (Denis Goncharov)
*/
#include <iostream>
#include <iomanip>
using namespace std;

void main(void)
{
setlocale(LC_ALL,".1251");
double PI = 0.0; //Сюда как раз и будем вычислять PI
int Iterat; //Кол-во членов ряда для вычисления (вариант 1)
double Esp; //Точность вычисления (вариант 2)
unsigned long delit = 1; //Делитель члена ряда
int Variant; //Опция выбора варианта
unsigned long i = 0; //Число итераций

//Ввод варианта вычисления
cout<<"Введите опцию вычисления (1 - кол-во членов ряда, 2 - заданная точность) : ";
cin>>Variant;
if (Variant == 1) //Если вычисляем по сумме членов ряда
{
cout << "Введите заданную точность вычисления (кол-во чл. ряда) :";
cin >> Iterat;
for (i = 0; i< Iterat; i++)
{
if (i %2 == 0)
PI+= (double)4/delit;
else PI-= (double)4/delit;
delit+=2;
}
}
else if (Variant == 2) //Если вычисляем по заданной точности
{
cout << "Введите заданную точность вычисления (0.00000001) : ";
cin >> Esp; //Введем точность
double Ryad = 4; //Текуйщи член ряда
while (Ryad > Esp) //Пока текущий член ряда > нашей заданной точности
{
Ryad = (double)4/delit; //Вычислим член ряда
if (i %2 == 0)
PI+= Ryad;
else PI-= Ryad;
delit+=2;
i++;
}
}

cout<<"Результат : "<<setprecision(15)<< PI << endl;
cout<<"Итераций : "<< i << endl;

}
 

Вложения

  • pitochnost1.jpg
    pitochnost1.jpg
    21,5 КБ · Просмотры: 989
  • pitochnost2.jpg
    pitochnost2.jpg
    21,7 КБ · Просмотры: 819
D

DarkKnight

Прошло минут 40-50 (см. скин 1)
Данные проца (см. ск 2)
 

Вложения

  • PI_.jpg
    PI_.jpg
    61,2 КБ · Просмотры: 857
  • Proc.jpg
    Proc.jpg
    18,6 КБ · Просмотры: 790
D

DarkKnight

Эх, а оно все вычисляет мать ее ;-))
Я уже спать хочу если честно.. ;-)
P.S. Бедные люди которые до 16 знаков в 15ом веке вычисляли число ПИ :)
 

Вложения

  • Pi2.jpg
    Pi2.jpg
    129,7 КБ · Просмотры: 874
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!