Matlab - Iteraciones en Matlab

   
Vista:

Iteraciones en Matlab

Publicado por Nestor (4 intervenciones) el 22/04/2015 01:37:53
Hola
Soy novato en matlab y quisiera saber cómo realizar un cálculo iterativo en Matlab. Tengo una función que me calcula la variable T. Pero la función contiene variables que requieren del conocimiento previo de la variable T, por lo tanto propongo inicialmente un valor de T, luego calculo las variables y sustituyo en la función que me calcula T, si no es aproximadamente igual al valor propuesto(Con un error de 1%), propongo otro valor de T, esto hasta la convergencia.
Espero alguien me pueda ayudar
Saludos
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 JESUS

Iteraciones en Matlab

Publicado por JESUS jesus.royeth@gmail.com (758 intervenciones) el 22/04/2015 01:55:05
hola Nestor para eso se usa 'while' te adjunto mi pdf donde lo explico desde lo básico hasta lo avanzado , espero te sea de ayuda y si tienes otra inquietud no dudes en preguntar
éxitos
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

Iteraciones en Matlab

Publicado por Nestor (4 intervenciones) el 22/04/2015 02:23:50
Gracias lo voy a revisar
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 JESUS

Iteraciones en Matlab

Publicado por JESUS jesus.royeth@gmail.com (758 intervenciones) el 22/04/2015 02:30:17
Listo , alguna duda estaré atento
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

Iteraciones en Matlab

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3433 intervenciones) el 22/04/2015 15:25:11
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
clear all
T=0;
n=1;
display('    T(n)       T(n-1)      error')
while 1
    T1=T+1/n;
    error=abs(T1-T);
    disp([T1 T error])
    if error<0.1
         break;
    else
        T=T1;
        n=n+1;
    end
 end



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
>> error_iterativo
    T(n)      T(n-1)     error
     1     0     1
 
    1.5000    1.0000    0.5000
 
    1.8333    1.5000    0.3333
 
    2.0833    1.8333    0.2500
 
    2.2833    2.0833    0.2000
 
    2.4500    2.2833    0.1667
 
    2.5929    2.4500    0.1429
 
    2.7179    2.5929    0.1250
 
    2.8290    2.7179    0.1111
 
    2.9290    2.8290    0.1000
 
    3.0199    2.9290    0.0909





Saludos.
JOSE JEREMÍAS CABALLERO
Asesoría online en Matlab
Servicios de programación matlab
jjcc94@hotmail.com
skype: josejeremiascaballero
Estimado Usuario, el correo es para servicios de cursos, asesoría y programación. Toda ayuda gratuita es vía foro
.

http://matlabcaballero.blogspot.com

http://www.lawebdelprogramador.com/foros/Matlab/1371532-FORMA_DE_APRENDER_MATLAB.html
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

Iteraciones en Matlab

Publicado por Nestor nest8591@hotmail.com (4 intervenciones) el 28/04/2015 23:03:46
Hola Jesús, utilice el comando While como me sugeriste. Funciono muy bien para ciertos valores, pero uno en específico no sé qué le sucede. Por ejemplo tengo una variable que se llama Refle, su valor original es de 0.92, pero con este valor no converge al resultado final. Pero si utilizo valores cercanos como 0.91 o 0.93, si converge. ¿Será que hay un problema con la aproximación T~=Ts?

Aquí dejo el código que estoy realizando.

Espero me puedas ayudar.

Saludos

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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
%Codigo para del análisis termico de CCP con flujo constante de calor
 
%Especificaciones del tubo absorbedor:
    %Flujo masico (kg/s)
        m=5.85e-3;
    %Diametro externo (m)
        Do=0.0254;
    %Diametro interno (m)
        Di=0.0234;
    %Longitud (m)
        L=2.44;
    %Absortancia
        abs=0.9;
    %Emitancia
        em=0.9;
    %Temperatura de entrada (K)
        Ti=295.15;
    %Temperatura de salida (K)
        %To= Variables a calcular
    %Area externa del receptor
        Aro=pi*Do*L;
    %Area interna del receptor
        Ari=pi*Di*L;
 
%Especificaciones del concentrador,misma longitud del receptor:
    %Foco de la parabola (m)
        f=0.266;
    %ángulo de borde (grados)
        rad=360/(2*pi);
        ab=90/rad;
    %Reflectancia
        Refle=0.92;
    %Apertura de la parabola (m)
        W=4*f*tan(ab/2);
    %Area de captación del concentrador (m^2)
        Ac=W*L;
    %Concentración geometrica
        C=Ac/Aro;
    %Radio maximo de concentrador (m)
        RMC=(2*f)/(1+cos(ab));
 
