簡體   English   中英

八度積分

[英]Octave integrating

我在Octave中集成時遇到一些問題。 我有以下代碼:

a = 3;

函數y = f(x)
y = x * x * a;

終端功能

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

函數中的“ a”給我帶來麻煩。 八度表示“ a”未定義。 因此,如果我不是在功能y中將數字3替換為“ a”,則一切正常。 但是,我想在功能中使用“ a”,以便可以更改它的值。我該怎么做?

謝謝

您可以使用函數閉包,該閉包將封裝a

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

f = makefun(3)

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

有兩個主要選項。

如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”在函數內部和外部具有相同的值。

您的函數實際上取決於x和a這兩個值:

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

我使用內聯函數,因為我認為它更易於理解。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM