# How to input pi

6,058 views (last 30 days)

Show older comments

How can i enter pi into an equation on matlab?

##### 2 Comments

Walter Roberson
on 16 Dec 2022

### Accepted Answer

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)

### More Answers (3)

Walter Roberson
on 20 Oct 2018

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

##### 3 Comments

Steven Lord
on 22 Oct 2021

That's correct. There are four different conversion techniques the sym function uses to determine how to convert a number into a symbolic expression. The default is the 'r' flag which as the documentation states "converts floating-point numbers obtained by evaluating expressions of the form p/q, p*pi/q, sqrt(p), 2^q, and 10^q (for modest sized integers p and q) to the corresponding symbolic form."

The value returned by the pi function is "close enough" to p*pi/q (with p and q both equal to 1) for that conversion technique to recognize it as π. If you wanted the numeric value of the symbolic π to some number of decimal places use vpa.

p = sym(pi)

vpa(p, 30)

Essam Aljahmi
on 31 May 2018

Edited: Walter Roberson
on 31 May 2018

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

##### 5 Comments

John D'Errico
on 28 Nov 2018

Edited: 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.

Dmitry Volkov
on 16 Dec 2022

Easy way:

format long

p = pi

##### 1 Comment

Walter Roberson
on 16 Dec 2022

### See Also

### Categories

### Community Treasure Hunt

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

Start Hunting!