2013-03-21 75 views
1

我在集成八度時遇到了一些問題。 我有以下代碼:八度積分

a = 3; y = x(x)
y = x * x * a;

endfunction可寫

[V,IER,nfun,ERR] =四( 「F」,0,3);

這個'a'函數給我帶來麻煩。Octave說'a'是未定義的。所以,如果我不是'a'在函數y中放置數字3,那麼一切正常。然而,我想在函數中有'a',所以我可以改變它的值。我該怎麼做?

感謝

回答

1

你可以使用一個功能關閉,這將封裝a

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

f = makefun(3) 

[v, ier, nfun, err] = quad(f, 0, 3); 
1

有兩個主要選項。

如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'在功能內外都是相同的值。

0

你的函數實際上是依賴於兩個值,X和A,爲此:

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

我用內聯函數,因爲我認爲這是比較容易理解。