ode中函式引數傳遞

2021-08-20 19:30:17 字數 916 閱讀 8249

**:

在用odesolver(ode45, ode15s, …)來解微分方程的時候,最基本的用法是:

[t, y] = odesolver(odefun, tspan, y0);

這裡的odefun是待求的微分方程。那麼odefun中一般會含有多個系統引數,通常要通過改變引數來觀察系統動態的變化。那麼如何在呼叫odesolver的時候傳遞引數呢?

以前,我都是用全域性變數的寫法,將引數在主函式和子函式中分別都定義為global,這樣做有乙個弱點:針對系統不同,引數的表達與數量有變化的時候,程式通常要做變化,通用性不強。那麼最好是在呼叫的時候進行傳遞,方法如下:

實際上很簡單,就是將一切其他的引數都寫在括號中就可以了!但是要注意的是:odesolver的第四個引數一定是options,也就是對微分方程新增補充功能的引數(型別為structure,要用odeset來定義),那麼其他系統引數就只能從第五個引數寫起。也就是說,第四個引數不可以為空,一定要定義某種option加進去,或者用使用空白矩陣(placeholder)。這樣呼叫的時候格式就是:

[t, y] = odesolver(odefun, tspan, y0, options, parameter1, parameter2);

或者

[t, y] = odesolver(odefun, tspan, y0, , parameter1, parameter2);

然後定義微分方程的時候也要有引數的地方:

function dydt = odefun(t, y, parameter1, parameter2)

dydt = [ eqn-1; eqn-2; …];

就ok了。

php中函式引數傳遞

php中函式引數傳遞有形參傳遞 借用c語言等程式語言的說法 即就是把變數的值賦值給函式的引數,對函式引數所做的一切操作都與原始變數無關。php function testx b a 5 c testx a print r a 5 print r c 3而址傳遞 引用傳遞 則是把變數的位址給函式的引數...

C C 中函式引數傳遞

c或c 中函式的引數傳遞包括 值傳遞 指標傳遞 引用傳遞這三種方法。以經典的交換兩個整數為例 問題描述 輸入描述 兩個待交換的整數。程式輸出 交換後的兩個整數。includevoid myswap int x,int y int main include 指標傳遞,函式體內只有指標值的變化 void...

函式引數傳遞

引數傳遞的本質 實參給形參賦值的過程 1.1 位置引數之值傳遞 值傳遞指傳遞不可變型別,一般指string tuple和number型別 def func1 a print a a 10 print a temp 20 將temp作為實參傳遞給func1函式,將賦值給形參a 相當於 a temp f...