我总是用手来计算,但现在我的同志们变得烦人,并且进行了很多重复的练习,其中涉及的只是像上面的表达式那样插入东西。我对诸如Python或R之类的简化此类方程式的开源软件特别感兴趣。我尝试使用Wolfram Alpha,但未成功。哪些开源软件包能够替代表达式入方程x 2 +2x+3并简化结果?具体来说,我正在寻找具有类似命令之类的软件包。simplify
我总是用手来计算,但现在我的同志们变得烦人,并且进行了很多重复的练习,其中涉及的只是像上面的表达式那样插入东西。我对诸如Python或R之类的简化此类方程式的开源软件特别感兴趣。我尝试使用Wolfram Alpha,但未成功。哪些开源软件包能够替代表达式入方程x 2 +2x+3并简化结果?具体来说,我正在寻找具有类似命令之类的软件包。simplify
Answers:
您可能需要研究SymPy,它是一个Python库,带有您所需的simple命令。
>>> 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
var('a')
。至少在3或4年前我最后一次使用鼠尾草时,这是真的。通常,mathematica假定您需要符号结果,而sage则假定您想要数字结果。
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[]
上面的示例。
我想我能够让Wolfram Alpha上班。也许我在找什么错。