%Otros parametros opticos
    %Errores ópticos (rad)
        sig=0.011;
    %Error de desalineación reflector (grados)
        bet0=0.5;
        bet=bet0/rad;
    %Error de enfoque (m)
        dr=0.0075;
    %Factor de intercepción
        sigma=sig*C;
        beta=bet*C;
        d=dr/Do;
        syms psii
        M=((sin(ab)*(1+ cos(psii))*(1-(2*d)*sin(psii)))-((pi*beta)*(1+cos(ab))))/((sqrt(2)*pi*sigma)*(1+cos(ab)));
        N=((sin(ab)*(1+ cos(psii))*(1+(2*d)*sin(psii)))+((pi*beta)*(1+cos(ab))))/((sqrt(2)*pi*sigma)*(1+cos(ab)));
        q=double(int(((erf(M)-erf(-N))/(1+cos(psii))),0,ab));
        gama=((1 + cos(ab))/(2*sin(ab)))*q
 
%Condiciones ambientales
    %Temparatura ambiente (K)
    Ta=27+273.15;
    %Irradiación directa (W/m^2)
    Gb=950;
    %Velocidad del viento (m/s)
    Vv=1.25;
%Constantes
    %Stefan-Bolzmant (W/m^2K^4)
    SB=5.67e-8;
 
%Balance de energía en el receptor
% Qu=mCp(To-Ti); Considerando que Cp es constante, el la ecuacion de anterior 
% tenemos que hay cuatro posibles variables, si fijamos Qu,m y Ti podemos
% calcular To.
 
%Propiedad del fluido de trabajo agua 
    %Capacidad calorifica (J/kg-K)
        cpf=4209;
    %Densidad (kg/m3)
        denf=983.2;
    %Viscosidad (kg/m-s)
        visf=0.000306;
    %Conductividad termica del fluido (W/m.K)
        kf=0.677;
    %Numero de Prandt
        Prf=(cpf*visf)/kf;
 
%Propiedad del aire 
    %Capacidad calorifica (J/kg-K)
        cpa=1;
    %Densidad (kg/m3)
        dena=1;
    %Viscosidad (kg/m-s)
        visa=1;
    %Conductividad termica del fluido (W/m.K)
        ka=26.3e-3;
    %Numero de Prandt
        Pra=(15.89e-6)/(22.5e-6);
 
syms T
Ts=200
 %Coeficiente radiación
    hr=4*SB*em*(Ts^3);
 %Calculamos el coeficiente de tranferencia del fluido
    %Numero Reynolds
    Ref=(4*m)/(pi*visf*Di);
    %Numero de Nusselt
    if Ref>4000
      Nu=0.23*(Ref^.8)*(Prf^.4);
    else
        Nu=4.36;
    end
 
    hf=(kf/Di)*Nu;
 
%Coeficiente convectivo del viento
Rev=(Vv*Do)/15.89e-6;
if Rev>=0.4 & Rev<4
    B=0.989;
    n=0.33;
elseif Rev>=4 & Rev<40
    B=0.911;
    n=0.385;
elseif Rev>=40 & Rev<4000
    B=0.683;
    n=0.466;
elseif Rev>=4000 & Rev<40000
    B=0.193;
    n=0.618;
elseif Rev>=40000 & Rev<400000
    B=0.027;
    n=0.805;
end
Nuv=(B)*(Rev^n)*(Pra^(1/3))*(0.95);
 
hv=Nuv*(ka/Do);
 
%Calor util
Qu=(gama*abs*Ac*Refle*Gb)-(Aro*(hr+hv)*(Ts-Ta));
 
%Calculo de Ts
 qs=Qu/Ari;
 To=Ti+(Qu/(m*cpf));
%Se estima la Tsii y Tsio
Tsii=Ti+(qs/hf);
Tsio=To+(qs/hf);
T=(Tsii+Tsio)/2;
 
while T~=Ts
    Ts=T;
     %Coeficiente radiación
    hr=4*SB*em*(Ts^3);
 %Calculamos el coeficiente de tranferencia del fluido
    %Numero Reynolds
    Ref=(4*m)/(pi*visf*Di);
    %Numero de Nusselt
    if Ref>4000
      Nu=0.23*(Ref^.8)*(Prf^.4);
    else
        Nu=4.36;
    end
 
    hf=(kf/Di)*Nu;
 
%Coeficiente convectivo del viento
Rev=(Vv*Do)/15.89e-6;
if Rev>=0.4 & Rev<4
    B=0.989;
    n=0.33;
elseif Rev>=4 & Rev<40
    B=0.911;
    n=0.385;
elseif Rev>=40 & Rev<4000
    B=0.683;
    n=0.466;
elseif Rev>=4000 & Rev<40000
    B=0.193;
    n=0.618;
elseif Rev>=40000 & Rev<400000
    B=0.027;
    n=0.805;
end
Nuv=(B)*(Rev^n)*(Pra^(1/3))*(0.95);
 
hv=Nuv*(ka/Do);
 
%Calor util
Qu=(gama*abs*Refle*Ac*Gb)-(Aro*(hr+hv)*(Ts-Ta))
 
%Calculo de Ts
 qs=Qu/Ari;
 To=Ti+(Qu/(m*cpf));
%Se estima la Tsii y Tsio
Tsii=Ti+(qs/hf);
Tsio=To+(qs/hf);
T=(Tsii+Tsio)/2;
end
disp(T)
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