【发布时间】:2016-04-10 20:30:04
【问题描述】:
我对何时使用 ode45(@functionname, tspan, initialvalues,...) 或 ode45('functionname', tspan, initial values,...) 感到有些困惑。我已经看到使用这两种方法的示例,但有时一种有效,另一种无效。
例如
[t,y]=ode45(@MM2, tspan, y0,[],k1,k2,k3) 有效,但 [t,y]=ode45('MM2', tspan, y0,[],k1,k2,k3) 无效。
非常感谢。
【问题讨论】:
-
阅读文档(
help ode45或doc ode45)是回答此类问题的常用方法。网上还有很多旧代码。多年前不推荐使用字符串指定函数(尽管它仍然有效)。使用函数句柄更健壮,生成更快的代码。 -
在该用例中字符串失败的唯一上下文是函数(在本例中为
MM2)是本地或嵌套函数,因此feval无法找到它。我的建议,如果可以的话,总是使用函数句柄。字符串执行是一项遗留功能。