Rationalize[]
Mathematicaのように、特定のデルタ内の式のすべての数値を合理化する (しようとする) 簡単な方法はありますか?
Mathematica での例:
In[25]:= Rationalize[0.5 x^2 - 3.333333 x, 10^-4]
Out[25]= x^2/2-(10 x)/3
機能はわかりnsimplify()
ますが、それはやり過ぎのようです。
nsimplify
オーバーキルの 仕方がわかりません。nsimplify
SymPy式を渡すことができ、式の項を合理化するため、まさにあなたが望むことを行います
>>> print nsimplify(0.5*x**2 - 3.333333*x, tolerance=0.001, rational=True)
x**2/2 - 3333333*x/1000000
(tolerance キーワードが機能していないようです。これはバグだと思います)。
Sympy を使用しているためpslq
、mpmath モジュールから関数にアクセスすることもできます。これにより、有理数と 1 の間の最も適切な線形関係を見つけることができます。
>>> from mpmath import pslq, mpf
>>> from sympy import sympify
>>> l = pslq([ mpf('.3333333333333333333333', 1])
>>> -l[1]/sympify(l[0])
1/3