Displaying (small number)*(syms variable) as 0

6 views (last 30 days)
This is an arbitrary example representing my problem
syms x;
a=0;
b=pi/2;
c=x;
R=[cos(a)*cos(b)*cos(c) sin(a)*sin(b)*sin(c)];
vpa(R)
This outputs:
ans =
[ 6.1e-17*cos(x), 0]
Because pi isn't exact in Matlab, then cos(pi/2) isn't exactly zero as sin(0) is, which leads to the first element in ans to be written as such, and the second element to be written exactly 0;
I've tried "digits" before vpa, "format long", changed format in preferences, but none works.
How can I edit my code such that the first element is displayed as exactly 0?

Accepted Answer

Walter Roberson
Walter Roberson on 15 Feb 2021
syms x;
a=0;
b=sym(pi)/2;
c=x;
R=[cos(a)*cos(b)*cos(c) sin(a)*sin(b)*sin(c)];
vpa(R)
ans = 

More Answers (1)

Steven Lord
Steven Lord on 16 Feb 2021
Another solution, if you know one of the quantities involved is a multiple of π:
syms x;
a=0;
b=1/2;
c=x;
R=[cos(a)*cospi(b)*cos(c) sin(a)*sinpi(b)*sin(c)];
vpa(R)
ans = 
cospi computes the cosine of pi times its input without actually computing pi times its input.

Products

Community Treasure Hunt

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

Start Hunting!