对我来说,还不清楚如何在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); ```
您的文本和代码中存在一些不一致。
- "我有一个向量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=t0
和t=tf
之间 - 输入
y
,因变量的矢量 - 输出
dy
,一个具有因变量导数的向量
当您调用
ode45
函数时:ode45(@odefun,[085],[00],选项(
您没有在任何地方定义odefun
,MATLAB应该在那里抛出一个错误。
您必须更改deep
函数和ode45
调用才能使其工作:
dy = deep(t,y)
dy = ? <- define it
并称之为:
ode45(@deep,tspan,y0)