1

我在集成 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”,这样我就可以改变它的值。我该怎么做?

谢谢

4

3 回答 3

2

有两个主要选项。

正如 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' 在函数内部和外部具有相同的值。

于 2013-03-22T05:08:47.490 回答
2

您可以使用函数闭包,它将封装a.

function f = makefun (a)
    f = @(x) x * x * a;
endfunction

f = makefun(3)

[v, ier, nfun, err] = quad(f, 0, 3);
于 2013-03-21T23:08:48.737 回答
1

您的函数实际上取决于两个值 x 和 a,因此:

f=@(x,a) x*x*a
[V, IER, NFUN, ERR] = quad (@(x) f(x,3), A, B, TOL, SING)

我使用了内联函数,因为我认为它更容易理解。

于 2013-05-08T12:59:57.393 回答