Вычисление пи через суммирование рядов в Фортране - PullRequest
0 голосов
/ 19 января 2019

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

Я пишу программу на Фортране для оценки числа Пи путем суммирования рядов:

A = Sum of a_i from i=1 to N

где

pi/4 = 1 - 1/3 + 1/5 - 1/7 + 1/9 - 1/11 + 1/13 ...

Чтобы вычислить число Пи через суммирование рядов, предлагается установить

a_i = (-1)^(i+1)/(2i-1)

. Для этого я написал следующую программу на Фортране -

program cpi
double precision val, pi
integer i
num = 1000
val = 0
do i = 1, num
  val = val + ((-1)**(i+1))/(2*i-1)
end do
pi = val
print *, 'Estimated Value of PI:', pi
end program cpi

Когда я запускаю эту программу, вывод будет

   Estimated Value of PI:   1.0000000000000000     

Я, должно быть, допустил ошибку (вероятно, в /(2*i-1)).Я новичок в Фортране и не знаю, что я сделал не так.

1 Ответ

0 голосов
/ 19 января 2019

Я вижу свою ошибку! Мне нужно выписать 1.d0 and 2.d0 instead of 1 and 2, чтобы расчеты оценивались в двойном формате. Я также забыл умножить pi = val*4.d0. Изменение программы cpi на

program cpi
double precision val, pi, MFLOPS
integer i, T1, T2
num = 1000000
val = 0.d0
call system_clock(T1)       ! get time stamp
do i = 1, num
  val = val + ((-1.d0)**(i+1.d0))/(2.d0*i-1.d0)
end do
call system_clock(T2)       ! get time stamp
MFLOPS = num*2.d0/((T2-T1)*1.d8)     ! compute MFlop/sec rate
pi = val*4.d0
print *, 'Estimated Value of PI:', pi
print *, 'The calculated number of MFLOPS is:', MFLOPS
end program cpi

возвращает

Estimated Value of PI:   3.1415916535897743     
The calculated number of MFLOPS is:   3.0303030303030304E-002

Я также добавил вычисление MFLOPS, чтобы увидеть скорость вычислений.

...