验证e的计算

时间:2013-06-27 12:46:51

标签: c++ math python-2.7

我写了一个计算e的程序,正在进行世界记录计算。如何使用比任何其他现有计算更多的小数位来验证计算?我将如何用C ++ / Python编程呢?

3 个答案:

答案 0 :(得分:1)

我没有看到任何可用的欧拉数字标识,这使您可以快速检查计算的有效性。在这种情况下,我认为你必须要考虑的是检查已知基本事实的第一个(数百万)小数位,如果它适合你将声称你的算法正常工作。这就是Unit testing框架中有时称为“已知案例”的内容。

答案 1 :(得分:1)

您应该将suspectus'链接复制到.txt文件中,然后编写一个程序,使用fstream逐位比较每个元素,以检查您是否已获得前200万个小数。编辑:我编写了一个程序,允许你这样做,编辑文件名字符串,使其匹配,并让你的算法将其数字放入e_my_algorithm字符串。

#include <iostream>  
#include <string>
#include <fstream>
using namespace std;
int main()
{
fstream in;
string filename = "C:\\Users\\Aaron\\Desktop\\TXT.txt";
string e_known;
string e_my_algorithm;
in.open(filename);
while(in.good())
{
 e_known += in.get();  
}
in.close();
auto itk = e_known.begin();
auto ite = e_my_algorithm.begin();

while(itk != e_known.end() - 1)
{
if(*itk++ != *ite++)
{
cout << "failure" << endl; 
break;
}
}

return 0;
}

除此之外,你需要一个数学背景来证明你的算法准确地将e逼近n位数。特别要学习Real Analysis: http://en.wikipedia.org/wiki/Real_analysis

数学常数e是数学专业完全理解的东西,所以数学家已经知道你想出的任何算法。所以你应该只是寻找一种现有的方法来估算e和代码。

如果你真的很认真,请查看一下,显然有人能够打破超频台式电脑的世界纪录: http://www.numberworld.org/misc_runs/e-500b.html

他使用了泰勒系列扩展: e = 1 /(0!)+ 1/1(!)+ 1 /(2!)+ 1 /(3!)+ 1 /(4!)...

答案 2 :(得分:1)

精确计算的主要问题是证明您的结果是正确的。在e的情况下,如果您说您的算法将使用 n 十进制数字打印e意味着您可以通过数学证明您的数字与{{3}不同不超过10E-n 换句话说,在编写程序之前,你必须开发一个算法并证明它是正确的。