1、利用泰勒级数 e = 1 + 1/1! + 1/2! + 1/3! + …….+ 1/n! 计算e的近似值,
直到前后两次计算的误差小于10-6。
public class taiLe {
public static void main(String[] args) {
double e=2,i=1;
double a=0,b=0;
while(true){
a=1/i;
i=i*(i+1);
b=1/i;
if(a-b<1e-6) break;
e+=1/i;
}
System.out.println(e);
}
}
输出2.69103020675716
不应该是2.71左右吗
你的程序在计算误差时只比较了连分数中两个相邻分母对应的两项,这并不一定保证前后两次计算的误差小于 10^-6。另外,你的循环中第一次计算是2,而应该是1。
正确的计算方式是:每次迭代后统计新增的一项对整个和的贡献值,并将其计入当前的和值中;每当新增的一项对和值的贡献值小于
写的有点小问题,在计算每一项的时候,应该用上一项的结果,还有用双精度浮点数存储结果可能会导致精度丢失,可以用用了科学计数法表示误差的阈值
不知道你这个问题是否已经解决, 如果还没有解决的话:***【题目详述】***:题目中方法的参数n是代表计算多少项
(下面代码中给了10项)
【代码演示】:
public class CalcE {
//利用迭代方式计算阶乘
public static long factoria2(int n){
int r=1;
for(int i=1;i<=n;i++){
r*=i;
}
return r;
}
public static long calcE(int n){
long e=0;
for(int i=0;i<=n;i++){
e+=(1.0/factorial(i));
}
return e;
}
public static void main(String[] args) {
//该题是计算10项的值:
System.out.println(calcE(10));
}
}