ode45
을 사용하는 방법에 의문을 가지고 있습니다. 내부 가변 단계 크기를 사용한다는 것을 알고 있기 때문입니다. 예를 들어, 나는 ODE의 모델을 가지고 있으며 샘플링 시간은 5 분입니다. 따라서, 내 주요 시뮬레이션 루프 내에서 I는 ode45
사용하여 풀어 내 모델의 출력을 얻기 위해 다음 라인을 가지고 Matlab ode45 내부 단계
[T,X] = ode45(@(t,x) model(t,x,u,data),[t t+scenario.Ts],x0);
u
모델의 입력이다
가 data
파라미터와 구조
x0
가있다 현재 시간 단계의 초기 조건 및
[t t+scenario.Ts]
이 초기 및 최종 시간입니다. 내 의심의 여지가
t
과
t+scenario.Ts
ode45
- 솔버 사이에 가변 시간 단계를 사용하므로 내 입력 작업을 소개합니다
u
영향을받을 수 있습니다. 따라서 특정 입력 값
u
은
[t t+scenario.Ts]
사이의 내부 시간 간격을 통해 일정하게 유지된다는 것을 알고 있습니다. 그런 다음, 예를 들어 탱크로 플럭스, 즉 물이 있다면, 시간 단계는이
u
에 직접적인 영향을줍니다.
예를 들어 좀 더 설명해 드리겠습니다. [t t+scenario.Ts]
이상인 경우 나는 u(1) = 10
을 알고 있습니다. 그렇다면 내가 사용해야하는 실제 입력은 u(1)=10/(# of time steps between [t0 tend])
입니다. 그러나, 내부 단계가 가변적이어서 어떤 입력을 사용해야합니까?
내 문제를 이해하고 나를 도울 수 있기를 바랍니다.
@ykaragol [제안 된 수정] (http://stackoverflow.com/review/suggested-edits/12534423)의 코드를 포맷하는 경우 다음 번에 모두 포맷하십시오. 그렇지 않으면 당신의 편집은 아무런 개선없이 거부 될 수 있습니다 ... – Matt
'model' (또는 대표적인 실행 가능한 예)의 코드를 보지 않고 말하기가 어렵습니다. 시간과 관련하여 매개 변수를 변경하려는 것 같습니다. 비효율적이고 부정확 한 결과를 초래할 수있는 딱딱한 시스템을 만들 수 있습니다. 'model' 함수는 시간 간격의 함수가되어서는 안됩니다. 'u'는't' 또는 상태 벡터'x'의 함수 여야합니다. – horchler