Possible bug in "evolve"?

19 views
Skip to first unread message

kaynama

unread,
Apr 5, 2011, 3:37:29 PM4/5/11
to ellipsoids, kay...@ece.ubc.ca
Hi,

I was trying to compute the backward reach set of a switched system
that I ran into an issue with the function "evolve". Let's say we try
to iteratively evolve an already computed reach set twice (or more).
If the first reach set is computed using only the EXTERNAL
approximating ellipsoids, then an error is generated when evolving the
output of a previously applied evolve function. Interestingly,
there's no error when either internal or both external and internal
approximating ellipsoids are used for the computation of the first
reach set. I'm providing a trivial example below to re-generate the
error. Any ideas as to why this happens?

Regards,
Shahab

Consider a simple example in which the dynamics change 3 times within
the backward time interval T=[1 0]:

n = 2; m = 1;
a1 = rand(n);
b1 = rand(n,m);
a2 = rand(n);
b2 = rand(n,m);
a3 = rand(n);
b3 = rand(n,m);

op.approximation = 0; % 0:external, 1:internal, 2:both
L0 = rand(n,5) - .5;
U = ell_unitball(m);
X0 = ell_unitball(n);

lsys1 = linsys(a1, b1, U, [], [], []);
rs1 = reach(lsys1, X0, L0, [1 0.7], op);
lsys2 = linsys(a2, b2, U, [], [], []);
rs2 = evolve(rs1, 0.4, lsys2);
lsys3 = linsys(a3, b3, U, [], [], []);
rs3 = evolve(rs2, 0, lsys3); %The error is generated here


??? Index exceeds matrix dimensions.

Error in ==> reach.evolve at 747
l0 = RS.initial_directions(:, ii);

Reply all
Reply to author
Forward
0 new messages