2016-09-26 1162 views

回答

0

這就是MATLAB中的ode45函數的工作原理。 ode45(@function,[開始,結束]爲t,y的初始值)。

因此,在上面的例子中,功能是例1,T0爲0,TN(最近點)將4 * PI,和y的初始值爲3

使用ODE45的最重要的部分正確設置功能。注意如何爲dy/dt設置函數。因此,給定一個初始點,它可以在時間t爲y生成剩餘的點,因爲它可以計算y隨着t的增加而變化。

2

@運營商可以創建兩個(也許更多)不同types of handles:簡單和匿名。一個簡單的函數句柄是直接引用一個函數文件並且沒有其他級別的方向的函數。匿名函數是一個句柄,它本身就是一個(非常簡單)的函數,並且擁有自己的工作空間來存儲,關閉和其他目的。所不同的可使用functions功能可以看出:

>> f1 = @example1 
f1 = 
    @example1 

>> f2 = @(t,x) example1(t,x) 
f2 = 
    @(t,x)example1(t,x) 

>> functions(f1) 
ans = 
    function: 'example1' 
     type: 'simple' 
     file: 'C:\Development\example1.m' 

>> functions(f2) 
ans = 
      function: '@(t,x)example1(t,x)' 
       type: 'anonymous' 
       file: '' 
      workspace: {[1x1 struct]} 
    within_file_path: '__base_function' 

匿名函數由於他們比剛纔更增添幾分開銷的函數指針,如果你是parameterizing functions並因此僅真正需要的。

無論創作,ode45及其親屬都將試圖通過ty參數對給您通過feval通過它的把手,只需要參數列表,如果您使用匿名函數與直接文件句柄引用。

+0

值得澄清的是,「@」運算符是函數句柄的運算符,而不是匿名函數。當寫一個類似於'f = @(x,y)x + y;'這實際上意味着'的匿名函數時,「創建一個函數f(x,y)= x + y;並且將它附加到函數句柄f」。除此之外,很好的回答! +1。 – patrik

+0

@patrik這是一個公平點。我經常懶惰,只是不區分上下文,只是把它想象成一個單一的,特殊的操作員。 – TroyHaskin