Está en la página 1de 25

Taller 1 - Posición y Orientación

Ejercicios

1. Utilizando el hecho que , demuestre que el producto punto de dos vectores libres no
depende de los marcos de referencia seleccionados.

Sea y definidos segun el marco de referencia . Sea otro marco de referencia tal

que . Entonces se tiene que:

Como la matriz de rotación es ortogonal, . Por tanto:

Lo que demuestra que el producto punto no depende del marco de referencia.

1
2. Responda las siguientes preguntas:

a) ¿Qué es una base?

Una base de un espacio vectorial V es un conjunto de vectores linealmente independientes


pertenecientes aV, tal que cualquier vector dentro del espacio vectorial V se puede representar
como una combinación lineal de dicho conjunto de vectores.

b) ¿Qué es un sistema de coordenadas?

Un sistema de coordenadas es un marco con un origen y direcciones, el cual permite determinar la posición y
orientación de un objeto.

3. Halle la combinación lineal que genera el elemento w en términos de los elementos del conjunto S
dado, para los casos a y b.

Este problema se puede representar como un sistema de ecuaciones

Y se puede resolver de forma matricial.

a)

S = [1 2;-3 -2]

S = 2×2
1 2
-3 -2

W = [0;-4]

W = 2×1
0
-4

alpha = S\W

alpha = 2×1
2.0000

2
-1.0000

b)

S = [1 -1 1;-1 1 0;1 0 -1;0 1 1]

S = 4×3
1 -1 1
-1 1 0
1 0 -1
0 1 1

W = [6;-5;1;-2]

W = 4×1
6
-5
1
-2

alpha = S\W

alpha = 3×1
2.0000
-3.0000
1.0000

4. En se denomina base canónica a la formada por los vectores = [1 0 0]′ , = [0 1 0]′, = [0 0 1]′.

• Expresar el vector d = [4, 2, −1]′, como la combinación lineal de los vectores de la base canónica.

• Calcular la proyección del vector sobre cada uno de los vectores de la base canonica.

3
• Calcular el coseno del ángulo entre el vector d y los vectores de la base canónica.

d = [4;2;-1];
norm_d = norm(d)

norm_d = 4.5826

cos_i = 4/norm_d

cos_i = 0.8729

cos_j = 2/norm_d

cos_j = 0.4364

cos_k = -1/norm_d

cos_k = -0.2182

• En Matlab realice las gráficas de la base canónica, el vector d y las proyecciones calculadas.

figure()
%Proyecciones
quiver3(0,0,0,4,0,0,'off','--k')
hold on
quiver3(0,0,0,0,2,0,'off','--k')
quiver3(0,0,0,0,0,-1,'off','--k')
%Base canónica
quiver3(0,0,0,1,0,0,'off','r')
quiver3(0,0,0,0,1,0,'off','g')
quiver3(0,0,0,0,0,1,'off','b')
%Vector
quiver3(4,2,-1,-4,-2,1,'off','*k')
hold off
view(120,15)

4
5. Dadas las matrices y .Realice

las siguientes operaciones (En caso de que alguna no sea posible de realizar, indique la razón):

A = [-5 2 10;-3 1 -6; 1 -3 3];


B = [-2 2;3 -1;-3 2];
C = [1 0 -1;0 1 1];
D = [-15 24 -2;3 -5 0;8 -13 1];

a)

(A*B)'

ans = 2×3
-14 27 -20
8 -19 11

b)

(D'*A')

ans = 3×3
161 0 0
-260 1 0

5
20 0 1

c)

%(B'/(B'*B))* B' --> (2x3){[(2x3)(3x2)]^-1}(2x3) = (2x3)(2x2)(2x3) = (2x3)(2x3)

No es posible, ya que queda una multiplicación entre dos matrices 2x3.

d) y e)

%B*C-C*B --> (3x2)(2x3) - (2x3)(3x2) = (3x3) - (2x2)

La operación no es posible ya que se restan matrices de diferentes tamaños. Seria posible si se añaden ceros
a la matriz 2x2.

B*C - [C*B zeros(2,1);zeros(1,3)]

ans = 3×3
-3 2 4
3 -2 -4
-3 2 5

f)

