我在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。 我的代码中有错误。 你知道如何击败泰勒系列,我能得到正确的答案吗? 提前谢谢。
答案 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