是否有任何开源或易于访问的软件可以简化代数表达式,如 $x^{2}+2x+3, x=\sqrt{2}t-1$?

计算科学 教育 符号计算
2021-12-21 22:25:10

我总是用手计算,但现在我的同志们越来越讨厌,做很多重复的练习,只需要像上面的表达式那样插入东西。我对 Python 或 R 等开源软件特别感兴趣,可以简化这些方程。尝试使用 Wolfram Alpha,但没有成功。哪些开源软件包能够将表达式 $x=\sqrt{2}t-1$ 代入方程 $x^{2}+2x+3$ 并简化结果?具体来说,我正在寻找一个类似于simplify命令的软件包。

4个回答

您可能想要查看SymPy,它是一个带有您想要的简化命令的 Python 库。

>>> 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

Sage 可以做到这一点(您将不得不向下滚动页面很远才能到达简化部分)。

另外,请确保您阅读了 Sage 中符号数学的一般介绍。它的语义和语法与大多数人所熟悉的Mathematica完全不同。

这是我链接到的文档中的一个示例:

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

对于您的情况,这应该有效:

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

您已经通过高质量的高级开源软件包获得了几个很好的答案。

我想指向http://www.mathics.net/(如果你想下载它,http://mathics.org/),这是一个使用Mathematica语法的开源CAS(你可能很熟悉如果您使用的是 WolramAlpha,则需要一点点)。它不像你得到的任何其他建议那样完整。但它可以执行您在问题中谈到的(非常简单的)操作。

您在问题中所说的并不是真正的简化,而是替换扩展(与更复杂的简化不同,即使在最基本的 CAS 中也很容易实现可用的操作):

在数学中,它看起来像这样:

eq = x^2 + 2x + 3

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

Expand[%]

如果您需要一个简化函数,它被称为Simplify[],并且也可以代替Expand[]上面的示例工作。

正如akid所建议的,wxMaxima是基于lisp的古老计算机代数系统Maxima一个出色的图形前端

使用你的例子,你会得到类似的东西:

(%i1) eq1: x=t*2**(1/2)-1;
(%o1) $x=\sqrt{2}t-1$
(%i2) eq2: x**2+2*x+3;
(%o2) $x^{2}+2x+3$
(%i3) eq3: subst(eq1, eq2);
(%o3) $(\ sqrt{2}t-1)^2+2(\sqrt{2}t-1)+3$
(%i4) ratsimp(eq3);
(%o4) $2t^2+2$

或者你可以直接这样做:

(%i5) ratsimp(subst(x=t*2**(1/2)-1, x**2+2*x+3));
(%o5) $2t^2+2$

Maxima 有许多不同的简化方法,但这ratsimp是一个很好的第一步。