如何在Matlab中设置ode函数



对我来说,还不清楚如何在matlab中使用ode45。我有一个向量u。有人知道这个错误是什么吗?

function [v, t, d] x =deep(l)
x = max(u(:,1));
v = u;
t = 1;
d = 1;
options = odeset('Events', @deep)

但当我用呼叫ode45时

ode45(@odefun, [0 85], [0 0], options)

我得到这个错误:

eventValue = feval(eventFcn,t0,y0,eventArgs{:});
Error in ode45 (line 148)
odeevents(FcnHandlesUsed,odeFcn,t0,y0,options,varargin); ```

您的文本和代码中存在一些不一致。

  1. "我有一个向量u〃:

但是你的函数定义是:

function [v, t, d] x =deep(l)
x = max(u(:,1));
v = u;
t = 1;
d = 1;

函数定义中的向量u在哪里?

ode45功能集成了以下类型的功能:

y'=f(t,y(

应该传递给ode45的函数应该有两个参数,并且应该返回一个输出:

  • 输入独立参数t。该函数集成在值t=t0t=tf之间
  • 输入y,因变量的矢量
  • 输出dy,一个具有因变量导数的向量
  1. 当您调用ode45函数时:

    ode45(@odefun,[085],[00],选项(

您没有在任何地方定义odefun,MATLAB应该在那里抛出一个错误。

您必须更改deep函数和ode45调用才能使其工作:

dy = deep(t,y)
dy = ? <- define it

并称之为:

ode45(@deep,tspan,y0)

最新更新