Matlab - problema con bucle while

 
Vista:

problema con bucle while

Publicado por Lander (5 intervenciones) el 12/11/2016 19:41:04
Hola buenas tardes,

Estoy trabajando con matlab para calcular un diferencial de presión producido por una pala de una turbina hidráulica. A la hora de hacer el estudio de cavitación la presión debe ser mayor a 1000 para que esta no se produzca. para ello, con todos los ángulos puestos y demás aplico un bucle while.

yendo z de 1 a 22

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
while pressure(z)<10^3
 
    entryalfas(z)=entryalfas(z)-1
    new_alfa1=entryalfas;
    new_c1=cm(q)./sind(new_alfa1);
    new_cu1=new_c1.*cosd(new_alfa1);
    %new_cu1s(z,:)=new_cu1;
    new_wu1=du(z)-new_cu1(z);
    new_wu1s(z)=new_wu1;
    new_wm1=cm(q);
    new_w1=sqrt(new_wu1.^2+new_wm1.^2);
    new_w1s(z)=new_w1;
 
    new_alfa2=exitalfas;
    new_c2=cm(q)./sind(new_alfa2);
    new_cu2=new_c2.*cosd(new_alfa2);
    %new_cu2s(z,:)=new_cu2;
    new_wu2=du(z)-new_cu2(z);
    new_wu2s(z)=new_wu2;
    new_wm2=cm(q);
    new_w2=sqrt(new_wu2.^2+new_wm2.^2);
    new_w2s(z)=new_w2;
 
    deltaP=rho.*((new_w1s.^2)-(new_w2s.^2))./2
    deltamax=(6.5*g*rho)+101325;                    %min total depth of 14 metres
    pressure(z)=deltaP(z)-deltamax;
 
 
    if pressure(z)>10^3
        cuf=(new_cu2(z)-new_cu1(z))/2;
    end

El problema es que solo me hace el bucle una vez cuando el valor es negativo en vez de seguir restando entryalfa hasta que la presión sea mayor que 1000.

Alguien me puede ayudar? gracias!
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 Royeth
Val: 3.309
Plata
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

problema con bucle while

Publicado por Royeth (1818 intervenciones) el 12/11/2016 20:00:37
el programa no está bien estructurado o lo montaste incompleto , porque si z va de 1 a 22 entonces es mejor implementar un for , pero supongo que lo tienes antes del while . pero de todos modos veo que el còdigo tiene como una variable de decisión la presión pero en ningún momento se usa para recalcularse que es el objetivo primordial de un while
tambièn tienes que definir el objetivo normalmente estos problemas se implementa lo que es el NPSH requerido y disponible , para dejar cierto margen de seguridad en lo que corresponde a la dinámica de fluidos , pero el objetivo de hacer el estudio es calcular los ángulos más óptimos sin que se presente problema de cavitación?

adjunta el código y si puedes comenta el nombre de tus variables

saludos
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

problema con bucle while

Publicado por Lander (5 intervenciones) el 12/11/2016 20:04:47
No he subido el código entero porque era extremadamente largo pero bueno lo pongo.
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
%FLOW DATA
Q=[0:100:12000];     %m^3/s
nu=12.36*10^-4;     %dynamic viscosity (kg/ms)
L=18;               %m
g=9.81;             %m/s^2
rho=1026;           %kg/m^3
 
%TURBINE DATA & CULVERTS
d=7;                %m
A=pi*d^2/4;         %m^2
N=19;               %number of turbines
L=18;               %m
    %Flow & per turbine
    Qt=Q./N;        %m^3/s
    vc=Qt./A;       %m/s
 
 di=2.8;                   %m     inside diameter
  dr=[di/2:0.1:d/2];        %m     radius diferential 
  Ar=pi*(d^2-di^2)/4;       %m^2   rotor area 
  vr=vt.*(A/Ar);            %m/s   velocity in the rotor
  nrpm=100;                 %rpm   revolution per minute
  n=nrpm/60;                %rps   revolution per second
 
 %BLADE VELOCITY
 du=n*2*pi.*dr;
