2016-09-26 1158 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