Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.10.2014, 12:22   #1
egoregor
 
Регистрация: 16.10.2014
Сообщений: 6
По умолчанию Расчёт числа Пи по формуле Уоллиса

Код:
/**********************************************************
Расчёт числа  ПИ = 3.141 по формуле Уоллиса ( 1616 - 1703 )

PI     2^2     4^2     6^2        (2 * n) ^2
--- = ----- * ----- * ----- * ------------------
 2     1*3     3*5     5*7    (2n - 1) * ( 2n + 1)

**********************************************************/
using System;

class __exe {
public static void Main () { Console.Clear();

double Pi = 3.14159265358979323846; // 26433832795;
double PI = PI_WALLES () ;
double pi = pi_walles () ;

Console.WriteLine("{0} {1}" ,Pi ,"= windows calc.exe" );
Console.WriteLine("{0} {1}" ,PI ,"= PI_WALLES       " );
Console.WriteLine("{0} {1}" ,pi ,"= pi_walles       " );

} // Main (end)
/*********************************************************/
public static double PI_WALLES () {
double x = 0;
return (double) (x*4) ; }
/*********************************************************/
public static double pi_walles ( ) {
double n    = 1 ;         // Число  n  из формулы Уоллиса
double pi   = 1 ; 
double lim  = 123456789 ; // Предел для счётчика for()
double chis = 0 ;         // Числитель дроби.   Делимое
double znam = 0 ;         // Знаменатель дроби. Делитель
double r    = 0 ;         // Результат деления дроби

for ( n = 1 ; n <= lim ; n ++ ) {
chis = znam = 0 ;
chis = ( 2*n) ;
znam = ((2*n) - 1) * 
       ((2*n) + 1) ;
chis = chis * chis;
  r  = chis / znam;
  pi = pi * r;                  } // for (end)

return (double) (pi*2); }

} // __exe (end)
/************************** END **************************/

Последний раз редактировалось Stilet; 18.10.2014 в 16:29.
egoregor вне форума Ответить с цитированием
Старый 22.10.2014, 12:34   #2
Shad0wF1rst
Форумчанин
 
Регистрация: 11.01.2013
Сообщений: 149
По умолчанию

А зачем ты 3 раза умножаешь 2 * n когда у тебя уже готовй результат есть в переменной chis. И вообще к чему это программа? Она не работает совсвем, или работает но не так или не компилируется?

И еще просто можно формулу чутка упростить, тем самым сократив количество действий:

Код:
public static double pi_walles ( ) {
int n    = 1 ;         // Число  n  из формулы Уоллиса
double pi   = 1 ; 
double lim  = 123456789 ; // Предел для счётчика for()

for ( ; n <= lim ; n ++ ) pi *= (1 + 1.0/((n*n << 2) - 1));
return (double) (pi*2); }

}
Может это и чушь, но это моя чушь и я ее никому не отдам.

Последний раз редактировалось Shad0wF1rst; 22.10.2014 в 12:45.
Shad0wF1rst вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Расчёт тяги Shouldercannon Общие вопросы Delphi 2 24.02.2014 13:26
С++ Код программы вычисления числа, обратного комплексному числу по формуле Susian Помощь студентам 7 03.12.2013 02:06
Приближённое вычисление определенного интеграла по «формуле прямоугольников» и по «формуле трапеций» Юличк@ Помощь студентам 1 25.04.2012 17:41
Как посчитать факториал числа в формуле? bloodargus Общие вопросы C/C++ 4 09.10.2010 11:27