2010-11-02 23 views
8

Resolviendo simbólicamente una ecuación se puede lograr en R usando la biblioteca de Ryacas. Por ejemplo Resolviendo sistemas de ecuaciones en R

library(Ryacas) 
yacas("Solve(x/(1+x) == a, x)") 

da

expression(list(x == a/(1 - a))) 

¿Alguien sabe cómo (simbólicamente) a resolver un sistema de ecuaciones?

Gracias.

Respuesta

9

Bueno, yo uso la excelente biblioteca de Python, sympy, para el cálculo simbólico.

Usando sympy, resolver sistemas de ecuaciones sencillas:

>>> from sympy import * 
>>> x,y = symbols('x y') 
>>> solve([Eq(x + 5*y, 2), Eq(-3*x + 6*y, 15)], [x, y]) 
{y: 1, x: -3} 

Así que esa es la forma de resolver un sistema de ecuaciones usando el álgebra simbólica, excepto a través de un paquete de pitón.

La buena noticia es que hay un puerto de I a sympy, llamado rsympy, que está disponible en CRAN, o Google Code, here.

Nunca he usado rsympy, aparte de descargarlo/instalarlo y trabajar con un par de los ejemplos más simples en el Manual de rsympy. He usado mucho la biblioteca original de Python durante los últimos tres años y puedo recomendarla altamente.

3

Prueba esto:

yacas("OldSolve({a*x+y==0,x+z==0},{x,y})") 
+0

tienes una idea acerca de lo siguiente? Si ejecuto 'yacas (" OldSolve ({x + 5 * y == 2, -3 * x + 6 * y == 15}, {x, y}) ")' entonces obtengo '{{x == 2-5 * y, y == 1}}; 'lo cual está bien, pero no sé por qué * x * no se calculó para obtener -3 al final. ¿Es posible hacer que R calcule resultados exactos? – daroczig

+0

No tengo un dispositivo con Yacas instalado en este momento para probar mi solución, pero después de mirar los documentos lo habría intentado: 'yacas (" OldSolve ({a * x + y == 0, x + z == 0}, x) ")' –