vpa is not outputing enough digits

3 views (last 30 days)
I'm having an error where vpa is only diplaying 5 digits when I need more. The code i have is:
syms x y
dx = 0.05
dx = 0.0500
f(x,y) = x*cos(x) + y
df = diff(f,x) + f*diff(f,y)
a = vpa(df(0,.5)/factorial(2)*dx^2)
a = 
0.001875
Obviosly here it outputs correctly to a = 0.001875, but on my end it outputs a = 0.0019. I've checked digits is set to the default 32 for vpa. The same thing occurs with
vpa(pi)
It outputs 3.1416 and not
vpa(pi)
ans = 
3.1415926535897932384626433832795

Accepted Answer

John D'Errico
John D'Errico on 14 Oct 2021
Edited: John D'Errico on 14 Oct 2021
I think you may have a setting messed up on your computer. For example...
X = sym(3)/32;
vpa(X)
ans =
0.09375
But now, if I try this:
sympref('floatingpointoutput',true);
vpa(X)
ans =
0.0938
Yet I have digits set as 32.
digits
Digits = 32
So you may want to reset sympref, as:
sympref('floatingpointoutput',false);
  1 Comment
Diego Mercado
Diego Mercado on 17 Oct 2021
This was is! Thank you, don't know how that happened but gald its fixed.

Sign in to comment.

More Answers (1)

KSSV
KSSV on 14 Oct 2021
Edited: KSSV on 14 Oct 2021
It seems a is a rational number so there are no digits to display else from zeros. Where as pi is a irrational number, so you have lot of digits to display.
  3 Comments
KSSV
KSSV on 14 Oct 2021
You can specify the number of digits you want in vpa.
vpa(pi,12)
ans = 
3.14159265359
vpa(pi,24)
ans = 
3.14159265358979323846264
Diego Mercado
Diego Mercado on 14 Oct 2021
Edited: Diego Mercado on 14 Oct 2021
Yes, I know that you can do that, but that's not the issue. No matter what number I use, I am always getting 4 digits after the decimal as if I was typing vpa(pi,4), and I've checked with
digits
Digits = 32
to confirm that I have the default setting of 32.

Sign in to comment.

Products


Release

R2021a

Community Treasure Hunt

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

Start Hunting!