首页 > 解决方案 > matlab中的函数句柄

问题描述

嗨〜我正在学习使用shootig方法来解决具有边界条件的微分方程。问题是(来自绍尔教科书):

在此处输入图像描述

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) 是什么?我见过带括号的函数句柄。为什么我们这里有方括号?

标签: matlabanonymous-functionfunction-handle

解决方案


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

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

在此处输入图像描述

现在很明显,您的函数句柄就在这个一阶 ODE 的右侧。


推荐阅读