%  figure
%  bar(du,'blue')
  cm=vr;
 
 
for q= 100
      %we are going to work with a flow speed (1m/s) and 
            %start with the position of the blade. Once we know how the
            %blade is gonna be in that flow, we only need to evaluate that
            %blade in the other flows. 
   z=0;
   while z<length(dr)
         z=z+1;
%VELOCITIES
 
 
 
%  beta=atand(wm1/wuf);
%  alfa=atand(wm1/cuf);
 
%ENTRY
    alfa1=[2:1:89];           %º    all angles posibilities
    c1=cm(q)./sind(alfa1);    %m/s
    cu1=c1.*cosd(alfa1);      %m/s
    cu1s(z,:)=cu1;
    wu1=du(z)-cu1;            %m/s  (problemas con las dimensiones)
    wu1s(z,:)=wu1;            %m/s
    wm1=cm(q);                %m/s
    w1=sqrt(wu1.^2+wm1.^2);   %m/s
    beta1=atand(wm1./wu1);    %º
    beta1s(z,:)=beta1;
 
    w1s(z,:)=w1;              %m/s  all relative velocities at the entry
    T1=[alfa1',beta1',w1'];   %º  º  m/s
  
        %SELECTION OF THE FINAL ANGLES (ENTRY)
            bs=beta1s;
            bs(bs<0)=99.99;
            entryangles=min(bs');
            [x,y]=find(bs'==entryangles(z));
            good_alfa=alfa1(x);
            entryalfas(z)=good_alfa;
  
%EXIT
    alfa2=[2:1:89];           %º
    c2=cm(q)./sind(alfa2);    %m/s
    cu2=c2.*cosd(alfa2);      %m/s
    wu2=du(z)-cu2;            %m/s  (supongo que aquí también)
    wm2=cm(q);                %m/s
    w2=sqrt(wu2.^2+wm2.^2);   %m/s
    beta2=atand(wm2./wu2);    %º
    beta2s(z,:)=beta2;
   
    w2s(z,:)=w2;              %m/s
    T2=[alfa2',beta2',w2'];   %º  º  m/s
 
        %SELECTION OF THE FINAL ANGLES (EXIT)
            bes=beta2s;
            exitangles=max(bes');
            [x,y]=find(bs'==exitangles(z));
            exit_alfa=alfa2(x);
            exitalfas(z)=exit_alfa;
 
            
 
            
            
%NEW TRIAL WITH THE ANGLES 
 finalangles=[entryangles,exitangles];
  
    new_alfa1=entryalfas;
    new_c1=cm(q)./sind(new_alfa1);
    new_cu1=new_c1.*cosd(new_alfa1);
    %new_cu1s(z,:)=new_cu1;                        
    new_wu1=du(z)-new_cu1(z);
    new_wu1s(z)=new_wu1;
    new_wm1=cm(q);
    new_w1=sqrt(new_wu1.^2+new_wm1.^2);
    new_w1s(z)=new_w1;
    
    new_alfa2=exitalfas;
    new_c2=cm(q)./sind(new_alfa2);
    new_cu2=new_c2.*cosd(new_alfa2); 
    %new_cu2s(z,:)=new_cu2;
    new_wu2=du(z)-new_cu2(z);
    new_wu2s(z)=new_wu2;
    new_wm2=cm(q);
    new_w2=sqrt(new_wu2.^2+new_wm2.^2);
    new_w2s(z)=new_w2;
    
    new_ws=[new_w1s',new_w2s'];
    new_ws2=[new_w1s'.^2,new_w2s'.^2];
    deltaP=(rho.*((new_w1s(z)^2)-(new_w2s(z)^2)))./2;
    deltaPs(z)=deltaP;
    
    deltamax=(6.5*g*rho)+101325;
    
    pressure=deltamax-deltaPs;

   
              %m/s
        

   while pressure(z)<10^3
        
        entryalfas(z)=entryalfas(z)-1
        new_alfa1=entryalfas;
        new_c1=cm(q)./sind(new_alfa1);
        new_cu1=new_c1.*cosd(new_alfa1);
        %new_cu1s(z,:)=new_cu1;                        
        new_wu1=du(z)-new_cu1(z);
        new_wu1s(z)=new_wu1;
        new_wm1=cm(q);
        new_w1=sqrt(new_wu1.^2+new_wm1.^2);
        new_w1s(z)=new_w1;

        new_alfa2=exitalfas;
        new_c2=cm(q)./sind(new_alfa2);
        new_cu2=new_c2.*cosd(new_alfa2); 
        %new_cu2s(z,:)=new_cu2;
        new_wu2=du(z)-new_cu2(z);
        new_wu2s(z)=new_wu2;
        new_wm2=cm(q);
        new_w2=sqrt(new_wu2.^2+new_wm2.^2);
        new_w2s(z)=new_w2;
    
        deltaP=rho.*((new_w1s.^2)-(new_w2s.^2))./2
        deltamax=(6.5*g*rho)+101325;                    %min total depth of 14 metres
        pressure(z)=deltaP(z)-deltamax;
        pressure(z)=pressure(
 
        if pressure(z)>10^3 
            cuf=(new_cu2(z)-new_cu1(z))/2;
        end
    
   end
   end
   end


Esto es con un caudal determinado, después me gustaría hacerlo con todo el abanico de caudales del que dispongo. Las variables vienen a ser ángulos de salida y ángulos de entrada de cada parte de la pala, es decir, alfa1, alfa1s new_alfa,entryalfa, exit alfa.... y todos los que se le puedan parecer. Sí estoy intentando encontrar los ángulos óptimos de cada sección de la pala sin embargo no uso NSPH ya que es más interesante hacerlo el estudio de cavitación teniendo como prioridad la velocidad de la pala, o eso me comentaron cuando trabajara con bulbos en energía marina.

Muchas gracias de antemano
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 Royeth
Val: 3.309
Plata
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

problema con bucle while

Publicado por Royeth (1818 intervenciones) el 12/11/2016 20:59:31
el código tiene errores , la variable vt no está definida , y debe ser un vector
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

problema con bucle while

Publicado por Lander (5 intervenciones) el 12/11/2016 21:05:47
vt es una variable que se usa para calcular las pérdidas de carga en la entrada a los culverts (perdón no me sale ahora la palabra en castellano).

El programa no da error, simplemente cuando llego al while y ve que pressure es menor de 10^3 el ángulo baja de 89 a 88 pero no vuelve a repetir la acción. Simplemente quiero saber como hacer para que lo repita hasta que pressure sea mayor de 10^3. Es decir que ese while se repita y se vuelva a repetir hasta que se deje de cumplir la condición.

Es la primera parte que he enviado la que me da problemas, el resto funcionaba perfectamente
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 Royeth
Val: 3.309
Plata
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

problema con bucle while

Publicado por Royeth (1818 intervenciones) el 12/11/2016 21:13:59
copia el código que has montado guardalo con otro nombre y trata de ejecutarlo para que veas que está errado
hasta hay otro errror pressure(z)=pressure( %no está completo

copiando las primeras lineas que has montado , dime en qué parte del código que has montado , está la variable vt definida

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
%FLOW DATA
Q=[0:100:12000]; %m^3/s
nu=12.36*10^-4; %dynamic viscosity (kg/ms)
L=18; %m
g=9.81; %m/s^2
rho=1026; %kg/m^3
 
%TURBINE DATA & CULVERTS
d=7; %m
A=pi*d^2/4; %m^2
N=19; %number of turbines
L=18; %m
%Flow & per turbine
Qt=Q./N; %m^3/s
 
 
vc=Qt./A; %m/s
 
di=2.8; %m inside diameter
dr=[di/2:0.1:d/2]; %m radius diferential
Ar=pi*(d^2-di^2)/4; %m^2 rotor area
vr=vt.*(A/Ar); %m/s velocity in the rotor


por otro lado te repito que el problema lo tienes en el recalculamiento de pressure
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

problema con bucle while

Publicado por Lander (5 intervenciones) el 12/11/2016 21:20:24
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
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
%WORK WITH TURBINES OF 7 METRES
 
%FLOW DATA
Q=[0:100:12000];     %m^3/s
nu=12.36*10^-4;     %dynamic viscosity (kg/ms)
L=18;               %m
g=9.81;             %m/s^2
rho=1026;           %kg/m^3
 
%TURBINE DATA & CULVERTS
d=7;                %m
A=pi*d^2/4;         %m^2
N=19;               %number of turbines
L=18;               %m
    %Flow & per turbine
    Qt=Q./N;        %m^3/s
    vc=Qt./A;       %m/s
 
%SECONDARY LOSSES (TRANSITION FROM FREE FLOW TO THE CULVERTS
    %could be important for the final amount of power
 
 
%REYNOLDS NUMBER
%to calculate the energy losses in the culverts
Re=(rho*d.*vc)./A;
Tablare=[Qt',Re'];
 
%Once Reynolds is known there are different ways of calculate f (friction
%factor) and therefore, different ways of calculate the energy losses.
if Re<2000
    f=64./Re;
elseif 2000<Re<10^5
    f=0.3164./Re.^0.25;
end
 
%Now f is known, the energy losses can be calculated 
hr=(8.*f*L.*(Qt.^2))./(g*(pi^2)*d^5);
Tabshr=[Qt',hr'];
 
%SECONDARY LOSSES WITH THE APARITION OF THE TURBINE??
 
 
%SPEED IN THE TURBINE
%We are going to apply Bernouilli to know what's the speed in the turbine
%For that we know that B1=B2+hr
 vt=sqrt((vc.^2)-(hr.*2*g));
 
 %PLOT OF THE RESULTS IN ENERGY LOSSES
%  figure
%  subplot(2,2,[1,2])
%  plot(Q,hr)
%  title('Losses in the culvert')
%  xlabel('flow of the barrier (m^3/s)')
%  ylabel('total losses (wcm)')
%  subplot(2,2,3)
%  plot(Q,Qt,'--')
%  title('Comparisson of flows')
%  xlabel('flow of the barrier (m^3/s)')
%  ylabel('flow of the turbine (m^3/s)')
%  subplot(2,2,4)
%  plot(Q,vc,Q,vt,'--')
%   title('Comparisson of velocities')
%  xlabel('flow of the barrier (m^3/s)')
%  ylabel('velocities (m/s)')
%  
 
%Once the speeds in the turbine are known, the studio of the velocities in
%the blades can start
 
%SPEED TRIANGLES
%now we are going to divide the blades in 0.1 width parts


  di=2.8;                   %m     inside diameter
  dr=[di/2:0.1:d/2];        %m     radius diferential 
  Ar=pi*(d^2-di^2)/4;       %m^2   rotor area 
  vr=vt.*(A/Ar);            %m/s   velocity in the rotor
  nrpm=100;                 %rpm   revolution per minute
  n=nrpm/60;                %rps   revolution per second
  
 %BLADE VELOCITY
 du=n*2*pi.*dr;
%  figure
%  bar(du,'blue')
  cm=vr;
  
  for q= 100
      %we are going to work with a flow speed (1m/s) and 
            %start with the position of the blade. Once we know how the
            %blade is gonna be in that flow, we only need to evaluate that
            %blade in the other flows. 
   z=0;
   while z<length(dr)
         z=z+1;
%VELOCITIES
 
 

%  beta=atand(wm1/wuf);
%  alfa=atand(wm1/cuf);
 
%ENTRY
    alfa1=[2:1:89];           %º    all angles posibilities
    c1=cm(q)./sind(alfa1);    %m/s
    cu1=c1.*cosd(alfa1);      %m/s
    cu1s(z,:)=cu1;
    wu1=du(z)-cu1;            %m/s  (problemas con las dimensiones)
    wu1s(z,:)=wu1;            %m/s
    wm1=cm(q);                %m/s
    w1=sqrt(wu1.^2+wm1.^2);   %m/s
    beta1=atand(wm1./wu1);    %º
    beta1s(z,:)=beta1;
  
    w1s(z,:)=w1;              %m/s  all relative velocities at the entry
    T1=[alfa1',beta1',w1'];   %º  º  m/s
 
        %SELECTION OF THE FINAL ANGLES (ENTRY)
            bs=beta1s;
            bs(bs<0)=99.99;
            entryangles=min(bs');
            [x,y]=find(bs'==entryangles(z));
            good_alfa=alfa1(x);
            entryalfas(z)=good_alfa;
  
%EXIT
    alfa2=[2:1:89];           %º
    c2=cm(q)./sind(alfa2);    %m/s
    cu2=c2.*cosd(alfa2);      %m/s
    wu2=du(z)-cu2;            %m/s  (supongo que aquí también)
    wm2=cm(q);                %m/s
    w2=sqrt(wu2.^2+wm2.^2);   %m/s
    beta2=atand(wm2./wu2);    %º
    beta2s(z,:)=beta2;
   
    w2s(z,:)=w2;              %m/s
    T2=[alfa2',beta2',w2'];   %º  º  m/s
 
        %SELECTION OF THE FINAL ANGLES (EXIT)
            bes=beta2s;
            exitangles=max(bes');
            [x,y]=find(bs'==exitangles(z));
            exit_alfa=alfa2(x);
            exitalfas(z)=exit_alfa;
 
            
 
            
            
%NEW TRIAL WITH THE ANGLES 
 finalangles=[entryangles,exitangles];
  
    new_alfa1=entryalfas;
    new_c1=cm(q)./sind(new_alfa1);
    new_cu1=new_c1.*cosd(new_alfa1);
    %new_cu1s(z,:)=new_cu1;                        
    new_wu1=du(z)-new_cu1(z);
    new_wu1s(z)=new_wu1;
    new_wm1=cm(q);
    new_w1=sqrt(new_wu1.^2+new_wm1.^2);
    new_w1s(z)=new_w1;
    
    new_alfa2=exitalfas;
    new_c2=cm(q)./sind(new_alfa2);
    new_cu2=new_c2.*cosd(new_alfa2); 
    %new_cu2s(z,:)=new_cu2;
    new_wu2=du(z)-new_cu2(z);
    new_wu2s(z)=new_wu2;
    new_wm2=cm(q);
    new_w2=sqrt(new_wu2.^2+new_wm2.^2);
    new_w2s(z)=new_w2;
    
    new_ws=[new_w1s',new_w2s'];
    new_ws2=[new_w1s'.^2,new_w2s'.^2];
    deltaP=(rho.*((new_w1s(z)^2)-(new_w2s(z)^2)))./2;
    deltaPs(z)=deltaP;
    
    deltamax=(6.5*g*rho)+101325;
    
    pressure=deltamax-deltaPs;

   
              %m/s
        

   while pressure(z)<10^3
        
        entryalfas(z)=entryalfas(z)-1
        new_alfa1=entryalfas;
        new_c1=cm(q)./sind(new_alfa1);
        new_cu1=new_c1.*cosd(new_alfa1);
        %new_cu1s(z,:)=new_cu1;                        
        new_wu1=du(z)-new_cu1(z);
        new_wu1s(z)=new_wu1;
        new_wm1=cm(q);
        new_w1=sqrt(new_wu1.^2+new_wm1.^2);
        new_w1s(z)=new_w1;

        new_alfa2=exitalfas;
        new_c2=cm(q)./sind(new_alfa2);
        new_cu2=new_c2.*cosd(new_alfa2); 
        %new_cu2s(z,:)=new_cu2;
        new_wu2=du(z)-new_cu2(z);
        new_wu2s(z)=new_wu2;
        new_wm2=cm(q);
        new_w2=sqrt(new_wu2.^2+new_wm2.^2);
        new_w2s(z)=new_w2;
    
        deltaP=rho.*((new_w1s.^2)-(new_w2s.^2))./2
        deltamax=(6.5*g*rho)+101325;                    %min total depth of 14 metres
        pressure(z)=deltaP(z)-deltamax;


        if pressure(z)>10^3 
            cuf=(new_cu2(z)-new_cu1(z))/2;
        end

   end
   end
   end

El código es este, completo. Lo he corrido y no da problemas. Y como recalculo pressure?
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

problema con bucle while

Publicado por Lander (5 intervenciones) el 12/11/2016 23:59:49
Hola Royeth,

primero muchas gracias por todo. Lo de recalcular la presión viene dado porque con un cambio del ángulo el valor de pressure aumenta, de ahí que en la última línea ponga pressure(z)=deltaP(z)-deltamax;

El error, que supongo que será algo muy básico pero que soy incapaz de ver, es que quiero que ese valor final vuelva a pasar por while y no entiendo porque no lo hace. porque si por ejemplo pongo un contador

1
2
3
4
5
6
n=0
while n<15
 
n=n+1
 
end

Lo hace y a mi entender esto es lo mismo ya que todos los cambios que van dentro de mi while están dirigidos a que la presión suba

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
while pressure(z)<10^3  %presión inicial que tenemos
 
entryalfas(z)=entryalfas(z)-1   % se baja el ángulo de entrada para que la presión suba
 
%Cálculos necesarios para poder calcular la nueva presión
new_alfa1=entryalfas;
new_c1=cm(q)./sind(new_alfa1);
new_cu1=new_c1.*cosd(new_alfa1);
%new_cu1s(z,:)=new_cu1; 
new_wu1=du(z)-new_cu1(z);
new_wu1s(z)=new_wu1;
new_wm1=cm(q);
new_w1=sqrt(new_wu1.^2+new_wm1.^2);
new_w1s(z)=new_w1;
 
new_alfa2=exitalfas;
new_c2=cm(q)./sind(new_alfa2);
new_cu2=new_c2.*cosd(new_alfa2);
%new_cu2s(z,:)=new_cu2;
new_wu2=du(z)-new_cu2(z);
new_wu2s(z)=new_wu2;
new_wm2=cm(q);
new_w2=sqrt(new_wu2.^2+new_wm2.^2);
new_w2s(z)=new_w2;
deltaP=rho.*((new_w1s.^2)-(new_w2s.^2))./2
deltamax=(6.5*g*rho)+101325; %min total depth of 14 metres
 
%Nuevo valor de la presión
pressure(z)=deltaP(z)-deltamax;
 
end

Sin embargo cuando llego aquí el programa sigue en vez de volver y recalcular. Eso es lo que no entiendo, el por qué no lo hace
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 Royeth
Val: 3.309
Plata
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

problema con bucle while

Publicado por Royeth (1818 intervenciones) el 13/11/2016 01:12:09
revisa bien las conversiones , no todos los valores de presión están entrando al while , el primero que entra es un valor negativo -1.0433e+04 , los otros eran valores más grandes que mil y no entraron , y este que entra en el recalculo se hace más grande que 1000 y por tanto no vuelve a entrar , ya que toma valor de 5.4183e+03

después entra otro negativo -3.0850e+04 y entra al while y se transforma en 2.5551e+04 y como es mayor que mil no vuelve a entrar , luego entra -5.2624e+04 se convierte en 4.7041e+04 y no vuelve a entrar , el while está funcionando perfectamente , el problema lo tienes en el procedimiento que estás haciendo , así que debes verificar la conversión y todo el planteamiento del problema


AQUI la respuesta : no lo hace simplemente porque cuando lo recalcula se hace más grande que mil e incluso unos no entran ni una sola vez porque desde el principio son más grandes que mil

saludos
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