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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.09.2020, 19:37   #1
Igor1997
 
Регистрация: 11.05.2020
Сообщений: 7
По умолчанию нахождение числа пи fortran

здравствуйте! объясните пожалуйста кто может что я делаю не так, не совсем понимаю как решить данную задачу
вычислить Pn для n=3,4,,,,,60. формула есть в программе которую я пыталась написать, сравнить полученные значения с точным значением пи и найти величину ошибки. fortran
Код:
program piArchimed
implicit none
real, allocatable, dimension(:) :: pi

integer :: n, j
print*, " Введите j"
read(*,*) j
allocate (pi(1:j)) 

pi=2.*2.**(1./2.)
do n=3,j

pi=2.**(2.*(1.-sqrt(1.-(pi/2.**n)**2.))**(1./2.))**(1./2.)

end do

print*, pi(1:n)
deallocate(pi)

end program piArchimed
Igor1997 вне форума Ответить с цитированием
Старый 13.09.2020, 22:02   #2
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

Было бы правильным привести саму формулу, поскольку тогда можно было бы проверить то выражение, которое вы написали для вычисления pi.
Мои поиски формулы, подобной вашей, к успеху не привели.
Уж больно много подобных формул в сети.
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 14.09.2020, 12:27   #3
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,550
По умолчанию

Со дня гибели Архимеда прошло более 2 тыс. лет, а тема сисек числа Пи так и не не раскрыта.
Прежде всего неясно, что понимали задатчики задания под n ? Если число итераций, то уже где-то при 20, не говоря уже за 60, вычисления улетают в бесконечные дали, недоступные компу. Если число сторон, то интересно узнать - как они определили длину стороны хотя бы вписанного треугольника - самое начало? Можно, конечно, через синус, но этому синусу в качестве аргумента подавай... 2 * pi / n Замкнутый круг...
В общем, пошлём мы преподов на число пи и обратимся непосредственно к Архимеду. Возьмём 6-угольник, вписанный в окружность радиусом 1. Найдём длину стороны последующего многоугольника - 12-угольника . Тут 2 раза применим другого грека, Пифагора. И так до достижения нужного результата.
Принцип решения ясен из рис. 1 и приведённого кода (на Лазарусе, бо на Фортране я не писал со времён БЭМС-6), результат - на рис. 2
Код:
procedure TForm1.Button1Click(Sender: TObject);
const pi = 3.14159265358979323846264338328 ;
var iter : integer;
  n,ab,ac,cd,ad,od,pinew: double ;
begin
  Memo1.Clear; ;
  n := 3.0; ab := 1.0 ;
  Memo1.Lines.Add('Иттер. Стор.         Пи            Дельта');
  for iter := 1 to 60 do
    begin
      ad := ab/2.0 ;
      od := sqrt (1-ad*ad) ;
      cd := 1 - od ;
      ac := sqrt(ad*ad+cd*cd) ;
      n := n + n ;
      pinew := ac * n ;
      ab := ac ;
      Memo1.Lines.Add( Format('%2d   %6.1f    %12.9f    %12.9f',[iter, n, pinew, pinew-pi]));
      if n>60 then Break ;
    end;
end;
PS К слову сказать, вычисление Пи - это была моя первая в жизни программа, на БЭСМ-6, Алгол-60. Понта ради я провёл его для двух начальных значений: шестиугольника и двуугольника. А чего удивительного: признаки правильного многоугольника соблюдены, все (2) стороны равны, углы (0 град.) равны, сумма внутренних углов
180 * (n-2) = 180 * 0 = 0. Всё получилось, расчёт пи прошёл как миленький.


PS Есть ещё один способ вычисления пи. Он открыт намного позже Архимеда, но уже при советской власти.
Известно, что при Брежневе 0,5 "Московской Особой" стоило 2,87р, а чекушка - 1,59. Так вот, 1,59 ^ 2,87 давало число пи с несовпадением только в 4-м знаке после запятой.
Изображения
Тип файла: jpg Pi.JPG (5.3 Кб, 6 просмотров)
Тип файла: jpg PiR.jpg (36.5 Кб, 6 просмотров)

Последний раз редактировалось digitalis; 14.09.2020 в 16:05.
digitalis вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание FORTRAN dll (Compaq visual fortran) для BorlandDelphi Melfa Помощь студентам 25 13.04.2012 23:49
Нахождение тангенса числа Alexsandr Общие вопросы C/C++ 6 06.12.2011 19:52
Нахождение числа pi Mixasik Общие вопросы C/C++ 5 30.11.2011 23:25