【发布时间】:2014-03-20 09:04:34
【问题描述】:
这是我的数值方法课程。我正在努力理解 MATLAB 及其语法,但我是 100% 自学的,所以如果我的尝试看起来很荒谬,请多多包涵。
我写了这个非常简单的函数来近似数字 e
function e= calcEulerLimit(n)
e = (1 + 1./n).^n;
end
这是数字 e 的“基本”定义,使用从 n 到无穷大的方法。对于 MATLAB,我定义了以下向量(当我在后者中谈论 n 时,我总是指这个向量n)
n=[1:1:10]=[ 1 2 3 4 5 6 7 8 9 10 ]
并且输出工作正常,正如我预期的那样,当我在 MATLAB 中调用我的函数时,它对向量 n 输入很敏感。
>> calcEulerlimit(n)
ans =
2.0000 2.2500 2.3704 2.4414 2.4883 2.5216 2.5465 2.5658 2.5812 2.5937
现在我想用泰勒方法做与上面完全相同的事情,使用无限求和公式来描述 e,这是我卡住的地方,下面的简单代码可以工作:
function e = calcEulerSum(n)
e=1; % base-case, start variable
for i=1:1:n % for loop with step size one
e=e+1/factorial(i)
end
end
但是,当我想输入一个向量(例如 n)时,这个输入当然不起作用,它通过所有变量进行计算。
我尝试了另一个 for 循环和一个 while 循环,但 while 循环似乎永远不会终止:
function e = calcEulerSum3(n)
while n
e=1;
e = e + 1./cumprod(n);
end
end
使用cumprod(n) 获取我的向量n 的每个列元素的阶乘值。
【问题讨论】:
标签: matlab