需要Matlab解决方案

时间:2016-12-05 15:11:17

标签: matlab

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的数字:

enter image description here

该函数不是进入无穷大,而是停留在近似值与exp(1)不同的最小k处(即

  

值返回MATLAB的内置函数)不超过   正标量,delta,这是唯一的输入参数。首先   函数的输出是e的近似值,而第二个   是k。 (注意:如果您的课程或评分员需要很长时间,您可以   创建了一个无限循环,需要按下Ctrl-C   键盘。)不允许使用内置函数factorial。

1 个答案:

答案 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)。