梯形规则matlab

时间:2011-12-06 15:03:18

标签: math matlab

我想将“\ int_ {0} ^ {1}(exp(-int_ {0} ^ {y} f(x)dx))dy”与我的基本梯形算法集成。我收到一个错误声明,但我应该将g定义为一个函数。你知道怎么做吗? 非常感谢您的回答!

function y = trapapadbl(low1, up1,low2,up2,intstep1,intstep2,f)
g = 0;
step1 = (up1 - low1) / intstep1;
step2 = (up2 - low2) / intstep2;

for j = low1 : step1 : up1
    g = g + feval(f,j);
end
g = @(y)(g - (feval(f, low1) + feval(f, up1))/2) * step1;
for i = low2 : step2 : up2
    y= y + feval(g,i);
end
y= (y - (feval(g, low2) + feval(g, up2))/2) * step2;

1 个答案:

答案 0 :(得分:2)

>> trapapadbl(0,1,0.1,0,1,0.1,@sin)

??? Undefined function or variable "y".

Error in ==> trapapadbl at 12
    y= y + feval(g,i);

如果不努力尝试理解您的代码(!),则错误是y从未初始化。在具有值之前,您无法向y添加任何内容。当我将y初始化为0时,代码会运行,但我会将0作为输出,这不是将sin从0集成到1时发生的情况。我可能正在调用功能错误,但这是需要注意的事情!

此外,您的代码令人困惑,因为您使用变量g作为double(数字)和函数,即使在同一行!出现同样的问题,因为y是您的匿名函数的输入,但后来也是一个双重输入。它在语法上是正确的,但有点难以阅读。考虑使用不同的变量名称,或包括明确的注释(或两者!)

相关问题