Matlab - Ayuda con ODE15S

   
Vista:

Ayuda con ODE15S

Publicado por Andres Mendiburu andresmendi@hotmail.com (11 intervenciones) el 29/11/2011 17:55:39
Hola a todos, espera alguien me pueda ayudar, y desde ya gracias a todos los que lean este mensaje y especialmente a aquellos que compartan sus ideas. Mi problema es el siguiente.

Estoy intentando resolver un sistema de ecuaciones diferenciales ordinarias no lienales rígido (Stiff), proveniente de un problema de combustión de un gas (15 ecuaciones), para esto intento utilizar el ODE15S pero me sale el siguiente mensaje cuando intento resolver:

Warning: Matrix is singular, close to singular or badly scaled.
Results may be inaccurate. RCOND = NaN.

Como no conosco bien como opera el ODE15S no estoy seguro de los que esta fallando, calcule manualmente los valores de las funciones en el punto inicial y todas parecen estar correctas, pero el mensaje habla de una matriz que yo supongo esta relacionada con el método de solución de ODE15S.

Muchas gracias de nuevo y espero sus respuestas e ideas que me ayudaran bastante en la resolución de éste problema.

Att.

Andres Mendiburu.
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

Ayuda con ODE15S

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3441 intervenciones) el 30/11/2011 01:43:14
hola.
Pero deberias poner por lo menos tu sistema de ecuaciones.
Porque como esta tu pregunta, creo nadie te va contestar, pues hay poca informacion, el mensje de matlab te esta diciendo que la matriz es singular, es decir que tu matriz no tiene inversa.

Saludos.
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
Profesor de Metodos Numericos con Matlab
PROGRAMADOR EN MATLAB
jjcc94@hotmail.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

Ayuda con ODE15S

Publicado por Andres Mendiburu andresmendi@hotmail.com (11 intervenciones) el 30/11/2011 02:36:58
Hola, Gracias por la respuesta, en el transcurso del sía continue analizando ara encontrar el error y lo encontré, ahora ya no me dice que la matriz es singular pero aparece "Busy" y se queda asi, lo dejé 1 hora corriendo y continuaba así, colocaré las ecuaciones tal como las escribé en matlab.

Los "W" representan los ratios de comsumo o producción de las especies (derivadas de la concentración en función del tiempo), y todas las otras variables que aparecen son funciones de la temperatura, la función dy(15) representa la derivada de la temperatura en función del tiempo.

Por ejemplo

kf1 = A(1)*(y(15))^n(1)*exp(-E(1)/(R1*y(15))), las otras kf son funciones del mismo tipo con valores diferentes de A,n y E.

kb son determinadas a partir de las kf utilizando las energías de gigbs de la reacción. Las energías de Gigbs son polinomios de la temperatura.

Las capacidades caloríficas (Cp) y las entalpías (H) son polinomios de la temperatura.

WO2 = -kf1*y(1)*y(4)+kb1*y(5)*y(3)+kf6*y(3)*y(3)*(y(10)+2.4*y(2)+15.4*y(6)+1.75*y(8)+3.6*y(9))-kb6*y(1)*(y(10)+2.4*y(2)+15.4*y(6)+1.75*y(8)+3.6*y(9))-kf11*y(1)*y(8)+kb11*y(9)*y(3)-kf13*y(1)*y(11)+kb13*y(12)*y(3)+kf17*y(14)*y(3)-kb17*y(12)*y(1)-kf18*y(1)*y(4)*(y(10)+0.75*y(8)+1.5*y(9))+kb18*y(7)*(y(10)+0.75*y(8)+1.5*y(9))+kf21*y(13)*y(3)-kb21*y(10)*y(1);

WH2 = -kf2*y(2)*y(3)+kb2*y(5)*y(4)-kf3*y(2)*y(5)+kb3*y(6)*y(4)+kf5*y(4)*y(4)*y(10)-kb5*y(2)*y(10);

WO = kf1*y(1)*y(4)-kb1*y(5)*y(3)-kf2*y(2)*y(3)+kb2*y(5)*y(4)+kf4*y(5)*y(5)-kb4*y(6)*y(3)-kf6*y(3)*y(3)*(y(10)+2.4*y(2)+15.4*y(6)+1.75*y(8)+3.6*y(9))+kb6*y(1)*(y(10)+2.4*y(2)+15.4*y(6)+1.75*y(8)+3.6*y(9))-kf10*y(8)*y(3)*(y(10)+2*y(2)+6*y(1)+6*y(6)+1.5*y(8)+3.5*y(9))+kb10*y(9)*(y(10)+2*y(2)+6*y(1)+6*y(6)+1.5*y(8)+3.5*y(9))+kf11*y(1)*y(8)-kb11*y(9)*y(3)+kf12*y(12)*y(11)-kb12*y(3)*y(10)+kf13*y(1)*y(11)-kb13*y(12)*y(3)-kf17*y(14)*y(3)+kb17*y(11)*y(1)+kf19*y(13)*(y(10)+2*y(2)+6*y(6)+1.5*y(8)+2*y(9))-kb19*y(10)*y(3)*(y(10)+2*y(2)+6*y(6)+1.5*y(8)+2*y(9))-kf20*y(13)*y(3)+kb20*y(11)*y(11)-kf21*y(13)*y(3)+kb21*y(10)*y(1);

