# vpa is not outputing enough digits

3 次查看（过去 30 天）

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

### 采纳的回答

John D'Errico 2021-10-14

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 个评论显示隐藏 无
This was is! Thank you, don't know how that happened but gald its fixed.

### 更多回答（1 个）

KSSV 2021-10-14

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 个评论显示隐藏 2更早的评论
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.

R2021a

### Community Treasure Hunt

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

Start Hunting!