左黎曼和MATLAB的无限极限

时间:2014-11-03 11:43:38

标签: matlab limit infinity riemann

假设我已经创建了一个函数Sn = LeftRiemannSum(f,left,right,N),它计算了从左到右的间隔内的左黎曼和N子域。即:

对于所有子域i = 0到N-1,

Sn = sum(f(xi) h)。 f是我的函数,xi = left + i h,所以输入参数left = x0,right = xN。

设f为我的匿名函数(ex f = @(x)(x。* log(1 + x))。

我还估算了不同N的Sn,从N = 10到100000.

现在,我只想在N - >时计算Sn系列的值。无穷。在函数内部我有一个for循环[for i = 0:(N-1)]所以我将有无限循环..

我可以以某种方式将功能传递给限制'命令?有线索吗?

感谢名单!

PS:我的函数LeftRiemann Sum的代码的主要部分如下:

for i=0:(N-1)
    x=x0+i.*h;
    y=f(x);
    A=y.*h;
    S=S+A
  end
   Sn=S

1 个答案:

答案 0 :(得分:0)

如果N -> inf,黎曼和的值将是区间[左,右]中函数的积分。

可以像这样引入支票:

function Sn = LeftRiemannSum(f, left, right, N)

if isinf(N)
    Sn = exact integral of the function f in the interval [left, right]
    return
end

% // Rest of the code

这里的挑战是计算f的分析积分。除非您使用符号数学工具箱,否则Matlab算法的所有结果都将是近似值。

由于你无法真正运行你的循环直到无穷大,我看到两个选项:

  1. 我会声明N的限制,如果输入大于限制则抛出错误。
  2. Internaly将无穷大定义为一个高数字,每当您收到inf作为参数时,您可以将其替换为N = 1e200。考虑到使用此策略,您的算法可能需要很长时间才能完成执行。