Я пытаюсь использовать ode45
в MAtlab и хочу исправить количество точек, которые использует MAtlab (количество шагов времени). Использование опции 'refine'
в ode45
кажется не поможет. Например, если я установил 'refine'
равным 10, Matlab вернет массив из 101. Изменение 'RelTol'
и 'AbsTol'
также не помогает. Я знаю, что можно написать tspan
как [0,t1,t2,t3,...,tn]
, и это решает эту проблему, но я бы хотел исправить количество баллов через опцию 'refine'
.с использованием опции «Refine» в ode45 Matlab
ответ
Возможно, вы неправильно поняли, что на самом деле делает опция 'Refine'
. Из документации для odeset
:
Refine - Если Refine is 1, решатель возвращает решения только в конце каждого временного шага. Если Refine n> 1, решатель подразделяет каждый временной шаг на n меньших интервалов и возвращает решения в каждый момент времени. Уточнение не применяется, когда длина (tspan)> 2 или решатель ODE возвращает решение в качестве структуры.
Другими словами, установка 'Refine'
до 10 не гарантирует, что вы получите 10 выходных точек а то, что вы получите 10 выходных точек на интеграционной такте. В случае адаптивного метода размера шага, такого как ode45
, решатель выбирает, насколько велики этапы, основанные на многих критериях. Если вы хотите заданное количество точек вывода, вы должны указать фиксированные временные шаги, как вы уже сделали через tspan
. Функция linspace
может быть вам полезна.
Другая возможность заключается в том, что вы фактически не применяете свои варианты. Просто позвонить odeset
не достаточно. Вы также должны помнить о том, чтобы передать вывод в ode45
.
@AminR .: Я ответил на ваш вопрос? Является ли использование «Refine» понятным для вас? Если бы этот ответ был полезен, пожалуйста, примите его. Спасибо. – horchler
- 1. Ошибка в `ode45` matlab
- 2. Использование ode45 в Matlab
- 3. Ошибка ODE45 в Matlab
- 4. Решение в ODE45 -Matlab
- 5. Matlab ode45 внутренний шаг
- 6. системы дифференциальных уравнений с ode45 в MATLAB
- 7. Resampling с использованием Интерполяции ode45 данных в Matlab
- 8. ODE45 в неисправности Matlab с диодной моделью
- 9. MATLAB ошибка в строке с ode45
- 10. Решения зависит от времени уравнения Шредингера с использованием MATLAB ode45
- 11. Основное взаимодействие двух тел с использованием ode45 Matlab
- 12. MATLAB: Сохранение параметров внутри ode45 с использованием 'assignin'
- 13. matlab/октава случайное событие ode45
- 14. Matlab: Экспорт переменных из ODE45
- 15. Сравнение odeint's runge_kutta4 с ode45 Matlab
- 16. MATLAB Максимальный предел рекурсии, достигнутый с ode45
- 17. Сохранение значений производных в ode45 в Matlab
- 18. Поиск максимумов функции с использованием ODE45
- 19. Решение дифференциальных уравнений в Matlab, ode45
- 20. MATLAB: передать дескриптор функции класса в ode45()?
- 21. Дифференциальное уравнение решателя (ode45) в MATLAB
- 22. Получение ошибок при использовании ODE45 Matlab Package
- 23. Matlab - Неожиданные результаты решения дифференциального уравнения Ode45
- 24. MATLAB - передача синусоидальной форсирующей функции ode45
- 25. MATLAB ode45 не создает нужный участок
- 26. MATLAB: advance ode45 всего лишь одноразовый шаг
- 27. MATLAB ode45 функция 'Слишком много входов ошибка'
- 28. Математическое моделирование - Matlab ode45-for loop
- 29. Слишком много входных аргументов Matlab ode45
- 30. От ODE45 принять Угловое ускорение MATLAB
Просьба указать код, показывающий, как вы устанавливаете параметры и вызываете 'ode45'. – horchler
@horchler код «Варианты = odeset ('RelTol', 1e-3, 'ABSTOL', 1e-3, 'Уточнить', 1); [T, Y] = ode45 (@prop, [0 , Delt/2, Delt], настоящие, опционы);» –