假设我已经创建了一个函数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
答案 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算法的所有结果都将是近似值。
由于你无法真正运行你的循环直到无穷大,我看到两个选项:
N
的限制,如果输入大于限制则抛出错误。inf
作为参数时,您可以将其替换为N = 1e200。考虑到使用此策略,您的算法可能需要很长时间才能完成执行。