对数学表达式进行简单或形式化简化的软件

计算科学 软件 图书馆
2021-12-07 08:32:25

魔鬼可能在乎我,假设我想“简化”以下表达式,完全忽略了将各种数字提高到任意幂或除以零是非常顽皮的事实。

0.125567841d2.25=2.513274d+0.10053+2.11πd+0.04

也就是说,我想:

  • 代替
    x4
    为了
    d
    ,
  • “交叉乘以”等式的两侧,以及
  • 用 9/4 替换浮点数 2.25。

我想假装我回到了学校。有没有软件可以为我做到这一点?

编辑:在我写的第 4 根的地方,x我应该有 . 的 4 次方x给您带来的不便,我深表歉意!

2个回答

您正在寻找的是计算机代数系统您应该能够在 Mathematica、Maple、Maxima 或 SymPy 中做到这一点。特别是,我在下面的 SymPy 中展示了一个示例。

import sympy as sym

d, x = sym.symbols("d x", real=True)
eq = sym.Eq(0.12556841/d**2.25, (2.513274*d + 0.10053 + 2.11*sym.pi)/(d + 0.04))
eq_new = sym.nsimplify(eq).subs(d, x**4)

结果是

12556841|x|100000000x10=1x4+125(1256637x4500000+10053100000+211π100)

感谢您的回答和评论。他们肯定有帮助。这段代码至少让我了解了一部分,并且可以解释我在寻找什么。

将这两个符号定义为实数和正数使得 sympy 可以允许对所涉及的指数进行运算,至少在这种情况下是这样。

结果确实是多项式。

>>> from sympy import *
>>> x = Symbol('x', real=True, positive=True)
>>> d = Symbol('d', real=True, positive=True)
>>> (0.125567841*(d+0.04)-d**Rational(9,4)*(2.513274*d+0.10053+2.11*pi)).subs(d, x**4)
-x**9*(2.513274*x**4 + 0.10053 + 2.11*pi) + 0.125567841*x**4 + 0.00502271364
>>> (-x**9*(2.513274*x**4 + 0.10053 + 2.11*pi) + 0.125567841*x**4 + 0.00502271364).expand()
-2.513274*x**13 - 2.11*pi*x**9 - 0.10053*x**9 + 0.125567841*x**4 + 0.00502271364