Matlab - Proceso Iterativo

   
Vista:

Proceso Iterativo

Publicado por José Luis (3 intervenciones) el 17/05/2014 23:28:14
Buenas noches,

necesito realizar un proceso iterativo a fin de obtener el tamaño de una pieza, la primera estimación es a mano pero después necesito un proceso iterativo de forma que se pare al alcanzar en la ultima iteración el valor de la anterior. Algo falla porque directamente me hace 10 iteraciones. Llevaba muchos años sin usar Matlab y quizás no lo haya planteado de la mejor forma. Gracias de antemano.

clc
Kb=input('Introduzca un supuesto de Kb: ');
if Kb<0.85
error('Estime un Kb más alto.')
end
Se=0.759663*Kb*415


d=Kb.^(1/(-0.107))*7.62
r=d/10
if r<=5
q=0.85
else q=0.9
end

Sn=(((0.9*830).^2)/Se)*690000.^(-1/3*log10(0.9*830/Se))
Kf=1+q*(1.65-1)
d1=(Kf*34377467/Sn).^(1/3)

for i = 1:10



clearvars Kb
Kb=(d1/7.62).^(-0.107)
Se=0.759663*Kb*415
r=d1/10
Sn=(((0.9*830).^2)/Se)*690000.^(-1/3*log10(0.9*830/Se))
if r<=5
q=0.85
else q=0.9
end
Kf=1+q*(1.65-1)
d2=(Kf*34377467/Sn).^(1/3)

if d2==d1
break
('La estimación del diámetro del eje es: ')
end
end
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 Dave

Proceso Iterativo

Publicado por Dave correa.dave30@gmail.com (934 intervenciones) el 18/05/2014 21:34:12
Hola José Luis;

He revisado brevemente tu código y he hecho algunas modificaciones.

A continuación te copio el código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
clc, close all, clear all
 
% Kb=input('Introduzca un supuesto de Kb: '); 
Kb = 0.9;
if Kb<0.85
error('Estime un Kb más alto.')
else
Se=0.759663*Kb*415;
d=Kb.^(1/(-0.107))*7.62;
r=d/10;
 
if r<=5
    q=0.85;
else
    q=0.9;
end
 
Sn=(((0.9*830).^2)/Se)*690000.^(-1/3*log10(0.9*830/Se));
Kf=1+q*(1.65-1);
d1=(Kf*34377467/Sn).^(1/3);
 
for i = 1:200
clearvars Kb
Kb=(d1/7.62).^(-0.107);
Se=0.759663*Kb*415;
r=d1/10;
Sn=(((0.9*830).^2)/Se)*690000.^(-1/3*log10(0.9*830/Se));
if r<=5
    q=0.85;
else
    q=0.9;
end
Kf=1+q*(1.65-1);
d2=(Kf*34377467/Sn).^(1/3);
 
if d2>=d1
disp(['La estimación del diámetro del eje es: ',num2str(d2)])
break
end
end
 
end


1
La estimación del diámetro del eje es: 58.6796


Espero que sea de alguna ayuda.

Saludos
Dave Correa
correa.dave30@gmail.com
Servicios de Programación Matlab
http://fismatlab.blogspot.com/
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

Proceso Iterativo

Publicado por José Luis (3 intervenciones) el 18/05/2014 21:41:01
Muchas gracias! al final lo solucione con un while de modo que entra en bucle hasta que sale de el con un break, quizás no es la opción más elegante soy bastante novato. De nuevo muchas gracias por todo.

Un saludo.
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