2013-03-09 3 views
1

마이크로 컨트롤러에서 두 개의 ODE 첫 번째 명령을 해결하고 싶습니다. 내가 오류가 < 0.001 것으로 예상 100ms마다마이크로 컨트롤러에서 ODE 해결

x'=-k_{1}\cdot (x-x_{ref})\cdot e^{-b\cdot ((x-x_{obs})^{2}+(y-y_{obs})^{2})} 
y'=-k_{1}\cdot (y-y_{ref})\cdot e^{-b\cdot ((x-x_{obs})^{2}+(y-y_{obs})^{2})} 

은 기본적으로 내가 오일러 ​​통합 (룽게 - Kute I)

y(k+1)=y(k)+f(k,y(k))*dT 

를 사용하여 생각을 평가해야한다. 오류율에 도달 할 때까지 반복 실행 횟수를 어떻게 결정합니까?

답변

2

나는 y_{ref}x_{obs}y_{obs} 시간 의존 xy뿐만 아니라 x_{ref}, 추측. 이는 사용할 수있는 ODE 해석기의 수를 제한합니다. 그래서 오일러 법과 Runge-Kutta 법 2 order (나는 이름을 잊었다) 일 수 있습니다. 이것은 시간 지점 x(t), x(t+dT)´, x (t + 2dT)`에서만 ODE의 rhs를 평가합니다.

이러한 두 가지 방법으로 고전적인 단계 크기 제어를 사용할 수 있습니다. 즉, 오일러 방법으로 한 발자국 씩, RK-II 방법으로 한 발자국을 만듭니다. 이 두 단계의 차이점은 오류의 표시기이며 고전적인 단계 크기 제어에 사용할 수 있습니다. 자세한 내용은 숫자 조리법을 살펴보십시오.

+0

'x'와 'y'만 시간에 따라 다릅니다. 나머지는 상수 값입니다. 나는 RK-2로 시도 할 것이다. 내가 이해가 안되는 것은 다음과 같습니다 : 메신저 계산 된 x와 y를 100ms마다 사용하고, 그 시점에서 나는 상수 x_ref, x_obs를 설정합니다. 그래서 매 100ms마다 ODE의 경계를 x (0) = 이전 사이클 값으로 설정합니까? dT = 0.1에 대해 ODE를 실행 하시겠습니까? – Gossamer

+0

물론, 그것은 절대적으로 공통적입니다. 원칙적으로 Runge-Kutta 방법은 반복적으로 작동하고 x (t)를 x (t + dT)로 매핑합니다. 이 다음은 x (t + 2dT)에 매핑됩니다. – headmyshoulder

+0

'Matlab'에서 오일러 방법을 시도 했으므로 결과가 충분합니다. 그래서 저는 마이크로 컨트롤러상에서 오일러 구현을 할 것입니다. 팁 주셔서 감사. – Gossamer

관련 문제