На самом деле, я заметил, что это происходит, когда симуляция останавливается из-за терминального события, а затем начинается снова с той же точки (начальное время и условия), которая остановилась.
Технически, из-за арифметических неточностей вначальные условия MATLAB повторно обнаруживает то же событие, которое заставило его ранее остановиться.MATLAB не способен различить это, НО он запрограммирован на НЕ останавливаться в событиях терминала, которые происходят сразу после первого успешного шага (для справки см. Функцию odezero
).Тем не менее, он записывает событие.
Следовательно, в следующий раз, когда ода останавливается из-за терминального события, ie
будет с добавлением с новым индексом, и вот когда (ипочему) ie
- это вектор с двумя элементами.