How can I get more than 49 digits of pi in a string?

16 vues (au cours des 30 derniers jours)
2quack
2quack le 25 Déc 2019
Modifié(e) : Adam Danz le 6 Oct 2021
nums = num2str(pi,x);
Returns only 49 digits when x is greater than 49. How can I get it to return more digits?
  1 commentaire
Adam Danz
Adam Danz le 6 Oct 2021
nums = num2str(pi,50)
nums = '3.141592653589793115997963468544185161590576171875'
Note that digits after the 15th decimal point are incorrect due to precision limits.
3.141592653589793115997963468544185161590576171875
Correct representation of pi to 50 dp:
3.14159265358979323846264338327950288419716939937510

Connectez-vous pour commenter.

Réponse acceptée

John D'Errico
John D'Errico le 25 Déc 2019
Modifié(e) : John D'Errico le 25 Déc 2019
You could always download my HPF toolbox from the file exchange. It will provide 500100 digits of pi.
P = hpf('pi',500000);
cp = disp(P);
numel(cp)
ans =
500001
cp(1:1001)
ans =
'3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701938521105559644622948954930381964428810975665933446128475648233786783165271201909145648566923460348610454326648213393607260249141273724587006606315588174881520920962829254091715364367892590360011330530548820466521384146951941511609433057270365759591953092186117381932611793105118548074462379962749567351885752724891227938183011949129833673362440656643086021394946395224737190702179860943702770539217176293176752384674818467669405132000568127145263560827785771342757789609173637178721468440901224953430146549585371050792279689258923542019956112129021960864034418159813629774771309960518707211349999998372978049951059731732816096318595024459455346908302642522308253344685035261931188171010003137838752886587533208381420617177669147303598253490428755468731159562863882353787593751957781857780532171226806613001927876611195909216420198'
So 1000 digits of pi, plus a decimal point.
As I recall, I even computed those digits using HPF itself just to test the tool, and verify it was working correctly. I'm not sure which series I used, but there are many good ones out there if you look carefully. You do need to be working with a tool that can handle high precision arithmetic. A double will not suffice.
Be careful with the last digit reported to make sure it was not rounded. For example, if you do this:
vpa(sym('pi'),1000)
the last 10 digits reported are ...9216420199
However, the true digits of pi in that vicinity run as: ...9216420198938095...
So the last digit reported by vpa is actually rounded up to a 9.

Plus de réponses (2)

David Goodmanson
David Goodmanson le 25 Déc 2019
Modifié(e) : David Goodmanson le 26 Déc 2019
Hi India,
vpa(pi,100) for example (although you need the symbolic toolbox for vpa)
And see Walter's comment below. The answer here is all right, but only by luck.
  3 commentaires
Walter Roberson
Walter Roberson le 31 Mai 2021
These days, Mathworks decided that sym('pi') should be a variable named pi and not Pi itself, so you are expected to count on sym(pi) being recognized as pi :(
Adam Danz
Adam Danz le 6 Oct 2021
Modifié(e) : Adam Danz le 6 Oct 2021
digits(10000);
s=char(vpa(pi));

Connectez-vous pour commenter.


David Hill
David Hill le 25 Déc 2019
Modifié(e) : David Hill le 25 Déc 2019
You could just make your own symbolic Pi.
digits 1000;
Pi=sym('3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989');

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by