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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.03.2019, 14:58   #1
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,550
По умолчанию Вычисление числа Pi Валлис или не Валлис

Не помню, где нашел, решил проверить. Работает. Но вот не могу найти название метода. Подскажете ?

Код:
procedure TForm1.FormClick(Sender: TObject);
var i : integer ;
begin
    Memo1.Clear ;  dPi := 3.1415926535897932385 / 4 ; 
    Memo1.Lines.Add(Format('%12.10f',[dpi])) ; i := 0 ;
    pii := 1.0 ; a:=2 ; b := 4 ; c := 3 ; piX := 0.8 ;
      repeat
        pii :=  pii * (a*b)/(c*c) ; dPi := pii - piX ; Inc (i) ;
        Memo1.Lines.Add
          (Format('%3d %6.1f %6.1f %6.1f %12.10f %8.6f',[i,a,b,c,pii,dPi])) ;
        a := b ; b := b + 2 ; c := c + 2 ;
        piX := pii ;
      until (Abs(dPI) < 0.00000001);
    Memo1.Lines.Add(Format('%12.10f %12.10f %12.10f',[pii,piX,dPi])) ;
end;
digitalis вне форума Ответить с цитированием
Старый 09.03.2019, 15:41   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Похоже на формулу Валлиса
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 09.03.2019, 22:05   #3
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,550
По умолчанию

Слегка похожа, но не она. Вот Валлис:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var i: integer ;
begin
   pii := 1 ; piX := 2 ;
   for i := 1 to 1000 do
     begin
       a := 2*i ; b := a-1 ; c := a+1 ;
       pii := pii * a * a / (b * c) ;
       dPi := pii - piX ;
       Memo1.Lines.Add
          (Format('%3d %6.1f %6.1f %6.1f %12.10f %8.6f',[i,a,b,c,pii,dPi])) ;
       if Abs(dPi) < 1E-6 then break ;
       PiX := pii
     end ;
    Memo1.Lines.Add(Format('%12.10f %12.10f %12.10f',[pii*2,piX*2,pii*2/PP])) ;
   
end ;
И та, и другая сходятся медленно и дают, даже сойдясь на 1E-6 (соотношение соседних итераций), очень неточное значение.
"Моя"
443 886,0 888,0 887,0 0,7858405165 -0,000001
3,1433620661 3,1433620661 1,0005632215
Валлиса
627 1254,0 1253,0 1255,0 1,5701706362 0,000001
3,1403412725 3,1403392755 0,9996016730

------------------------------------------
Метод с Пифагоровым удвоением числа строн дает 6-й знак после запятой уже на 9-й итерации.
В общем, плюнем и забудем оба этих лохматых методов.

Последний раз редактировалось digitalis; 09.03.2019 в 22:24.
digitalis вне форума Ответить с цитированием
Старый 09.03.2019, 22:56   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Нет, не слегка, а именно она и есть. Если пару-тройку итераций проследить, то имеем:

Pii=1*(2*4)/(3*3)*(4*6)/(5*5)*(6*8)/(7*7)*...

а это и есть Валлис. Сравни
Изображения
Тип файла: png Безымянный.png (11.6 Кб, 82 просмотров)
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 09.03.2019 в 22:58.
Аватар вне форума Ответить с цитированием
Старый 09.03.2019, 23:48   #5
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,550
По умолчанию

Да, действительно - если по разному группировать, то и циклы получатся разные - там - квадрат в числителе, а там - в знаменателе.
Разобрался, thnks
Но по любому метод хреновый - так, для обчего развития.

Дегустирую халявный коньяк Нико Пиросмани. Я не спец, хрен поймешь - плох он или хорош, но бутылка красивая.
Изображения
Тип файла: jpg walls.JPG (12.8 Кб, 84 просмотров)

Последний раз редактировалось digitalis; 09.03.2019 в 23:51.
digitalis вне форума Ответить с цитированием
Старый 09.03.2019, 23:51   #6
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

У меня вопрос по поводу этой формулы (от Аватара). Вот смотри.

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

В знаменателе средней части у нас стоит произведение двух чисел. В правой части в знаменателях у нас имеются простые числа (3 ,5, 7).

Или здесь уже проведены упрощения?
Вадим Мошев вне форума Ответить с цитированием
Старый 09.03.2019, 23:53   #7
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Цитата:
Сообщение от digitalis Посмотреть сообщение
Дегустирую халявный коньяк Нико Пиросмани. Я не спец, хрен поймешь - плох он или хорош
Да что в коньяке такого? Это же водка крашеная, ИМХО,..
Вадим Мошев вне форума Ответить с цитированием
Старый 09.03.2019, 23:59   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Вадим, 2*2/(1*3) и есть тот квадрат в числителе, и произведение в знаменателе. По другому сгруппировать будет наоборот
Цитата:
Да что в коньяке такого? Это же водка крашеная, ИМХО,..
Много ты понимаешь в водках и коньяках )) Зато бутылка красивая ))
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 10.03.2019 в 00:01.
Аватар вне форума Ответить с цитированием
Старый 10.03.2019, 00:08   #9
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Понятно, там записан окончательный ответ, промежуточные вычисление пропущено...
Вадим Мошев вне форума Ответить с цитированием
Старый 10.03.2019, 01:02   #10
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Цитата:
Сообщение от digitalis Посмотреть сообщение
но бутылка красивая.
Валлис, не Валлис.. Бутылку - в студию!
Black Fregat вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вычисление степеней числа. BAMIIUP Помощь студентам 6 15.06.2015 19:27
Вычисление числа П Sobaka_ru Помощь студентам 6 10.12.2011 13:00
задача вычисление числа 7olia7 Паскаль, Turbo Pascal, PascalABC.NET 3 13.03.2011 20:45
Многопоточное вычисление числа Пи Novasty Помощь студентам 0 07.12.2009 00:49
Вычисление числа пи Maniac.Den Помощь студентам 2 30.11.2009 14:42