WH = -kf1*y(1)*y(4)+kb1*y(5)*y(3)+kf2*y(2)*y(3)-kb2*y(5)*y(4)+kf3*y(2)*y(5)-kb3*y(6)*y(4)-kf5*y(4)*y(4)*y(10)+kb5*y(2)*y(10)-kf7*y(4)*y(5)*(y(10)+0.73*y(2)+3.65*y(6))+kb7*y(6)*(y(10)+0.73*y(2)+3.65*y(6))+kf8*y(8)*y(5)-kb8*y(9)*y(4)+kf14*y(11)*y(5)-kb14*y(12)*y(4)-kf16*y(14)*y(4)+kb16*y(12)*y(5)-kf18*y(1)*y(4)*(y(10)+0.75*y(8)+1.5*y(9))+kb18*y(7)*(y(10)+0.75*y(8)+1.5*y(9));

WOH = kf1*y(1)*y(4)-kb1*y(5)*y(3)+kf2*y(2)*y(3)-kb2*y(5)*y(4)-kf3*y(2)*y(5)+kb3*y(6)*y(4)-kf4*y(5)*y(5)+kb4*y(6)*y(3)-kf7*y(4)*y(5)*(y(10)+0.73*y(2)+3.65*y(6))+kb7*y(6)*(y(10)+0.73*y(2)+3.65*y(6))-kf8*y(8)*y(5)+kb8*y(9)*y(4)+kf9*y(8)*y(7)-kb9*y(9)*y(5)-kf14*y(11)*y(5)+kb14*y(12)*y(4)+kf15*y(12)*y(7)-kb15*y(14)*y(5)+kf16*y(14)*y(4)-kb16*y(12)*y(5);

WH2O = kf3*y(2)*y(5)-kb3*y(6)*y(4)+kf4*y(5)*y(5)-kb4*y(6)*y(4)+kf7*y(4)*y(5)*(y(10)+0.73*y(2)+3.65*y(6))-kb7*y(6)*(y(10)+0.73*y(2)+3.65*y(6));

WHO2 = -kf9*y(8)*y(7)+kb9*y(9)*y(5)+kf18*y(1)*y(4)*(y(10)+0.75*y(8)+1.5*y(9))-kb18*y(7)*(y(10)+0.75*y(8)+1.5*y(9));

WCO = -kf8*y(8)*y(5)+kb8*y(9)*y(4)-kf9*y(8)*y(7)+kb9*y(9)*y(5)-kf10*y(8)*y(3)*(y(10)+2*y(2)+6*y(1)+6*y(6)+1.5*y(8)+3.5*y(9))+kb10*y(9)*(y(10)+2*y(2)+6*y(1)+6*y(6)+1.5*y(8)+3.5*y(9))-kf11*y(8)*y(1)+kb11*y(9)*y(3);

WCO2 = kf8*y(8)*y(5)-kb8*y(9)*y(4)+kf9*y(8)*y(7)-kb9*y(9)*y(5)+kf10*y(8)*y(3)*(y(10)+2*y(2)+6*y(1)+6*y(6)+1.5*y(8)+3.5*y(9))-kb10*y(9)*(y(10)+2*y(2)+6*y(1)+6*y(6)+1.5*y(8)+3.5*y(9))+kf11*y(8)*y(1)-kb11*y(9)*y(3);

WN2 = kf12*y(12)*y(11)-kb12*y(3)*y(10)+kf19*y(13)*(y(10)+2*y(2)+6*y(6)+1.5*y(8)+2*y(9))-kb19*y(3)*y(10)*(y(10)+2*y(2)+6*y(6)+1.5*y(8)+2*y(9))+kf21*y(3)*y(13)-kb21*y(1)*y(10);

WN = -kf12*y(12)*y(11)+kb12*y(3)*y(10)-kf13*y(11)*y(1)+kb13*y(11)*y(3)-kf14*y(11)*y(5)+kb14*y(12)*y(4);

WNO = -kf12*y(12)*y(11)+kb12*y(3)*y(10)+kf13*y(11)*y(1)-kb13*y(12)*y(3)+kf14*y(11)*y(5)-kb14*y(12)*y(4)-kf15*y(12)*y(7)+kb15*y(14)*y(5)+kf16*y(14)*y(4)-kb16*y(12)*y(5)+kf17*y(14)*y(3)-kb17*y(12)*y(1)+kf20*y(13)*y(3)-kb20*y(12)*y(12);

