11,736 views (last 30 days)

How can i enter pi into an equation on matlab?

Geoff Hayes
on 20 Sep 2016

Edited: MathWorks Support Team
on 28 Nov 2018

Anthony - use pi which returns the floating-point number nearest the value of π. So in your code, you could do something like

sin(pi)

Essam Aljahmi
on 31 May 2018

Edited: Walter Roberson
on 31 May 2018

28t2e−0.3466tcos(0.6πt+π3)ua(t).

Roger Pou
on 20 Oct 2018

because it is maybe a joke. maybe its the same value as pi but with a long formula.

Image Analyst
on 20 Oct 2018

Attached is code to compute Ramanujan's formula for pi, voted the ugliest formula of all time.

.

Actually I think it's amazing that something analytical that complicated and with a variety of operations (addition, division, multiplication, factorial, square root, exponentiation, and summation) could create something as "simple" as pi.

Unfortunately it seems to get to within MATLAB's precision after just one iteration - I'd have like to see how it converges as afunction of iteration (summation term). (Hint: help would be appreciated.)

John D'Errico
on 28 Nov 2018

As I recall, these approximations tend to give a roughly fixed number of digits per term. I'll do it using HPF, but syms would also work.

DefaultNumberOfDigits 500

n = 10;

piterms = zeros(n+1,1,'hpf');

f = sqrt(hpf(2))*2/9801*hpf(factorial(0));

piterms(1) = f*1103;

hpf396 = hpf(396)^4;

for k = 1:n

hpfk = hpf(k);

f = f*(4*hpfk-3)*(4*hpfk-2)*(4*hpfk-1)*4/(hpfk^3)/hpf396;

piterms(k+1) = f*(1103 + 26390*hpfk);

end

piapprox = 1./cumsum(piterms);

pierror = double(hpf('pi') - piapprox))

pierror =

-7.6424e-08

-6.3954e-16

-5.6824e-24

-5.2389e-32

-4.9442e-40

-4.741e-48

-4.5989e-56

-4.5e-64

-4.4333e-72

-4.3915e-80

-4.3696e-88

So roughly 8 digits per term in this series. Resetting the default number of digits to used to 1000, then n=125, so a total of 126 terms in the series, we can pretty quickly get a 1000 digit approximation to pi:

pierror = hpf('pi') - piapprox(end + [-3:0])

pierror =

HPF array of size: 4 1

|1,1| -1.2060069282720814803655e-982

|2,1| -1.25042729756426e-990

|3,1| -1.296534e-998

|4,1| -8.e-1004

So as you see, it generates a very reliable 8 digits per term in the sum.

piapprox(end)

ans =

3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701938521105559644622948954930381964428810975665933446128475648233786783165271201909145648566923460348610454326648213393607260249141273724587006606315588174881520920962829254091715364367892590360011330530548820466521384146951941511609433057270365759591953092186117381932611793105118548074462379962749567351885752724891227938183011949129833673362440656643086021394946395224737190702179860943702770539217176293176752384674818467669405132000568127145263560827785771342757789609173637178721468440901224953430146549585371050792279689258923542019956112129021960864034418159813629774771309960518707211349999998372978049951059731732816096318595024459455346908302642522308253344685035261931188171010003137838752886587533208381420617177669147303598253490428755468731159562863882353787593751957781857780532171226806613001927876611195909216420199

hpf('pi')

ans =

3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701938521105559644622948954930381964428810975665933446128475648233786783165271201909145648566923460348610454326648213393607260249141273724587006606315588174881520920962829254091715364367892590360011330530548820466521384146951941511609433057270365759591953092186117381932611793105118548074462379962749567351885752724891227938183011949129833673362440656643086021394946395224737190702179860943702770539217176293176752384674818467669405132000568127145263560827785771342757789609173637178721468440901224953430146549585371050792279689258923542019956112129021960864034418159813629774771309960518707211349999998372978049951059731732816096318595024459455346908302642522308253344685035261931188171010003137838752886587533208381420617177669147303598253490428755468731159562863882353787593751957781857780532171226806613001927876611195909216420199

I also ran it for 100000 digits, so 12500 terms. It took a little more time, but was entirely possible to compute. I don't recall which similar approximation I used some time ago, but I once used it to compute 1 million or so digits of pi in HPF. HPF currently stores a half million digits as I recall.

As far as understanding how to derive that series, I would leave that to Ramanujan, and only hope he is listening on on this.

Walter Roberson
on 20 Oct 2018

If you are constructing an equation using the symbolic toolbox use sym('pi')

Opportunities for recent engineering grads.

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

Start Hunting!
## 1 Comment

## Direct link to this comment

https://uk.mathworks.com/matlabcentral/answers/303687-how-to-input-pi#comment_822235

⋮## Direct link to this comment

https://uk.mathworks.com/matlabcentral/answers/303687-how-to-input-pi#comment_822235

Sign in to comment.