function [est k ] = approximate_e( delta )
%APPROXIMATE_E Summary of this function goes here
% Detailed explanation goes here
n =1;
est = 0;
while abs(exp(1)-est)>delta
if n ==1
est = 1;
end
if n == 2
est = 2;
end
if n >2
est = est+1/prod(1:(n-1));
end
fprintf "e is %d and n is %d: \n",est,n
k = n;
n = n + 1;
if n >10000
fprinf "n is greater than 10000.\n"
break;
end
end
我写了上面的代码,试图回答一个涉及Eulers Number计算的问题。问题如下:
编写一个名为approximate_e的函数,该函数使用以下公式 计算e,Euler的数字:
该函数不是进入无穷大,而是停留在近似值与exp(1)不同的最小k处(即
值返回MATLAB的内置函数)不超过 正标量,delta,这是唯一的输入参数。首先 函数的输出是e的近似值,而第二个 是k。 (注意:如果您的课程或评分员需要很长时间,您可以 创建了一个无限循环,需要按下Ctrl-C 键盘。)不允许使用内置函数factorial。
答案 0 :(得分:0)
function [est] = approximate_e( delta )
%APPROXIMATE_E Summary of this function goes here
% Detailed explanation goes here
n = 0;
est = 0;
TerminationCondition = 10000;
while abs(exp(1)-est)>delta
est = 1/factorial(n)+est;
display(['The current value of est is ', num2str(est),char(10)]);
n = n + 1;
if n > TerminationCondition
break;
end
end
if n > TerminationCondition
display(['n is greater than ', num2str(TerminationCondition), ' terminating loop']);
else
display(['This estimation took ', num2str(n), ' cycles to complete']);
end
你必须调整函数来给你k值(这是变量n)。