Matlab中的功能句柄

时间:2018-10-10 04:41:07

标签: matlab anonymous-function function-handle

嗨〜我正在学习使用Shootig方法来求解带边界条件的微分方程。问题是(来自Sauer教科书):

enter image description here

function z=F(s)
a=0;b=1;yb=3;
ydot=@(t,y) [y(2);4*y(1)];
[t,y]=ode45(ydot,[a,b],[1,s]);
z=y(end,1)-yb; % end means last entry of solution y

我的问题是关于“ ydot = @(t,y)[y(2); 4 * y(1)];”。我知道这是一个函数句柄。但是这里的y(2)和y(1)是什么?我看过带有括号的函数句柄。为什么我们在这里有方括号?

1 个答案:

答案 0 :(得分:0)

由于每个ODE都可以转换为一阶ODE系统,因此几乎所有ODE求解器都需要先转换为一阶ODE,然后才能通过ODE的右侧。

对于二阶ODE y''= 4y设置y_1 = y和y_2 = y'。然后y_1'= y'= y_2和y_2'= y''= 4y_1。现在您可以编写:

enter image description here

现在很明显,您的函数句柄只是此一阶ODE的右侧。