From: Argel G. A. <arg...@gm...> - 2009-07-16 05:06:15
|
Mario Rodriguez escribió: >> Hola Mario, muchas gracias por tu respuesta. >> >> > > Hola, > > Aquí lo que que falla no es el algoritmo, sino la propia expresión que > estás ajustando a los datos, ya que ha encontrado un par (S, Km) cuya > suma es cero, por lo que al anularse el denominador se provoca el error. > > >> ----------------------------------------------------------------------------------------------------- >> Coeficientes_de_la_curva:float(lsquares_estimates(M,[S,V],V=(Vmax*S)/(S+Km),[Vmax,Km])) >> Division by 0 >> #0: lambda([x],ev(MSE,x))(x=[Vmax = 0,Km = -1/10]) >> > > Aquí te dice que que el fallo lo encontró cuando Km = -1/10 > > >> #1: >> lsquares_estimates_exact(mse=('sum(('data[i,2]-'data[i,1]*Vmax/(Km+'data[i,1]))^2,i,1,10))/10,parameters=[Vmax,Km]) >> #2: >> lsquares_estimates(data=matrix([0.1,47.09],[0.5,130.3],[1,216.9],[1.5,263.1],[2,338.6],[3,311.5],[4,390.9],[5,428.8],[7,415....,variables=[S,V],equation=V >> = Vmax*S/(S+Km),parameters=[Vmax,Km],optional_args=[])(lsquares.mac line >> 245) >> > > Y aquí veo que la primera fila de tu matriz es [0.1,47.09], luego > S+Km=0. > > >> -- an error. To debug this try debugmode(true); >> ----------------------------------------------------------------------------------------------------- >> >> > > >> ¿En este caso qué se podría hacer para evitar el problema de la >> división por cero? >> > > Creo que revisar el modelo. > > Un saludo. > > Hola Mario, muchas gracias por tu ayuda. Creo que el modelo de Michaelis-Menten difícilmente puede estar mal, pues es muy usado en cinética enzimática para determinar la constante Km (antes se hacía linearizando la función, pero ahora se pide ajustar directamente la función a los datos experimentales). Había observado ya el caso de que el algoritmo al parece prueba un valor inicial de -0.1 para Km y con el valor de 0.1 para S pues lógicamente se anulan y se produce una división por cero, pero al parecer pasa con cualquier valor inicial que se encuentre como primer dato en la matriz, lo que me parece algo raro. Tal vez la solución sea de otro tipo, pero no imagino cuál. Saludos y que estés bien. -- Argel. |