我想将“\ 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;
答案 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
是您的匿名函数的输入,但后来也是一个双重输入。它在语法上是正确的,但有点难以阅读。考虑使用不同的变量名称,或包括明确的注释(或两者!)