Displaying (small number)*(syms variable) as 0
Mostra commenti meno recenti
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?
Risposta accettata
Più risposte (1)
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)
cospi computes the cosine of pi times its input without actually computing pi times its input.
Categorie
Scopri di più su Number Theory in Centro assistenza e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
