我在集成 Octave 时遇到了一些问题。我有以下代码:
a=3;
函数 y = f (x)
y = x*x*a;结束功能
[v,ier,nfun,err]=quad("f",0,3);
函数中的“a”给我带来了麻烦。Octave 说 'a' 是未定义的。所以,如果我不是 'a' 将数字 3 放在函数 y 中,一切都会正常工作。但是,我想在函数中有“a”,这样我就可以改变它的值。我该怎么做?
谢谢
有两个主要选项。
正如 voithos 所说,选项 1 将“a”作为函数的输入。
选项 2 是将“a”定义为全局变量。
global a=3;
function y = f (x)
global a
y = x*x*a;
endfunction
[v,ier,nfun,err]=quad("f",0,3);
这将导致 'a' 在函数内部和外部具有相同的值。
您可以使用函数闭包,它将封装a
.
function f = makefun (a)
f = @(x) x * x * a;
endfunction
f = makefun(3)
[v, ier, nfun, err] = quad(f, 0, 3);
您的函数实际上取决于两个值 x 和 a,因此:
f=@(x,a) x*x*a
[V, IER, NFUN, ERR] = quad (@(x) f(x,3), A, B, TOL, SING)
我使用了内联函数,因为我认为它更容易理解。