用python高精度求自然常数e

用python高精度求自然常数e用 python 高精度求自然常数 e 泰勒展开与 e 的求法 python 和神奇的 decimal 计算比较完整代码泰勒展开与 e 的求法大家伙儿知道计算机里的 eee 是怎么求出来的吗 这还要从神奇的泰勒展开讲起 简单的说 就是 eee 可以表示成 e 10 11 12 1n e frac 1 0 frac 1 1 frac 1 2 cdots frac 1 n cdotse 0 1 1 1 2 1 n 1 很显然 当 nnn 足够小的时候

泰勒展开与e的求法

大家伙儿知道计算机里的 e e e是怎么求出来的吗?
这还要从神奇的泰勒展开讲起……
简单的说,就是 e e e,可以表示成:
e = 1 0 ! + 1 1 ! + 1 2 ! + ⋯ + 1 n ! + ⋯ e= \frac{1}{0!}+\frac{1}{1!}+\frac{1}{2!} + \cdots+\frac{1}{n!}+ \cdots e=0!1+1!1+2!1++n!1+
很显然,当 n n n足够小的时候,精度已经很高了,后面的级数是收敛的,可以忽略不计。而这显然可以用计算机来计算。








python和神奇的decimal

很多人习惯用python算高精度整数,因为python的整数是高精度的,但是浮点数却只有32位,这里python提供了一个神奇的库“decimal”,这个库可以让你指定小数的精度,相当于“高精度小数”。

计算

import decimal Precision=20000 decimal.getcontext().prec=Precision 

我们可以像这样给它设置一个精度。

然后紧接着代入我们的展开式,一般来说算到精度位就差不多了。

E=decimal.Decimal(0) nFrac=decimal.Decimal(1) for N in range(1,Precision+1): E+=nFrac nFrac/=N print(E) 

比较

我们用专业软件” m a t h e m a t i c a mathematica mathematica“计算 e e e的20000位,并存成字符串传入decimal,这里要注意必须用字符串而不是直接写小数,因为默认小数只有32bit会丢失剩余精度。
在这里插入图片描述
在这里插入图片描述
这里我们让 m a t h e m a t i c a mathematica mathematica e e e和我们的 e e e作差,误差只有1.7e-19998,相当于不到 2 ⋅ 1 0 − 19998 2\cdot 10^{-19998} 21019998,所以只要稍微调高精度就能精确到20000位了。






完整代码

import decimal Precision=20000 decimal.getcontext().prec=Precision E=decimal.Decimal(0) nFrac=decimal.Decimal(1) for N in range(1,Precision+1): E+=nFrac nFrac/=N e=decimal.Decimal('2.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000') print(E-e) 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/209370.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 上午9:24
下一篇 2026年3月19日 上午9:24


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号