(B'*(2*B))*(C*B)

ans = 2×2
44 -26
-26 18

6. Sea R1 una matriz de rotación:

• Confirme que se cumplen al menos 3 de las propiedades de este tipo de matrices.

1.
2.
3.

R1 = [0.4330 -0.7500 -0.5000; 0.4356 0.6597 -0.6124; 0.7891 0.0474 0.6124]

R1 = 3×3
0.4330 -0.7500 -0.5000
0.4356 0.6597 -0.6124
0.7891 0.0474 0.6124

%1

6
R1' - inv(R1)

ans = 3×3
10-4 ×
-0.4243 -0.1448 -0.7623
0.3121 -0.4113 0.2923
-0.6156 -0.3045 0.2955

El resultado es practicamente cero, por lo que son iguales.

%2
detR1 = det(R1)

detR1 = 1.0000

%3
cross(R1(1,:),R1(2,:))

ans = 1×3
0.7892 0.0474 0.6124

cross(R1(2,:),R1(3,:))

ans = 1×3
0.4330 -0.7500 -0.4999

cross(R1(3,:),R1(1,:))

ans = 1×3
0.4356 0.6597 -0.6123

cross(R1(:,1),R1(:,2))

ans = 3×1
-0.4999
-0.6123
0.6124

cross(R1(:,2),R1(:,3))

ans = 3×1
0.4330
0.4356
0.7892

cross(R1(:,3),R1(:,1))

ans = 3×1
-0.7500
0.6597
0.0474

• ¿Qué efecto tiene la precisión numérica en el cálculo de matrices inversas y determinantes?.


Consulte el comando de MATLAB que genera la cantidad más pequeña con la que dicho software
es capaz de trabajar.

7
Como se vio en el ejercicio anterior, la precisión numerica hace que los resultados no sean exactamente igual a
los teoricos ya que existe un error de redondeo. El comando realmin muestra la cantidad mas pequeña que se
puede trabajar en MATLAB.

realmin

ans = 2.2251e-308

7. Dados los sistemas de coordenadas {A}, {B} y {C}, suponga que:

Encuentre la matriz

R_ab = [1 0 0; 0 sqrt(3)/2 -1/2;0 1/2 sqrt(3)/2]

R_ab = 3×3
1.0000 0 0
0 0.8660 -0.5000
0 0.5000 0.8660

R_ac = [0 0 -1; 0 1 0; 1 0 0]

R_ac = 3×3
0 0 -1
0 1 0
1 0 0

R_ba = R_ab'

R_ba = 3×3
1.0000 0 0
0 0.8660 0.5000
0 -0.5000 0.8660

R_bc= R_ba*R_ac

R_bc = 3×3
0 0 -1.0000
0.5000 0.8660 0
0.8660 -0.5000 0

8. Encuentre la representación en en ángulos fijos (roll, pitch, yaw) de la matriz de rotación .

8
R_ab = [1 0 0; 0 sqrt(3)/2 -1/2;0 1/2 sqrt(3)/2];
roll = atan(R_ab(3,2)/R_ab(3,3))

roll = 0.5236

pitch = -asin(R_ab(3,1))

pitch = 0

yaw = atan(R_ab(2,1)/R_ab(1,1))

yaw = 0

Se verifica con la función rpy2r que retorna una rotación a partir de los angulos roll, pitch y yaw.

R_ab = rpy2r(roll,pitch,yaw)

R_ab = 3×3
1.0000 0 0
0 0.8660 -0.5000
0 0.5000 0.8660

9. Encuentre la representación en ángulos de Euler de la matriz de rotación .

R_ab = [0.4330 -0.2500 0.8660; 0.8839 0.3062 -0.3536; -0.1768 0.9186 0.3536]

R_ab = 3×3
0.4330 -0.2500 0.8660
0.8839 0.3062 -0.3536
-0.1768 0.9186 0.3536

phi = atan(R_ab(2,3)/R_ab(1,3))

phi = -0.3877

theta = acos(R_ab(3,3))

theta = 1.2094

psi = atan(-R_ab(3,2)/R_ab(3,1))

9
psi = 1.3807

Se verifica con la función eul2r que retorna una rotación a partir de los angulos de euler.

R_ab=eul2r(phi,theta,psi)

R_ab = 3×3
0.4331 -0.2500 0.8660
0.8839 0.3062 -0.3536
-0.1768 0.9185 0.3536

10. Dados y . Encuentre la matriz

kx = 1/sqrt(3);
ky = kx;
kz = kx;
theta = pi/2;
cos_theta = cos(theta)

cos_theta = 6.1232e-17

sin_theta = sin(theta)

sin_theta = 1

v_theta = 1 - cos_theta

v_theta = 1.0000

Rk = [(kx^2*v_theta + cos_theta) (kx*ky*v_theta-kz*sin_theta) (kx*kz*v_theta + ky*sin_theta


(kx*ky*v_theta+kz*sin_theta) (ky^2*v_theta + cos_theta) (ky*kz*v_theta-kx*sin_theta);
(kx*kz*v_theta - ky*sin_theta) (ky*kz*v_theta+kx*sin_theta) (kz^2*v_theta+cos_theta)]

Rk = 3×3
0.3333 -0.2440 0.9107
0.9107 0.3333 -0.2440
-0.2440 0.9107 0.3333

Se verifica con la función angvec2r que retorna una rotación a partir de un angulo y un eje.

angvec2r(theta,[kx ky kz])

ans = 3×3
0.3333 -0.2440 0.9107
0.9107 0.3333 -0.2440

10
-0.2440 0.9107 0.3333

11. Un marco de referencia {B} inicialmente se encuentra coincidente con el marco {A}. Se rota {B}
alrededor de 45° y luego alrededor de resultante un ángulo de 30°. ¿Cuál es la MTH que relaciona
ambos marcos luego de las rotaciones?

Al ser rotaciones respecto a los ejes creados despues de cada rotación, son angulos de Euler. Por tanto, la
matriz de rotación resulta de la posmultiplicación de la matriz de rotación individuales.

Ry = [cos(pi/4) 0 sin(pi/4); 0 1 0; -sin(pi/4) 0 cos(pi/4)]

Ry = 3×3
0.7071 0 0.7071
0 1.0000 0
-0.7071 0 0.7071

Rz = [cos(pi/6) -sin(pi/6) 0;sin(pi/6) cos(pi/6) 0; 0 0 1]

Rz = 3×3
0.8660 -0.5000 0
0.5000 0.8660 0
0 0 1.0000

R_ab = Ry * Rz;
MTH_ab = [R_ab zeros(3,1);[0 0 0 1]]

MTH_ab = 4×4
0.6124 -0.3536 0.7071 0
0.5000 0.8660 0 0
-0.6124 0.3536 0.7071 0
0 0 0 1.0000

Manejo de Toolbox

• Compruebe el cálculo previo de la MTH que relaciona los marcos de referencia {A} y {B}.

MTH_ab = r2t(roty(pi/4) * rotz(pi/6))

MTH_ab = 4×4
0.6124 -0.3536 0.7071 0
0.5000 0.8660 0 0
-0.6124 0.3536 0.7071 0
0 0 0 1.0000

• Exprese el marco de referencia {B} en representación por ángulos fijos (roll, pitch, yaw), ángulos de
euler y ángulo-eje equivalente.

RPY = tr2rpy(MTH_ab); %Ángulos fijos


roll = RPY(1)

roll = 0

pitch = RPY(2)

11
pitch = 0.7854

yaw = RPY(3)

yaw = 0.5236

EUL = tr2eul(MTH_ab);% Ángulos de Euler


phi = EUL(1)

phi = 0

theta = EUL(2)

theta = 0.7854

psi = EUL(3)

psi = 0.5236

[theta,vector]=tr2angvec(MTH_ab)%Ángulo-Eje

theta = 0.9363
vector = 1×3
0.2195 0.8192 0.5299

• Realice la gráfica de los marcos de referencia {A} y {B}.

figure()
trplot(eye(4),'frame','A')
hold on
trplot(MTH_ab,'frame','B','color','r')
hold off
view(120,20)

12
12. Considere el sistema de la Figura 1, encuentre las MTH correspondientes a , y . Demuestre
que .

El sistema 1 se encuentra trasladado y rotado respecto al sistema 0. La rotación se puede definir como una
rotación de 180° respecto al eje Y.

13
d_01 = [1;0.5;0]

d_01 = 3×1
1.0000
0.5000
0

R_01 = [cos(pi) 0 sin(pi);0 1 0; -sin(pi) 0 cos(pi)]

R_01 = 3×3
-1.0000 0 0.0000
0 1.0000 0
-0.0000 0 -1.0000

MTH_01 = [R_01 d_01; zeros(1,3) 1]

MTH_01 = 4×4
-1.0000 0 0.0000 1.0000
0 1.0000 0 0.5000
-0.0000 0 -1.0000 0
0 0 0 1.0000

El sistema 2 se encuentra trasladado y rotado respecto al sistema 1. La rotación se puede definir como una
rotación de -90° respecto eje Y y luego una rotación de 90° respecto al nuevo eje X.

d_12 = [1 ;-0.5 ;-1]

d_12 = 3×1
1.0000
-0.5000
-1.0000

R_12_y = [cos(-pi/2) 0 sin(-pi/2);0 1 0; -sin(-pi/2) 0 cos(-pi/2)]

R_12_y = 3×3
0.0000 0 -1.0000
0 1.0000 0
1.0000 0 0.0000

R_12_x = [1 0 0 ;0 cos(pi/2) -sin(pi/2); 0 sin(pi/2) cos(pi/2)]

R_12_x = 3×3
1.0000 0 0
0 0.0000 -1.0000
0 1.0000 0.0000

R_12 = R_12_y * R_12_x

R_12 = 3×3
0.0000 -1.0000 -0.0000
0 0.0000 -1.0000
1.0000 0.0000 0.0000

MTH_12 = [R_12 d_12; zeros(1,3) 1]

MTH_12 = 4×4
0.0000 -1.0000 -0.0000 1.0000
0 0.0000 -1.0000 -0.5000
1.0000 0.0000 0.0000 -1.0000
0 0 0 1.0000

14
El sistema 2 se encuentra trasladado y rotado respecto al sistema 0. La rotación se puede definir como una
rotación de 90° respecto al eje Y y luego una rotación respecto al nuevo eje X de 90°.

d_02 = [0 ;0 ;1]

d_02 = 3×1
0
0
1

R_02_y = [cos(pi/2) 0 sin(pi/2);0 1 0; -sin(pi/2) 0 cos(pi/2)]

R_02_y = 3×3
0.0000 0 1.0000
0 1.0000 0
-1.0000 0 0.0000

R_02_x = [1 0 0 ;0 cos(pi/2) -sin(pi/2); 0 sin(pi/2) cos(pi/2)]

R_02_x = 3×3
1.0000 0 0
0 0.0000 -1.0000
0 1.0000 0.0000

R_02 = R_02_y * R_02_x

R_02 = 3×3
0.0000 1.0000 0.0000
0 0.0000 -1.0000
-1.0000 0.0000 0.0000

MTH_02 = [R_02 d_02; zeros(1,3) 1]

MTH_02 = 4×4
0.0000 1.0000 0.0000 0
0 0.0000 -1.0000 0
-1.0000 0.0000 0.0000 1.0000
0 0 0 1.0000

Se realiza la comprobación

MTH_01 * MTH_12

ans = 4×4
0.0000 1.0000 0.0000 -0.0000
0 0.0000 -1.0000 0
-1.0000 0.0000 0.0000 1.0000
0 0 0 1.0000

Manejo de Toolbox A

• Compruebe el resultado obtenido anteriormente.

R_01 = roty(180,'deg')

R_01 = 3×3
-1.0000 0 0.0000
0 1.0000 0

15
-0.0000 0 -1.0000

MTH_01 = rt2tr(R_01,d_01)

MTH_01 = 4×4
-1.0000 0 0.0000 1.0000
0 1.0000 0 0.5000
-0.0000 0 -1.0000 0
0 0 0 1.0000

R_12 = roty(-90,'deg') * rotx(90,'deg')

R_12 = 3×3
0.0000 -1.0000 -0.0000
0 0.0000 -1.0000
1.0000 0.0000 0.0000

MTH_12 = rt2tr(R_12,d_12)

MTH_12 = 4×4
0.0000 -1.0000 -0.0000 1.0000
0 0.0000 -1.0000 -0.5000
1.0000 0.0000 0.0000 -1.0000
0 0 0 1.0000

R_02 = roty(90,'deg') * rotx(90,'deg')

R_02 = 3×3
0.0000 1.0000 0.0000
0 0.0000 -1.0000
-1.0000 0.0000 0.0000

MTH_02 = rt2tr(R_02,d_02)

MTH_02 = 4×4
0.0000 1.0000 0.0000 0
0 0.0000 -1.0000 0
-1.0000 0.0000 0.0000 1.0000
0 0 0 1.0000

• En una gráfica presente de los 3 marcos de referencia

figure()
trplot(eye(4),'frame','0','length',0.3)
hold on
trplot(MTH_02,'frame','2','color','r','length',0.3)
trplot(MTH_01,'frame','1','color','g','length',0.3)
hold off
view([-120 30])

16
13. En la Figura 2 se muestran 4 marcos de referencia en el espacio de trabajo de un robot, el marco fijo
{a}, el marco TCP {b}, el marco de cámara {c} y el marco de la pieza de trabajo {d}.

17
• Encuentre y .

d_ad = [-1;1;0]

d_ad = 3×1
-1
1
0

d_cd = [0;0;2]

d_cd = 3×1
0
0
2

R_ad = eye(3)

R_ad = 3×3
1 0 0
0 1 0
0 0 1

R_cd_y = [cos(pi) 0 sin(pi);0 1 0; -sin(pi) 0 cos(pi)]

R_cd_y = 3×3
-1.0000 0 0.0000
0 1.0000 0
-0.0000 0 -1.0000

R_cd_z = [cos(pi/2) -sin(pi/2) 0;sin(pi/2) cos(pi/2) 0; 0 0 1]

R_cd_z = 3×3
0.0000 -1.0000 0
1.0000 0.0000 0
0 0 1.0000

R_cd = R_cd_y * R_cd_z

R_cd = 3×3
-0.0000 1.0000 0.0000
1.0000 0.0000 0
-0.0000 0.0000 -1.0000

T_ad = [R_ad d_ad;zeros(1,3) 1]

T_ad = 4×4
1 0 0 -1
0 1 0 1
0 0 1 0
0 0 0 1

T_cd = [R_cd d_cd;zeros(1,3) 1]

T_cd = 4×4
-0.0000 1.0000 0.0000 0
1.0000 0.0000 0 0
-0.0000 0.0000 -1.0000 2.0000
0 0 0 1.0000

18
• Encuentre sabiendo que:

Se encuentra como:

d_bc = [-2;1;0];
R_bc = eye(3);
T_bc = [R_bc d_bc ; zeros(1,3) 1];
T_cb = [R_bc' -R_bc'*d_bc;zeros(1,3) 1]

T_cb = 4×4
1 0 0 2
0 1 0 -1
0 0 1 0
0 0 0 1

Se encuentra como:

T_dc = [R_cd' -R_cd'*d_cd;zeros(1,3) 1]

T_dc = 4×4
-0.0000 1.0000 -0.0000 0.0000
1.0000 0.0000 0.0000 -0.0000
0.0000 0 -1.0000 2.0000
0 0 0 1.0000

Por tanto,

T_ab = T_ad*T_dc*T_cb

T_ab = 4×4
-0.0000 1.0000 -0.0000 -2.0000
1.0000 0.0000 0.0000 3.0000
0.0000 0 -1.0000 2.0000
0 0 0 1.0000

19
Manejo de Toolbox

• De las MTH calculadas en los literales anteriores represente las orientaciones en ángulos de Euler y
ángulos Fijos.

tr2rpy(T_ad)

ans = 1×3
0 0 0

tr2eul(T_ad)

ans = 1×3
0 0 0

tr2rpy(T_cd)

ans = 1×3
-3.1416 0.0000 -1.5708

tr2eul(T_cd)

ans = 1×3
0 3.1416 1.5708

tr2rpy(T_ab)

ans = 1×3
-3.1416 -0.0000 -1.5708

tr2eul(T_ab)

ans = 1×3
0 -3.1416 1.5708

• Realice la gráfica de los 4 marcos de referencia.

T_da = [R_ad' -R_ad'*d_ad;zeros(1,3) 1];


T_db = T_da*T_ab;
figure()
trplot(eye(4),'frame','D','color','k','length',0.5,'axis',[-1 3 -1 3 -1 3])
hold on
trplot(T_dc,'frame','C','color','b','length',0.5)
trplot(T_da,'frame','A','color','g','length',0.5)
trplot(T_db,'frame','B','color','r','length',0.5)
hold off
view([120 10])

20
14. La figura 3 representa tres marcos de referencia ubicados en las esquinas de una cuña, estos han
sido denominados {A}, {B} y {C}.

Manejo de Toolbox

• Encuentre las MTH correspondientes a , y .

21
d_ac = [-3;4;2];
R_ac = roty(180,'deg') * rotz(90 + 53.1,"deg");
T_ac = rt2tr(R_ac,d_ac)

T_ac = 4×4
0.7997 0.6004 0.0000 -3.0000
0.6004 -0.7997 0 4.0000
0.0000 0.0000 -1.0000 2.0000
0 0 0 1.0000

d_bc = [3;0;0];
R_bc = rotx(-90,'deg') * rotz(90 + 53.1,"deg");
T_bc = rt2tr(R_bc,d_bc)

T_bc = 4×4
-0.7997 -0.6004 0 3.0000
0.0000 -0.0000 1.0000 0
-0.6004 0.7997 0.0000 0
0 0 0 1.0000

T_ca = [R_ac' -R_ac'*d_ac;zeros(1,3) 1]

T_ca = 4×4
0.7997 0.6004 0.0000 -0.0026
0.6004 -0.7997 0.0000 5.0000
0.0000 0 -1.0000 2.0000
0 0 0 1.0000

• Realice la gráfica de los 3 marcos de referencia.

T_cb = [R_bc' -R_bc'*d_bc;zeros(1,3) 1]

T_cb = 4×4
-0.7997 0.0000 -0.6004 2.3991
-0.6004 -0.0000 0.7997 1.8013
0 1.0000 0.0000 0
0 0 0 1.0000

figure()
trplot(eye(4),'frame','A','axis',[-3 1 -1 5 -1 5])
hold on
trplot(T_ac,'frame','C')
trplot(T_ac*T_cb,'frame','B')
hold off
view(160,20)

22
• Exprese los marcos de referencia {B} y {C} en representación por ángulos fijos y ángulos de euler
(respecto a {A})

tr2rpy(T_ac)

ans = 1×3
-3.1416 0.0000 -0.6440

tr2eul(T_ac)

ans = 1×3
0 3.1416 2.4976

T_ab = T_ac*T_cb

T_ab = 4×4
-1.0000 0.0000 0.0000 -0.0000
0 0.0000 -1.0000 4.0000
-0.0000 -1.0000 -0.0000 2.0000
0 0 0 1.0000

tr2rpy(T_ab)

ans = 1×3
1.5708 0.0000 -3.1416

tr2eul(T_ab)

ans = 1×3
-1.5708 1.5708 -1.5708

23
15. Encuentre la representación en matriz de rotación dada la representación ángulo-eje equivalente

k = (1/sqrt(14)) * [2;3;1]

k = 3×1
0.5345
0.8018
0.2673

theta = pi/3;

kx = k(1);
ky = k(2);
kz = k(3);

cos_theta = cos(theta)

cos_theta = 0.5000

sin_theta = sin(theta)

sin_theta = 0.8660

v_theta = 1 - cos_theta

v_theta = 0.5000

Rk = [(kx^2*v_theta + cos_theta) (kx*ky*v_theta-kz*sin_theta) (kx*kz*v_theta + ky*sin_theta


(kx*ky*v_theta+kz*sin_theta) (ky^2*v_theta + cos_theta) (ky*kz*v_theta-kx*sin_theta);
(kx*kz*v_theta - ky*sin_theta) (ky*kz*v_theta+kx*sin_theta) (kz^2*v_theta+cos_theta)]

Rk = 3×3
0.6429 -0.0172 0.7658
0.4457 0.8214 -0.3558
-0.6229 0.5701 0.5357

Se hace la comparación con el ToolBox de Peter Corke.

Rk =angvec2r(theta,k)

Rk = 3×3
0.6429 -0.0172 0.7658
0.4457 0.8214 -0.3558
-0.6229 0.5701 0.5357

24
16. Del punto anterior obtenga la representación en cuaternio. Compruebe usando las funciones del
Toolbox de Peter Corke.

Q = [cos(theta/2) (kx * sin(theta/2)) (ky*sin(theta/2)) (kz*sin(theta/2))]

Q = 1×4
0.8660 0.2673 0.4009 0.1336

Se hace la comprobación con Peter Corke.

Q = Quaternion(Rk)

Q =

0.86603 < 0.26726, 0.40089, 0.13363 >

25

También podría gustarte