¿Existe algún software de código abierto o de fácil acceso que pueda simplificar expresiones algebraicas como


17

Siempre calculo las cosas a mano, pero ahora mis camaradas se están poniendo desagradables y hacen muchos ejercicios repetitivos que implican simplemente conectar cosas como la expresión anterior. Estoy particularmente interesado en software de código abierto como Python o R para simplificar este tipo de ecuaciones. I intentado usar Wolfram Alpha , pero no tuvo éxito. ¿Qué paquetes de software de código abierto pueden sustituir la expresión en la ecuación y simplificar el resultado? Específicamente, estoy buscando un paquete de software que tenga algo así como un comando.x=2t1x2+2x+3simplify

Respuestas:


28

Es posible que desee ver en sympy , que es una biblioteca de Python con su deseada comando Simplificar .

>>> from sympy.abc import t
>>> import sympy
>>> x = t*2**(1/2) - 1
>>> x**2 + 2*x + 3
2*t + (t - 1)**2 + 1
>>> sympy.simplify(x**2 + 2*x + 3)
t**2 + 2

2
Iba a sugerir Sage , pero parece que todavía no tiene capacidades simbólicas, aunque uno pensaría que eventualmente incorporaría una capacidad simbólica porque apunta a convertirse en una alternativa de código abierto para Maple y Mathematica.
Geoff Oxberry

1
Sage tiene capacidades simbólicas (Lo he utilizado para hacer integrales simbólicas), pero no es especialmente claro cómo hacerlo a menos que usted lo busca. Si desea utilizar a como símbolo, debe declararlo de antemano, como en var('a'). Al menos esto era cierto cuando estaba usando salvia por última vez hace 3 o 4 años. En general, Mathica supone que desea un resultado simbólico y Sage supone que desea un resultado numérico.
Dan

1
@hhh: a menos que me equivoque, su fragmento de código no corresponde a la expresión que desea evaluar y simplificar.
Geoff Oxberry

@ GeoffOxberry: Traté de solucionar ese problema, así como uno en LaTeX en la pregunta original.
Jack Poulson el

1
Tengo entendido que Sage en realidad incorpora gran parte de la base de código SymPy.
MRocklin 01 de

9

Sage puede hacer eso (que vas a tener que desplazarse muy lejos por la página para llegar a la parte simplificación).

Además, asegúrese de leer la introducción general a las matemáticas simbólicas en Sage. Su semántica y sintaxis son bastante diferentes de las de Mathematica , que es con lo que la mayoría de la gente está familiarizada.

Aquí hay un ejemplo de la documentación a la que lo vinculé:

sage: var('x,y,z,a,b,c,d,e,f')
(x, y, z, a, b, c, d, e, f)
sage: t = a^2 + b^2 + (x+y)^3
# substitute with keyword arguments (works only with symbols)
sage: t.subs(a=c)
(x + y)^3 + b^2 + c^2

Para su caso, esto debería funcionar:

var(f,x,t)
f=x^2+2*x+3
f.subs(x=(sqrt(2)*t-1))
f.simplify()

Su motor de búsqueda de documentación necesita mejorar, entonces. He escrito en "simplificar" y no conseguir esa página en absoluto . Buen hallazgo!
Geoff Oxberry

Me acaba de escribir "salvia simplificar" en Google.
Dan

8

Tienes varias buenas respuestas ya con avanzados de alta calidad paquetes de código abierto.

Me gustaría a punto de http://www.mathics.net/ (http://mathics.org/ si quieres descargarlo), que es un CAS de código abierto utilizando la sintaxis de Mathematica (que puede estar familiarizado con un poco si estás acostumbrado WolramAlpha). No es tan completo como cualquiera de las otras sugerencias que recibió. Pero puede hacer las operaciones (muy simples) de las que habló en su pregunta.

Lo que se está hablando en su pregunta no es realmente una simplificación, pero la sustitución y ampliación (que, a diferencia de la simplificación más compleja, son muy fáciles de poner en práctica las operaciones disponibles incluso en el más básico CAS):

En matemáticas se vería así:

eq = x^2 + 2x + 3

eq /. x -> Sqrt[2] t - 1

Expand[%]

En caso de que necesite una función de simplificación, se llama Simplify[]y también funcionaría en lugar del Expand[]ejemplo anterior.


8

Como sugirió akid , wxMaxima es una excelente interfaz gráfica para el venerable sistema de álgebra computacional basado en lisp llamado Maxima .

Usando su ejemplo, obtendría algo como:

eq1: x=t*2**(1/2)-1;
X=2t-1
eq2: x**2+2*x+3;
X2+2X+3
eq3: subst(eq1, eq2);
(2t-1)2+2(2t-1)+3
ratsimp(eq3);
2t2+2

o podrías hacerlo directamente:

ratsimp(subst(x=t*2**(1/2)-1, x**2+2*x+3));
2t2+2

Maxima tiene un número de diferentes formas de simplificar, pero ratsimpes un buen primer paso.





Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.