Displaying (small number)*(syms variable) as 0
6 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Mike
el 15 de Feb. de 2021
Respondida: Steven Lord
el 16 de Feb. de 2021
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?
0 comentarios
Respuesta aceptada
Walter Roberson
el 15 de Feb. de 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)
Más respuestas (1)
Steven Lord
el 16 de Feb. de 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)
cospi computes the cosine of pi times its input without actually computing pi times its input.
0 comentarios
Ver también
Categorías
Más información sobre Number Theory en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
