Octave计算泰勒级数的指数函数

时间:2014-05-14 11:42:23

标签: octave series factorial exponential

我在Octave有一个问题要解决,但我无法击败它。

我必须用x = 1来计算指数函数的泰勒级数,并且因子必须是一个额外的函数(自定义)。

我最近找到的解决方案:

这是计算阶乘的阶乘函数。

function answer = factorial(n)
  if(n<0)
    error("no definition for negative factorial");
  endif

  answer=1;

  if(n==0)
    return;
  else
    for i=2:n
        answer = answer*i;
    endfor
  endif
endfunction

这是包含因子函数的泰勒函数

function answer = taylor(n)
 answer = 1 ./ factorial(n)
endfunction

现在我的问题:

当我将泰勒的总和称为0到5之间时(例如)

sum taylor([0:5])

然后我得到1

的解决方案
answer =  1
ans =  1

它为每个步骤解决了1个数字,最后它显示了1个不正确的步骤。 e的正确答案是2.7182。 我的代码中有错误。 你知道如何击败泰勒系列,我能得到正确的答案吗? 提前谢谢。

2 个答案:

答案 0 :(得分:1)

好的,我已经击败了泰勒级数指数函数问题。 :-) 我的解决方案。目前输出有点奇怪但是正确。

function answer = taylor(n)
answer = 0
  for i = 0:n
    erg = 1^i / factorial(i)
    answer = answer + erg
  end
endfunction

function answer = factorial(n)
  if(n<0)
    error("no definition for negative factorial");
  endif

  answer=1;

  if(n==0)
    return;
  else
    for i=2:n
        answer = answer*i;
    endfor
  endif
endfunction

最后只打电话给&#34; taylor(5)&#34;例如,它应该计算&#34; e&#34;

答案 1 :(得分:0)

已经在Octave中定义了一个阶乘函数。如果输入向量,它将返回一个向量,所以:

octave:1> factorial(0:6)
ans =
     1     1     2     6    24   120   720

如果你真的必须定义你自己的阶乘函数,那么你应该把它写成矢量化。如果是这样,您可以通过以下方式获得所需的结果:

sum(1./factorial(0:20))
ans =  2.71828182845905