在 Matlab 中使用 ode45 求解 y'=y 和 y'=t

using ode45 to solve y'=y adnd y'=t in Matlab

我首先为 dy/dt=y 和 dy/dt=t 定义了函数:

function dy=d(y):
    dy=y
end

function ddy=dd(t):
    ddy=t
end

然后我分别使用了ode45:

[t,y]=ode45('d',[1 10],1)
[t,y]=ode45('dd',[1 10],1)

其中 returns 以下错误:使用 d 时出错 输入参数过多。

我的问题是:

  1. 我哪里错了?
  2. Matlab怎么知道y还是t是自变量?当我定义第一个函数时,它可以合理地解释为 dt/dy=y 而不是 dy/dt=y。是否有定义函数的内置约定?

第一件事:ode45 上的文档在 mathworks 网站上,或者您可以通过输入 help ode45 从控制台获取它们。

你传入的函数需要带两个变量,y然后t。正如您所注意到的,仅使用一个就不可能区分仅 y 的函数和仅 t 的函数。第一个参数必须是独立的,第二个是依赖的。

尝试将您的函数定义为具有相同主体的 dy = d(t, y)ddy = dd(t, y)

另请注意,虽然使用表示函数名称的字符串应该有效,但您可以使用 @d@dd 直接引用函数。