WN2O = -kf19*y(13)*(y(10)+2*y(2)+6*y(6)+1.5*y(8)+2*y(9))+kb19*y(10)*y(3)*(y(10)+2*y(2)+6*y(6)+1.5*y(8)+2*y(9))-kf20*y(13)*y(3)+kb20*y(12)*y(12)-kf21*y(13)*y(3)+kb21*y(10)*y(1);

WNO2 = kf15*y(12)*y(7)-kb15*y(14)*y(5)-kf16*y(14)*y(4)+kb16*y(12)*y(5)-kf17*y(14)*y(3)+kb17*y(12)*y(1);

%Differenctial Equations

dy=zeros(15,1);

dy(1) = WO2;
dy(2) = WH2;
dy(3) = WO;
dy(4) = WH;
dy(5) = WOH;
dy(6) = WH2O;
dy(7) = WHO2;
dy(8) = WCO;
dy(9) = WCO2;
dy(10)= WN2;
dy(11)= WN;
dy(12)= WNO;
dy(13)= WN2O;
dy(14)= WNO2;
dy(15)= (R*y(15)*(WO2+WH2+WO+WH+WOH+WH2O+WHO2+WCO+WCO2+WN2+WN+WNO+WN2O+WNO2)-(HO2*WO2+HH2*WH2+HO*WO+HH*WH+HOH*WOH+HH2O*WH2O+HHO2*WHO2+HCO*WCO+HCO2*WCO2+HN2*WN2+HN*WN+HNO*WNO+HN2O*WN2O+HNO2*WNO2))/(y(1)*(Cp_O2-R)+y(2)*(Cp_H2-R)+y(3)*(Cp_O-R)+y(4)*(Cp_H-R)+y(5)*(Cp_OH-R)+y(6)*(Cp_H2O-R)+y(7)*(Cp_HO2-R)+y(8)*(Cp_CO-R)+y(9)*(Cp_CO2-R)+y(10)*(Cp_N2-R)+y(11)*(Cp_N-R)+y(12)*(Cp_NO-R)+y(13)*(Cp_N2O-R)+y(14)*(Cp_NO2-R));

Bueno como dije ahora el programa se toma demasiado tiempo y no me da una respuesta, no sé si en algún momento lo haría suponiendo que lo deje correr por mucho más. Como vez la forma en que escribí las ecuaciones no es muy sofisticada pero no sé si eso justifica que el programa tarde tanto.

Gracias por la respuesta.
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

Ayuda con ODE15S

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3441 intervenciones) el 30/11/2011 02:41:00
humm dificil de comprender.
Mejor mandame tu codigo que haz avanzado a mi correo.

Saludos.
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
Profesor de Metodos Numericos con Matlab
PROGRAMADOR EN MATLAB
jjcc94@hotmail.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

Ayuda con ODE15S

Publicado por Andres Mendiburu andresmendi@hotmail.com (11 intervenciones) el 30/11/2011 06:06:51
Hola,

El problema quedó resuelto gracias a la ayuda de José, que incluso se tomó el trabajo de mejorar el código que escribí.

Muchas gracias por la ayuda brindada, me alegra que exista este espacio donde personas que no tenemos mucho conocimiento en Matlab podamos despejar las dudas.
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

Ayuda con ODE15S

Publicado por Alex aguilar_rz@hotmail.com (1 intervención) el 07/08/2012 04:17:33
Hola yo tengo el mismo problema como fue q lo resolviste?? pero yo solo tengo 3 ecuaciones diferenciales!! supongo es mas facil........ mi matlab se queda en busy por mas de 2 horas al intentar resolver las escuaciones........ te agradeceria me digas como te ayudaron gracias!! o alguien q me pueda ayudar? aqui les dejo las ecuaciones q intento reproducir....http://demonstrations.wolfram.com/ChaoticDynamicsOfAModulatedSemiconductorLaser/
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

Ayuda con ODE15S

Publicado por Ana (1 intervención) el 14/12/2015 18:23:38
Hola a todos,

estoy intentando resolver un sistema de ecuaciones diferenciales no linales que constituyen los balances de materia y energía de un problema de reactores químicos en estado no estacionario. He usado la ode15s, pero me sale el siguiente error:

Warning: Failure at t=2.174547e-003. Unable to meet integration tolerances without reducing the step size below the smallest
value allowed (6.938894e-018) at time t.

Si en lugar de la ode15s uso la 23s, no aparece pero el sistema tarda mucho y no termina en dar ninguna solución. He verificado las ecuaciones y están correctoas, pero no encuentro la forma de que el problema se resuelva.

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