На основании документации не представляется возможным, что вы можете контролировать размер внутренних шагов с помощью ode45
при решении уравнения, но вы можете контролировать время точки, в которых генерируется выход. Вы можете сделать это, как указано в вашей закомментированной строке:
tspan = to:0.01:tf; % Obtain solution at specific times
[T, Y] = ode45(name, tspan, init, options);
Что касается точности решений при использовании фиксированных размеров шагов, обратитесь к этой выдержке из приведенной выше ссылки:
Если tspan
имеет более двух элементов [t0,t1,t2,...,tf]
, то решатель возвращает решение, оцененное в заданных точках. Однако решатель не подходит точно к каждой точке, указанной в tspan
. Вместо этого решатель использует свои собственные внутренние шаги для вычисления решения, а затем оценивает решение в запрошенных точках в tspan
. Решения, полученные в указанных точках, имеют тот же порядок точности, что и решения, рассчитанные на каждом внутреннем этапе.
Указание нескольких промежуточных точек мало влияет на эффективность вычислений, но для больших систем это может повлиять на управление памятью.
Таким образом, даже когда вы указываете, что хотите получить решение в определенные моменты времени в выходных данных, решатели все еще предпринимают ряд адаптивных шагов между указанными вами точками времени, приближающимися к значения в эти фиксированные моменты времени.