Approximating Pi by Using Ramanujan's Formula

11 visualizaciones (últimos 30 días)
Peter Wang
Peter Wang el 1 de Sept. de 2020
Editada: Bruno Luong el 1 de Sept. de 2020
Hi. This is my first post so please let me know if I violate any kind of rules. Thank you in advance.
I intend to approximate pi by summing a specified number of terms (k). The output I got was nowhere near what I wanted. Could someone help me please?
Here is the equation I'm using:
And there is the code:
k = input('Number of terms: ');
pi2 = sum(factorial([1:k]*4).*(1103+26390*[1:k]));
pi2 = pi2/((factorial([1:k])^4)*396^(4*[1:k]));
pi2 = (pi2*(2*sqrt(2)/9801))^(-1);
fprintf('Method: %.20f\n', pi2);
  5 comentarios
Walter Roberson
Walter Roberson el 1 de Sept. de 2020
Beyond 21 you should probably be using the Symbolic Toolbox
Bruno Luong
Bruno Luong el 1 de Sept. de 2020
Editada: Bruno Luong el 1 de Sept. de 2020
You already get inexact result even for one term since the division in double is inexact. As long as D and N is finite the calculation is OK (and inexact anyway for partial sum).
Actually the result doesn't change after N=2 and it's already equal to 1/pi at 15 digits !!!
>> N=1:42;
>> Ramanujan=@(N)(2*sqrt(2)/9801)*sum((factorial(4*(0:N)).*(1103+26390*(0:N))./((factorial(0:N).^4).*(396.^(4*(0:N))))));
>> A=arrayfun(Ramanujan, N); % only the last term is NaN
>> A==1/pi
ans =
1×42 logical array
Columns 1 through 26
0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
Columns 27 through 42
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0

Iniciar sesión para comentar.

Respuesta aceptada

Stephen23
Stephen23 el 1 de Sept. de 2020
>> k = 5;
>> V = 0:k;
>> N = factorial(4.*V).*(1103+26390.*V);
>> D = (factorial(V).^4).*(396.^(4.*V));
>> (2*sqrt(2)/9801)*sum(N./D)
ans = 3.183098861837907e-01
>> 1./pi
ans = 3.183098861837907e-01

Más respuestas (0)

Categorías

Más información sobre Biological and Health Sciences en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by