Approximating Pi by Using Ramanujan's Formula
Mostrar comentarios más antiguos
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
el 1 de Sept. de 2020
You are taking sum of the numerator only, and then dividing by the vector that is the denominator.
Note: you also need to vectorize your code. You are working with vectors derived from 1:k so you need to use vector operations such as .^
Note: as the factorial documentation explains, you will only get an exact result when its input is 21 or less. This means in Ramanujan's Formula the term (4*k)! restricts k to 5 or less. Larger values of k will return inexact values for that factorial (inexact values can be calculated up to 170!).
Peter Wang
el 1 de Sept. de 2020
Editada: Peter Wang
el 1 de Sept. de 2020
Walter Roberson
el 1 de Sept. de 2020
Beyond 21 you should probably be using the Symbolic Toolbox
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
Respuesta aceptada
Más respuestas (0)
Categorías
Más información sobre Biological and Health Sciences en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!