Matlab - ayuda porfa

 
Vista:

ayuda porfa

Publicado por elianys (2 intervenciones) el 21/03/2008 23:41:31
hola necesito q alguien me ayude
estoy haciendo un programa en matlab y quiero ponerle que haga los calculos para cierto intervalo de valores y q si no esta dentro del rango me lo rechace. estaba trabajando con el comando if, y me han pasado dos cosas: uno, que me hace los calculos para cualquier valor y/o dos, para ninguno y no quiero eso. si alguien me dice la forma correcta para usarlos se lo agradeceria muchisisisisisisisisimo. favor responder lo mas pronto posible (antes del lunes porfa). muchas 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

RE:ayuda porfa

Publicado por Kike (304 intervenciones) el 22/03/2008 21:50:00
Es de mucha utilidad que pongas parte del código fuente de tu programa para ver dónde está el problema.

Veamos un ejemplo. Este programa trabaja con un vector fila de cualquier cantidad de elementos. Si el elemento es mayor que 15 y menor que 24 entonces lo suma a un acumulador llamado SUMA y al final presenta los resultados.

function prueba(x)
% el usuario debe introducir un vector fila

suma=0; % acumulador de todos los valores mayores que 15 y menores que 24

for k=1:length(x)
if x(k)>15 && x(k)<24
suma=suma+x(k);
end % fin de if
end % fin de for

fprintf('Los elementos mayores que 15 y menores que 24 suman en total: %d', suma);
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

RE:ayuda porfa

Publicado por elianys (1 intervención) el 22/03/2008 22:33:09
muchas gracias por tu ayuda.
con lo q me dijiste mas lo q hice neceando matlab logre hacer lo q queria. si tienes algo de tiempo me gustaria saber cual es el comando para repetir el input. muchas gracias
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

RE:ayuda porfa

Publicado por Kike (304 intervenciones) el 23/03/2008 04:34:12
Para repetir un input:

n=input('¿Cuántos elementos tiene el vector? ');

vector=[ ];

for k=1:n
fprintf('Digite el %do. elemento del vector: ',k);
vector(k)=input(' ');
end

vector

%%%%%%%%%%%%%%%%%%%%%%%%%

