Matlab - trigonometría con radianes

 
Vista:
sin imagen de perfil
Val: 5
Ha aumentado su posición en 14 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

trigonometría con radianes

Publicado por johan (2 intervenciones) el 19/10/2020 10:57:57
Buenas, con el código siguiente he tenido el problema que al generar las operaciones de la función "tangente " en radianes, las condiciones que pongo no se cumplen, por más de que ambas variables sean idénticas me arroja lo contrario, pero cambiando la función "tangente" a grados este problema se soluciona (cabe destacar que debo hacerlo en radianes), he verificado las operaciones en mi calculadora e imprimiendo las variables en el programa y están bien, agradezco si me pudiesen informar como corregir el error.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
%comprobar que se cumple la igualdad de las identidades trigonometricas
 
clear
clc
 
%siendo "x"
x= (3*pi) /17;
 
%problema 10A
 
%identidad      __tan(2*x)=2*tan(x) /(1-tan(x)^2)__
 
a=tan(2*x);%expresión de la rama izquierda de la ecuación
 
b=(2*tan(x)) /(1- (tan(x)^2));%expresión de la rama derecha de la ecuación
 
if a==b
    sprintf('si se cumple la igualdad de la identidad')
 
else
    sprintf('no se cumple la igualdad de la identidad')
end


preg-matlab
preg-progra-2
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Jon
Val: 354
Ha aumentado 1 puesto en Matlab (en relación al último mes)
Gráfica de Matlab

trigonometría con radianes

Publicado por Jon (161 intervenciones) el 19/10/2020 11:15:34
Hola Johan,

El problema es simple. MATLAB al ser una herramienta potente de cálculo computacional, coge una gran cantidad de decimales por defecto.

Si defines un error diminuto entre a y b (1e-12, por ejemplo), verás que tu programa funciona correctamente. Aquí tienes el programa con esa modificación:

1
2
3
4
5
6
7
8
9
10
11
12
13
%% Datos
x = (3*pi) /17;
a =tan(2*x);                     % expresión de la rama izquierda de la ecuación
b =(2*tan(x)) /(1- (tan(x)^2));  % expresión de la rama derecha de la ecuación
 
%% Comprobación
error = abs(a - b);
if error < 1e-12
    sprintf('si se cumple la igualdad de la identidad')
 
else
    sprintf('no se cumple la igualdad de la identidad')
end

Por otro lado, también puedes redondear los resultados a y b con la función round (a 4 decimales, por ejemplo). De este modo, no tendrás que definir ningún error. Aquí tienes el programa utilizando este método:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
%% Datos
x = (3*pi) /17;
a =tan(2*x);                     % expresión de la rama izquierda de la ecuación
b =(2*tan(x)) /(1- (tan(x)^2));  % expresión de la rama derecha de la ecuación
 
%% Comprobación
a_new = round(a,4);
b_new = round(b,4);
if a_new == b_new
    sprintf('si se cumple la igualdad de la identidad')
 
else
    sprintf('no se cumple la igualdad de la identidad')
end

Espero haber respondido tu pregunta.

Un saludo,

Jon
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar