## maxima-lang-es — Spanish-language discussion of the Maxima computer algebra system

You can subscribe to this list here.

 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 Jan Feb Mar Apr May Jun Jul Aug Sep (12) Oct (1) Nov (9) Dec (2) Jan (3) Feb (6) Mar (2) Apr May (3) Jun (5) Jul Aug Sep (3) Oct Nov Dec Jan (3) Feb (6) Mar (7) Apr (2) May (3) Jun Jul (8) Aug (3) Sep (4) Oct (2) Nov Dec (10) Jan Feb (2) Mar Apr (1) May (14) Jun Jul (14) Aug (9) Sep (12) Oct (7) Nov Dec (5) Jan (27) Feb (5) Mar (5) Apr (57) May (35) Jun (8) Jul Aug (3) Sep (5) Oct (16) Nov (28) Dec (9) Jan (6) Feb (29) Mar (36) Apr (3) May Jun (14) Jul (2) Aug (3) Sep (17) Oct (9) Nov (3) Dec (9) Jan (19) Feb (4) Mar (10) Apr (7) May (7) Jun Jul (4) Aug (2) Sep (9) Oct (10) Nov (8) Dec (10) Jan Feb (6) Mar Apr (11) May Jun (3) Jul (17) Aug Sep (17) Oct (8) Nov Dec Jan (1) Feb (8) Mar (4) Apr (8) May (5) Jun (3) Jul (5) Aug (2) Sep Oct (2) Nov Dec (4) Jan Feb (4) Mar (3) Apr (2) May (2) Jun Jul (1) Aug (1) Sep (16) Oct (3) Nov Dec (7) Jan (2) Feb Mar (8) Apr May (1) Jun (11) Jul (8) Aug (3) Sep Oct Nov Dec
S M T W T F S

1

2

3

4

5

6

7

8

9

10

11

12

13
(2)
14

15
(4)
16
(6)
17
(2)
18

19

20

21

22

23

24

25

26

27

28

29

30

31

