Event-based ODE inside a handle class
Show older comments
Greetings. I'm trying to find a way to use event-based ode insidea class as the code below:
The equation is more omplex and I'm using this instance for simplicity, the error I get is the same
classdef ODEevent < handle
properties
tstart = 0;
tend = 5;
end
methods
function odeObj = ODEevent()
% Instance of the class
end
function [value, isterminal, direction] = odeEvent(this, x)
x_des = x;
value = x_des - 1;
isterminal = 1;
direction = 0;
end
function solveODE(this)
tspan = [this.tstart this.tend];
x0 = 0;
odeOpts = odeset('Events', @this.odeEvent);
[t, x] = ode45(@(t,x) 2*t, tspan, x0, odeOpts);
end
end
end
The error I'm getting is:
Error using ODEevent/odeEvent
Too many input arguments.
Error in ODEevent>@(varargin)this.odeEvent(varargin{:}) (line 22)
odeOpts = odeset('Events', @this.odeEvent);
Error in odeevents (line 28)
eventValue = feval(eventFcn,t0,y0,eventArgs{:});
Error in ode45 (line 148)
odeevents(FcnHandlesUsed,odeFcn,t0,y0,options,varargin);
Error in ODEevent/solveODE (line 23)
[t, x] = ode45(@(t,x) 2*t, tspan, x0, odeOpts);
Thanks in advane
Regards
Accepted Answer
More Answers (0)
Categories
Find more on Ordinary Differential Equations in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!