domingo, 4 de diciembre de 2011

Ecuaciones

En general, para resolver ecuaciones en Maxima es necesario utilizar la función solve.


Una sencilla ecuación algebraica de primer grado.

(%i1) solve(3*(x-6)/4 - (3-5*x)/9 - 6 = x/7 + 3);
                                       3486
(%o1)                             [x = ----]
                                       293


Una ecuación de segundo grado, con dos soluciones reales.

(%i2) solve(-x^2 + 15*x = 54);
(%o2)                           [x = 6, x = 9]


Ahora un sistema de dos incógnitas. Fíjate que tienes que introducir la lista de ecuaciones y luego la lista de variables.

(%i3) solve([u-5*v=-26, u-v=-46], [u,v]);
(%o3)                       [[u = - 51, v = - 5]]


Cuando hay una sola incógnita, no necesitas indicarle a Maxima cuál es, a menos que haya un parámetro literal; en tal caso es imperativo decirle cuál es la incógnita a despejar.

(%i4) solve(2*x+(x-9)/8 = a/7, x);
                                     8 a + 63
(%o4)                           [x = --------]
                                       119


Podemos utilizar solve para despejar magnitudes en fórmulas físicas, como aquí, que nos planteamos despejar la resistencia R1. Respecto de este ejemplo, recuerda que el símbolo de procentaje % se utiliza para hacer referencia al último resultado devuelto por Maxima.

(%i5) 1/Rt = 1/R1 + 1/R2;
                                 1    1    1
(%o5)                            -- = -- + --
                                 Rt   R2   R1
(%i6) solve(%, R1);
                                       Rt R2
(%o6)                           [R1 = -------]
                                      R2 - Rt


Otra aplicación de solve es calcular la función inversa de otra dada.

La función psubst que se utiliza al final hace sustituciones de variables en paralelo.


(%i7) y = (x+5)/(3*x+1);
                                       x + 5
(%o7)                             y = -------
                                      3 x + 1
(%i8) solve(%, x);
                                        y - 5
(%o8)                          [x = - (-------)]
                                       3 y - 1
(%i9)  /* extraigo el resultado de la lista de soluciones  */
       first(%);
                                        y - 5
(%o9)                           x = - (-------)
                                       3 y - 1
(%i10) /* cambio de nombre las variables  */
       psubst([x=y, y=x], %);
                                        x - 5
(%o10)                          y = - (-------)
                                       3 x - 1