Showing 2 results of 2

 Re: [Maxima-lang-es] Ajuste no lineal por derivadas parciales de mínimos cuadrados From: Mario Rodriguez - 2009-07-13 18:30:33 ```Argel Gastélum Arellánez escribió: > Hola, buenas tardes. Estoy tratando de hacer un ajuste no lineal de > una función a un grupo de 214 parejas de datos, utilizando el método de > derivadas parciales para encontrar mínimos cuadrados. Las instrucciones > que estoy aplicando en wxMaxima 0.8.2 son las siguientes: > > --------------------------------------------------------------------------------- > M: read_matrix("C:/Users/Usuario/Desktop/Datos.txt")\$ > X: col(M,1)\$ > Y: col(M,2)\$ > Funcion_a_minimizar : '((1/length(X))*sum((F(X[i]) - Y[i])^2, i, > 1,length(X))); > F(X) := exp(-a*X)/(b+c*X); > Suma_de_Cuadrados: first(''Funcion_a_minimizar); > Derivada_parcial_a: diff(Suma_de_Cuadrados,a)\$ > Derivada_parcial_b: diff(Suma_de_Cuadrados,b)\$ > Derivada_parcial_c: diff(Suma_de_Cuadrados,c)\$ > realonly: true\$ > Constantes_estimadas_Racionales: > solve([Derivada_parcial_a=0,Derivada_parcial_b=0,Derivada_parcial_c=0],[a,b,c]); > Constantes_estimadas_Racionales2: (last(Constantes_estimadas_Racionales)); > Constantes_estimadas_Decimales: > float(last(Constantes_estimadas_Racionales)); > [a[racional],b[racional],c[racional]]: map(rhs, > Constantes_estimadas_Racionales2); > [a[decimal],b[decimal],c[decimal]]: map(rhs, > Constantes_estimadas_Decimales); > load(draw)\$ > Escena_1:gr2d( > title="Curva ajustada a Datos Experimentales", > xlabel="X (unidades)", > ylabel="Y (unidades)", > xrange=[0,6], > yrange=[0,200], > key="Datos experimentales", > point_type=filled_circle, > point_size=1, > color=red, > points(M), > key="Curva Ajustada", > line_width=3, > color=blue, > explicit(ev(F(x),first(Constantes_estimadas_Racionales2)),x,0,10) > )\$ > wxdraw(Escena_1)\$ > /* > Ecuación de la Curva Ajustada: > */ > y=exp(-a[racional]*x)/(b[racional]+c[racional]*x); > y=exp(-a[decimal]*x)/(b[decimal]+c[decimal]*x); > /* > Valores reportados por la fuente de los datos (Datos NIST Chwirut1): > a = 0.19027818370, b = 0.0061314004477, c = 0.010530908399. > */ > --------------------------------------------------------------------------------- > > Todo marcha bien hasta llegar a la orden: > > Constantes_estimadas_Racionales: > solve([Derivada_parcial_a=0,Derivada_parcial_b=0,Derivada_parcial_c=0],[a,b,c]); > > donde se queda un rato trabajando el programa y después de unos segundos > me arroja una serie de líneas como estas: > ----------------------------------------------------------------------------- > rat: replaced -1.0 by -1/1 = -1.0 > rat: replaced -92.9 by -929/10 = -92.9 > rat: replaced 0.5 by 1/2 = 0.5 > ... > rat: replaced 6.0 by 6/1 = 6.0 > Maxima encountered a Lisp error: > Error in PROGN [or a callee]: The storage for BIGNUM is exhausted. > Currently, 7581 pages are allocated. > Use ALLOCATE to expand the space. > Automatically continuing. > To reenable the Lisp debugger set *debugger-hook* to nil. > ------------------------------------------------------------------------------ > y a partir de aquí no avanza. He buscado pero no he encontrado la > forma de expandir el espacio usando ALLOCATE y no tengo idea de qué se > puede hacer. Esta secuencia de comandos me ha sido muy útil para ajustar > curvas de Michaelis-Menten en experimentos de cinética enzimática y > también para hacer regresiones lineales. He logrado encontrar los > valores de "a", "b" y "c" usando el comando "lbfgs" (no me resulta muy > práctico tener que dar valores iniciales, sólo por cuestiones de tiempo) > y también con "lsquares" (que me ha parecido mucho mejor), pero me > intriga el hecho de no poder hacerlo con este método de derivadas parciales. > > Agradezco de antemano la ayuda brindada. > > Saludos y buen inicio de semana. > > -- > Argel. > Hola Argel, La función 'solve' se utiliza para resolver ecuaciones y sistemas de forma simbólica, lo que conlleva ciertas limitaciones prácticas y teóricas. A simple vista no parece que tu sistema sea resoluble de forma algebraica; incluso con tamaños muestrales mucho más pequeños te vas a encontrar con polinomios de grado muy alto. Es el típico caso en el que no hay más remedio que echar mano de procedimientos numéricos. Creo que tu mejor opción es utilizar las otras funciones a las que haces referencia. Mario ```
 [Maxima-lang-es] Ajuste no lineal por derivadas parciales de mínimos cuadrados From: Argel Gastélum Arellánez - 2009-07-13 02:21:40 ``` Hola, buenas tardes. Estoy tratando de hacer un ajuste no lineal de una función a un grupo de 214 parejas de datos, utilizando el método de derivadas parciales para encontrar mínimos cuadrados. Las instrucciones que estoy aplicando en wxMaxima 0.8.2 son las siguientes: --------------------------------------------------------------------------------- M: read_matrix("C:/Users/Usuario/Desktop/Datos.txt")\$ X: col(M,1)\$ Y: col(M,2)\$ Funcion_a_minimizar : '((1/length(X))*sum((F(X[i]) - Y[i])^2, i, 1,length(X))); F(X) := exp(-a*X)/(b+c*X); Suma_de_Cuadrados: first(''Funcion_a_minimizar); Derivada_parcial_a: diff(Suma_de_Cuadrados,a)\$ Derivada_parcial_b: diff(Suma_de_Cuadrados,b)\$ Derivada_parcial_c: diff(Suma_de_Cuadrados,c)\$ realonly: true\$ Constantes_estimadas_Racionales: solve([Derivada_parcial_a=0,Derivada_parcial_b=0,Derivada_parcial_c=0],[a,b,c]); Constantes_estimadas_Racionales2: (last(Constantes_estimadas_Racionales)); Constantes_estimadas_Decimales: float(last(Constantes_estimadas_Racionales)); [a[racional],b[racional],c[racional]]: map(rhs, Constantes_estimadas_Racionales2); [a[decimal],b[decimal],c[decimal]]: map(rhs, Constantes_estimadas_Decimales); load(draw)\$ Escena_1:gr2d( title="Curva ajustada a Datos Experimentales", xlabel="X (unidades)", ylabel="Y (unidades)", xrange=[0,6], yrange=[0,200], key="Datos experimentales", point_type=filled_circle, point_size=1, color=red, points(M), key="Curva Ajustada", line_width=3, color=blue, explicit(ev(F(x),first(Constantes_estimadas_Racionales2)),x,0,10) )\$ wxdraw(Escena_1)\$ /* Ecuación de la Curva Ajustada: */ y=exp(-a[racional]*x)/(b[racional]+c[racional]*x); y=exp(-a[decimal]*x)/(b[decimal]+c[decimal]*x); /* Valores reportados por la fuente de los datos (Datos NIST Chwirut1): a = 0.19027818370, b = 0.0061314004477, c = 0.010530908399. */ --------------------------------------------------------------------------------- Todo marcha bien hasta llegar a la orden: Constantes_estimadas_Racionales: solve([Derivada_parcial_a=0,Derivada_parcial_b=0,Derivada_parcial_c=0],[a,b,c]); donde se queda un rato trabajando el programa y después de unos segundos me arroja una serie de líneas como estas: ----------------------------------------------------------------------------- rat: replaced -1.0 by -1/1 = -1.0 rat: replaced -92.9 by -929/10 = -92.9 rat: replaced 0.5 by 1/2 = 0.5 ... rat: replaced 6.0 by 6/1 = 6.0 Maxima encountered a Lisp error: Error in PROGN [or a callee]: The storage for BIGNUM is exhausted. Currently, 7581 pages are allocated. Use ALLOCATE to expand the space. Automatically continuing. To reenable the Lisp debugger set *debugger-hook* to nil. ------------------------------------------------------------------------------ y a partir de aquí no avanza. He buscado pero no he encontrado la forma de expandir el espacio usando ALLOCATE y no tengo idea de qué se puede hacer. Esta secuencia de comandos me ha sido muy útil para ajustar curvas de Michaelis-Menten en experimentos de cinética enzimática y también para hacer regresiones lineales. He logrado encontrar los valores de "a", "b" y "c" usando el comando "lbfgs" (no me resulta muy práctico tener que dar valores iniciales, sólo por cuestiones de tiempo) y también con "lsquares" (que me ha parecido mucho mejor), pero me intriga el hecho de no poder hacerlo con este método de derivadas parciales. Agradezco de antemano la ayuda brindada. Saludos y buen inicio de semana. -- Argel. ```

Showing 2 results of 2