2017-11-28 5 views
0

중 하나가이 그냥 정말 작은 실수가 될 수도 있습니다 검색되지하지만 함수를 호출하면 오류 받고 있어요 :기능은 매개 변수

error: 'D' undefined near line 7 column 25 

내 기능은 다음과 같습니다

function dxdt = s(t,u,D,D0,ni,ax,ay,bn,bx,ex,ey,epsilon) 
    D = D0*(1+epsilon*sin(2*pi*t)); 
    n = u(1); 
    x = u(2); 
    y = u(3); 
    dxdt = [D*ni - D*n - (ax*(n/(bn+n))*x); ... 
      -D*x+ex*ax*(n/(bn+n))*x-ay*(x/(bx+x))*y; ... 
      -D*y+ey*ay*(x/(bx+x))*y]; 
end 

나 '를 여기에 모든 것을 넣고 있지만, 나는 D = ... 부분 만이 중요하다고 생각합니다. 그리고 내 스크립트에서 나는 이런 식으로 함수를 호출하고 있습니다 :

@(t,u) s(t,u,D,D0,ni,ax,ay,bn,bx,ex,ey,epsilon) 

이 기능은이해야 두 개의 인수를 허용 tu 것 : 통화에서

[T,U] = ode45(@(t,u) s(t,u,D,D0,ni,ax,ay,bn,bx,ex,ey,epsilon),interval,u0); 
+1

을 정의한다 : 또한 변수 범위에 관한 몇 가지 문서를 확인하는 것이 도움이 될 수 있습니다

? –

+0

나는 함수에서만 이것을 정의하고있다. 스크립트에'D = D0 * (1 + 엡실론 * sin (2 * pi * t) '를 입력해야합니까? –

+0

함수에서만 정의 된 경우, 함수에 전달 된 매개 변수 중 하나가되어서는 안됩니다. 함수에서. – am304

답변

0

ode45에이 anonymous function 작성중인 호출 될 때 전달되어야한다. 익명 함수를 만들기 전에 다른 모든 변수 (예 : D)를 정의해야합니다. 귀하의 오류는 그들이 잘못되었음을 나타냅니다. 기능 s를 호출 할 때

이 추가 인수는 s에 또한 be fixed at the value they had when the anonymous function was created, 당신은 익명 함수를 만든 후 D을 변경 너무도 경우, 함수는 여전히 D의 이전 값을 사용합니다. 당신의 호출 스크립트에서`D`