Matlab - Duda iterar hasta que cumpla dos condiciones

 
Vista:

Duda iterar hasta que cumpla dos condiciones

Publicado por Cam97 (2 intervenciones) el 12/04/2020 19:17:06
Hola! Estoy empezando en esto, tengo una serie de ecuaciones que me calculan 4 valores (a,b,c y d) en función del valor que le de a ‘salida’, y necesito ir variando ese valor de salida hasta que me cumpla dos condiciones:
1-que el valor de d sea el mas pequeño
2-que a+d<c+b

Como podría hacerlo? Gracias de antemano

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
fi1 = (62)*pi/180;
fi2 = (92)*pi/180;
fi3 = (122)*pi/180;
 
salida =0;
 
psi1 = salida *pi/180;
psi2 = (salida + 4*60)*pi/180;
psi3 = (salida - 60)*pi/180;
 
A=[cos(psi1) -cos(fi1) 1;cos(psi2) -cos(fi2) 1; cos(psi3) -cos(fi3) 1];
 
B=[cos(psi1-fi1);cos(psi2-fi2);cos(psi3-fi3)];
 
K=inv(A)*B
 
d=1
a=d/K(1)
b=d/K(2)
c=sqrt(d^2+b^2+a^2-2*a*b*K(3))
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 JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Duda iterar hasta que cumpla dos condiciones

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 12/04/2020 19:41:51
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
%https://www.lawebdelprogramador.com/foros/Matlab/1737395-Duda-iterar-hasta-que-cumpla-dos-condiciones.html
clear
fi1 = (62)*pi/180;
fi2 = (92)*pi/180;
fi3 = (122)*pi/180;
salida =0;
psi1 = salida *pi/180;
psi2 = (salida + 4*60)*pi/180;
psi3 = (salida - 60)*pi/180;
A=[cos(psi1) -cos(fi1) 1;cos(psi2) -cos(fi2) 1; cos(psi3) -cos(fi3) 1];
B=[cos(psi1-fi1);cos(psi2-fi2);cos(psi3-fi3)];
K=inv(A)*B;
d=1;
a=d/K(1);
b=d/K(2);
c=sqrt(d^2+b^2+a^2-2*a*b*K(3));
format long
for d=1:-0.0000001:-2
 if a+d<c+b
     d;
     break;
 end
end
d

1
2
3
>> valor_mas_pequeno
d =
  -0.890802000000000
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Duda iterar hasta que cumpla dos condiciones

Publicado por Cam97 (2 intervenciones) el 12/04/2020 20:36:19
Hola, gracias pero el valor que busco es el de salida, es el que quiero variar entre 0 y 360 para encontrar el valor para el cual cumpla ambas condiciones
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Duda iterar hasta que cumpla dos condiciones

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 12/04/2020 21:14:41
1
2
3
4
5
6
7
8
for d=360:-0.000001:0
    a=d/K(1);
 if a+d<c+b
     d;
     break;
 end
end
d



1
2
3
4
5
>> valor_mas_pequeno
 
d =
 
   0.402640000000019
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Duda iterar hasta que cumpla dos condiciones

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 12/04/2020 21:16:58
1
2
3
4
5
6
7
8
9
format long
for d=eps:eps:360
    a=d/K(1);
 if a+d<c+b
     d;
     break;
 end
end
d


1
2
3
4
5
>> valor_mas_pequeno
 
d =
 
     2.220446049250313e-16
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar