python/scipy、numpy、sympy 中是否有等同于 Mathematicas RootApproximant 函数的函数?

Is there an equivalent to Mathematicas RootApproximant function in python / scipy, numpy, sympy?

我正在 python 或 python 库中寻找与 Mathematicas RootApproximant 函数等效的函数: https://reference.wolfram.com/language/ref/RootApproximant.html

基本上,这个函数求一个数值的代数根,例如

RootApproximant[1.414213] -> sqrt(2)

谢谢!

您可能正在寻找 mpmath.identify():

In [295]: import mpmath as mpm

In [296]: mpm.identify(1.414213)
Out[296]: 'sqrt(((4-sqrt(0))/2))'

In [297]: mpm.identify(3.141592/2)
Out[297]: '(2**(157/183)*3**(67/183)*5**(152/183))/(7**(59/61))'

In [298]: mpm.identify(3.141592/2,['pi'])
Out[298]: 'pi*((4-sqrt(0))/8)'

它显然不像 Mathematica 的实现那样清晰明了,但我相信它胜过任何手动尝试完成这项工作。而且这些功能肯定是不同的(而且更稀缺),所以如果它符合您的需要,您应该查看手册。

查看 sympy.nsimplify(内部使用 mpmath.identify

>>> nsimplify(1.414213, tolerance=1e-6)
√2