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