2013-11-24 4 views
0

나는 아주 간단한 해결책이있다. I는 다음과 같다 기능을 가지고 x 구성 시스템 (위치와 운동량)를 포함하는 4 개 개의 요소 열 벡터이다Matlab의 ode45가 초기 조건을 함수로 보내지 않는다.

function [dx] = myFunction(x) 

. 나는 수치과 같이,이 구성 공간에 몇 개의 입자를 통합하는 ode45를 사용하는 것을 시도하고있다 :

Index exceeds matrix dimensions 
Error in myFunction (line 9) 
x2 = x(2); 

ode45을 통과 :

[Tout,Yout] = ode45(@(x,t)myFunction(x),[t0 tfinal],x0); 

내가 실패 이것을 시도 때마다, 다음과 같은 오류를 수신 myFunction이 기대하는 4 개의 요소 벡터 대신에 x=0이라는 단일 요소를 myFunction에 삽입하십시오. 이로 인해 색인 오류가 발생합니다. 왜 이런 일이 일어나고 어떻게 해결할 수 있습니까? 나는 ode45을 제대로 사용하지 않는 것 같습니다.

+0

어떻게'x0' 변수를 초기화합니까? –

답변

0

ODE 통합 함수 are of the form y' = f(t,y) 즉, 첫 번째 입력 인수로 시간을, 두 번째로 상태 벡터를 가져야합니다 (ODE가 시간에만 의존하는 드문 경우에서 상태 벡터를 생략 할 수 있음). 너는 그렇게하지 않는다. myFunction은 상태 벡터만을 입력으로 사용하는 것이 좋습니다. 그러나 익명 함수를 x에서 myFunction으로 시간이 지나가도록 잘못 정의했습니다. tx을 반대하는 당신의 필요 :

[Tout,Yout] = ode45(@(t,x)myFunction(x),[t0 tfinal],x0); 

희망이 모든 것을 해결됩니다.

+0

@JGSuw : 코드를 작동시킬 수 있었습니까? 제 대답이 도움이된다면 동의하십시오. 고맙습니다. – horchler