e小数部分的渐近分数
e小数部分的渐近分数 看来是正确的管理员 liangbc 能计算100万位e.参看 http://bbs.emath.ac.cn/thread-359-1-1.html 可通过连分数得到渐近分数,已有成熟的理论。
\(e=\)
其不完全商的通式为:\(a_0=2, a_{3i}=a_{3i-2}=1, a_{3i-1}=2i (i=1,2,\cdots )\) 楼主弄清连分数得到渐进分数的方法后,
下面是e的连分数前一万位,
http://oeis.org/A003417/b003417.txt
可以供楼主验算使用。 才发现e的连分数是有规律的。:L gxqcn 发表于 2017-2-10 10:29
可通过连分数得到渐近分数,已有成熟的理论。
\(e=\)
可通过连分数得到渐近分数,已有成熟的理论。
我的这条渐近分数与众不同,逼近e的速度极快,只要稍作调整,速度会更快! 本帖最后由 zyqjw 于 2017-5-20 04:45 编辑
经验证该算法正确。而且还得出一个结论:小数有效精度位数=分子的位数+分母的位数。
比我原先的算法速度提高40%(接近快1倍),应该还有优化的空间。
int MaxLenth = Edit1->Text.ToIntDef(10000) + 1;//精度
TLargeFloat a1(12194787470451LL), a2(290170412069LL),
b1(16977719590391LL), b2(403978495031LL), a3, b3;
__int64 k = 46;
try {
b1.SetDigitsLength(14);
int len = 0;
while (!UserStop && b1.m_Exponent.AsInt() < MaxLenth / 2) {
a3 = a1;
b3 = b1;
len = b1.GetDigitsLength();
if (len < MaxLenth) {
a1.SetDigitsLength(len + 10);
b1.SetDigitsLength(len + 10);
}
a1 *= k;
b1 *= k;
a1 += a2;
b1 += b2;
k += 4;
a2 = a3;
b2 = b3;
}
a1 /= b1;
a1 += 2;
a1.SetDigitsLength(MaxLenth);
Memo1->Text = a1.AsString();
BTCAL计算e的30万位,原先需5分37,现在3:20
原算法为:
e=1+1+1/2!+1/3!+1/4!+...+1/n!
=1+3/2!+5/4!+7/6!+9/8!...+(2n+1)/(2n)!
=5/2+26/5!+65/8!+……+(n^2+1)/n!
=...迭代直至最后一项的精度满足要求。 zyqjw 发表于 2017-5-20 04:12
经验证该算法正确。而且还得出一个结论:小数有效精度位数=分子的位数+分母的位数。
比我原先的算法速度提 ...
可通过连分数得到渐近分数,已有成熟的理论。
我的这条渐近分数与众不同,逼近e的速度极快,只要稍作调整,速度会更快! 王守恩 发表于 2017-5-20 05:11
可通过连分数得到渐近分数,已有成熟的理论。
我的这条渐近分数与众不同,逼近e的速度极快,只要稍作调 ...
优美数字
页:
[1]