Pero esto se puede hacer más rápido si lo que se necesita es solamente un vector:
vector=input('Digite 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

RE:ayuda porfa

Publicado por elianys (2 intervenciones) el 23/03/2008 22:41:15
hola. ahora no te entiendo lo q me dices. te voy a mandar el programa q yo hice. lo q yo quiero hacer es q despues de q me rechace el valor me vuelva a pedir la temperatura hasta q este correcta. si tienes tiempo dime como hacerlo. muchisisisisisisisisimas gracias.

el programa es este:

clc
disp('==============================================')
disp(' ')
disp(' PARCIAL DE DISEÑO DE PLANTAS I ');
disp(' PRODUCCIÓN DE CLORURO DE ALILO A PARTIR DE PROPILENO Y CLORO')
disp(' ')
disp('==============================================')
disp(' ')
p = input('producción de cloruro de alilo al 99.5%wt (Kg/año) = ');
rr=5;
T = input('Temperatura entrada al reactor (ºC) = ');
if T>=440 & T<=520
s1=-3.3333e-6;
s2=0.0054214;
s3=-2.9902;
s4=563.28;
s=(s1*(T^3))+(s2*(T^2))+(s3*T)+s4;
r1=-9.375e-8;
r2=0.00015786;
r3=-0.090105;
r4=17.56;
r=(r1*(T^3))+(r2*(T^2))+(r3*T)+r4;
c1=-8.7261e-20;
c2=-3.2143e-5;
c3=0.036357;
c4=-9.224;
c=(c1*(T^3))+(c2*(T^2))+(c3*T)+c4;
allyl6=((0.995*p)*(100/99))/76.45;
dicloro6=allyl6/((r+1)*s);
doscloro6=dicloro6*r;
hcl6=allyl6+doscloro6+2*dicloro6;
cloro5=hcl6/c;
propileno5=rr*cloro5;
cloro6=cloro5-hcl6;
propileno6=propileno5-allyl6-doscloro6-dicloro6;
propileno8=propileno6;
propileno4=propileno5;
propileno3=propileno4;
propileno1=propileno3-propileno8;
cloro12=cloro6;
cloro4=cloro5;
cloro2=cloro4-cloro12;
hcl9=hcl6;
Hcl9=36.45*hcl9;
corriente9=Hcl9*(100/32);
h2o=0.68*corriente9;
Ganancia_con_recirculado=(1.72*p)+(0.075*corriente9)-(0.20*(dicloro6*110.9))-(0.2*((76.45*doscloro6)-(0.005*p)))-(0.0003*h2o)-(0.47*(propileno1*42))-(0.18*(cloro2*70.9))
plot(T,Ganancia_con_recirculado,'o'), hold on
s1=-3.3333e-6;
s2=0.0054214;
s3=-2.9902;
s4=563.28;
s=(s1*(T^3))+(s2*(T^2))+(s3*T)+s4;
r1=-9.375e-8;
r2=0.00015786;
r3=-0.090105;
r4=17.56;
r=(r1*(T^3))+(r2*(T^2))+(r3*T)+r4;
c1=-8.7261e-20;
c2=-3.2143e-5;
c3=0.036357;
c4=-9.224;
c=(c1*(T^3))+(c2*(T^2))+(c3*T)+c4;
allyl6=((0.995*p)*(100/99))/76.45;
dicloro6=allyl6/((r+1)*s);
doscloro6=dicloro6*r;
hcl6=allyl6+doscloro6+2*dicloro6;
cloro5=hcl6/c;
propileno5=rr*cloro5;
cloro6=cloro5-hcl6;
propileno6=propileno5-allyl6-doscloro6-dicloro6;
propileno8=propileno6;
propileno4=propileno5;
propileno3=propileno4;
propileno1=propileno3-propileno8;
cloro4=cloro5;
cloro2=cloro4;
hcl9=hcl6+(2*cloro6);
Hcl9=36.45*hcl9;
corriente9=Hcl9*(100/32);
h2o=(0.68*corriente9)+(18*cloro6);
Ganancia_reaccion=(1.72*p)+(0.075*corriente9)-(0.20*(dicloro6*110.9))-(0.2*((76.45*doscloro6)-(0.005*p)))-(0.0003*h2o)-(0.47*(propileno1*42))-(0.18*(cloro2*70.9))
plot(T,Ganancia,'o'), hold on
for T=440:0.5:520
s1=-3.3333e-6;
s2=0.0054214;
s3=-2.9902;
s4=563.28;
s=(s1*(T^3))+(s2*(T^2))+(s3*T)+s4;
r1=-9.375e-8;
r2=0.00015786;
r3=-0.090105;
r4=17.56;
r=(r1*(T^3))+(r2*(T^2))+(r3*T)+r4;
c1=-8.7261e-20;
c2=-3.2143e-5;
c3=0.036357;
c4=-9.224;
c=(c1*(T^3))+(c2*(T^2))+(c3*T)+c4;
allyl6=((0.995*p)*(100/99))/76.45;
dicloro6=allyl6/((r+1)*s);
doscloro6=dicloro6*r;
hcl6=allyl6+doscloro6+2*dicloro6;
cloro5=hcl6/c;
propileno5=rr*cloro5;
cloro6=cloro5-hcl6;
propileno6=propileno5-allyl6-doscloro6-dicloro6;
propileno8=propileno6;
propileno4=propileno5;
propileno3=propileno4;
propileno1=propileno3-propileno8;
cloro12=cloro6;
cloro4=cloro5;
cloro2=cloro4-cloro12;
hcl9=hcl6;
Hcl9=36.45*hcl9;
corriente9=Hcl9*(100/32);
h2o=0.68*corriente9;
Ganancia=(1.72*p)+(0.075*corriente9)-(0.20*(dicloro6*110.9))-(0.2*((76.45*doscloro6)-(0.005*p)))-(0.0003*h2o)-(0.47*(propileno1*42))-(0.18*(cloro2*70.9));
plot(T,Ganancia,'k'), hold on
s1=-3.3333e-6;
s2=0.0054214;
s3=-2.9902;
s4=563.28;
s=(s1*(T^3))+(s2*(T^2))+(s3*T)+s4;
r1=-9.375e-8;
r2=0.00015786;
r3=-0.090105;
r4=17.56;
r=(r1*(T^3))+(r2*(T^2))+(r3*T)+r4;
c1=-8.7261e-20;
c2=-3.2143e-5;
c3=0.036357;
c4=-9.224;
c=(c1*(T^3))+(c2*(T^2))+(c3*T)+c4;
allyl6=((0.995*p)*(100/99))/76.45;
dicloro6=allyl6/((r+1)*s);
doscloro6=dicloro6*r;
hcl6=allyl6+doscloro6+2*dicloro6;
cloro5=hcl6/c;
propileno5=rr*cloro5;
cloro6=cloro5-hcl6;
propileno6=propileno5-allyl6-doscloro6-dicloro6;
propileno8=propileno6;
propileno4=propileno5;
propileno3=propileno4;
propileno1=propileno3-propileno8;
cloro4=cloro5;
cloro2=cloro4;
hcl9=hcl6+(2*cloro6);
Hcl9=36.45*hcl9;
corriente9=Hcl9*(100/32);
h2o=(0.68*corriente9)+(18*cloro6);
Ganancia=(1.72*p)+(0.075*corriente9)-(0.20*(dicloro6*110.9))-(0.2*((76.45*doscloro6)-(0.005*p)))-(0.0003*h2o)-(0.47*(propileno1*42))-(0.18*(cloro2*70.9));
plot(T,Ganancia,'r'), hold on
title('Rendimiento del proceso de producción de cloruro de alilo', 'FontSize', 12);
xlabel('Temperatura', 'FontSize',12);
ylabel('Ganancia', 'FontSize', 12)
end
else
disp('el reactor no puede trabajar en estas condiciones')
end
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

RE:ayuda porfa

Publicado por Kike (304 intervenciones) el 24/03/2008 14:38:57
p = input('producción de cloruro de alilo al 99.5%wt (Kg/año) = ');
rr=5;
T = input('Temperatura entrada al reactor (ºC) = ');

% Si la temperatura no está dentro del rango, entonces vuelve a pedirla.
while T<440 || T>520
disp('El valor de temperatura no es válido. Vuelva a introducir otro valor.');
T = input('Temperatura entrada al reactor (ºC) = ');
end % fin de while

% Luego sigue con el resto del código fuente
s1=-3.3333e-6;
s2=0.0054214;
s3=-2.9902;
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