2014-01-03 3 views
1

Я пытаюсь использовать ode45 в MAtlab и хочу исправить количество точек, которые использует MAtlab (количество шагов времени). Использование опции 'refine' в ode45 кажется не поможет. Например, если я установил 'refine' равным 10, Matlab вернет массив из 101. Изменение 'RelTol' и 'AbsTol' также не помогает. Я знаю, что можно написать tspan как [0,t1,t2,t3,...,tn], и это решает эту проблему, но я бы хотел исправить количество баллов через опцию 'refine'.с использованием опции «Refine» в ode45 Matlab

+0

Просьба указать код, показывающий, как вы устанавливаете параметры и вызываете 'ode45'. – horchler

+0

@horchler код «Варианты = odeset ('RelTol', 1e-3, 'ABSTOL', 1e-3, 'Уточнить', 1); [T, Y] = ode45 (@prop, [0 , Delt/2, Delt], настоящие, опционы);» –

ответ

1

Возможно, вы неправильно поняли, что на самом деле делает опция 'Refine'. Из документации для odeset:

Refine - Если Refine is 1, решатель возвращает решения только в конце каждого временного шага. Если Refine n> 1, решатель подразделяет каждый временной шаг на n меньших интервалов и возвращает решения в каждый момент времени. Уточнение не применяется, когда длина (tspan)> 2 или решатель ODE возвращает решение в качестве структуры.

Другими словами, установка 'Refine' до 10 не гарантирует, что вы получите 10 выходных точек а то, что вы получите 10 выходных точек на интеграционной такте. В случае адаптивного метода размера шага, такого как ode45, решатель выбирает, насколько велики этапы, основанные на многих критериях. Если вы хотите заданное количество точек вывода, вы должны указать фиксированные временные шаги, как вы уже сделали через tspan. Функция linspace может быть вам полезна.

Другая возможность заключается в том, что вы фактически не применяете свои варианты. Просто позвонить odeset не достаточно. Вы также должны помнить о том, чтобы передать вывод в ode45.

+0

@AminR .: Я ответил на ваш вопрос? Является ли использование «Refine» понятным для вас? Если бы этот ответ был полезен, пожалуйста, примите его. Спасибо. – horchler

Смежные вопросы