2014-12-11 3 views
0

그래서 당뇨병과 관련된 3 개의 미분 방정식이 있습니다. 3 개 중 2 개를 그려야하는데, 그 중 3 개는 G와 I 인 하위 플롯입니다. 내가 그에게 명령 창 인쇄를 실행하려고 몇 가지 이유를 들어 : "충분하지 않은 입력 인수를"이것은의 기준입니다 :Odes15 서브 플로팅, 미분 방정식

function dx = problem1(t,x)  
    P1 = 0.028735 ; 
    P2 = 0.028344 ; 
    P3 = 5.035 * 10^(-5) ; 
    Vi = 12 ; 
    n = 5/54 ; 
    D_t = 3*exp(-0.05*t) ; 
    U_t = 3 ; 
    Gb = 4.5; 
    Xb = 15; 
    Ib = 15; 

    G = x(1); 
    X = x(2); 
    I = x(3); 

    dx = zeros(3,1); 
    dx(1) = -P1*(G-Gb) - (X-Xb)*G + D_t ; 
    dx(2) = -P2*(X-Xb) + P3*(I-Ib) ; 
    dx(3) = -n*I + U_t/Vi ; 

    [T,X] = ode15s(@problem1,[0 60*24],[4.5 15 15]) ; 

subplot(3,1,1); 
plot(T,X(:,1)); % Plot G 
subplot(3,1,2); % Second subplot 
plot(T,X(:,2)); % Plot I 
+0

최종 출력물은 무엇입니까? – NKN

+0

글쎄, "충분하지 않은 입력 인수"라고 나에게 말하고있다. –

+0

Matlab 오류 메시지는 매우 유용합니다. 완전한 메시지 란 무엇이며 어떤 메시지가 발생합니까? – David

답변

2

이 기능을 실행하고 MATLAB은 D_t = 3*exp(-0.05*t);을 평가하려고 할 때 오류가 발생 . t 값이 제공되지 않았기 때문에 MATLAB은 사용되지 않은 점 t 변수를 지정해야한다는 오류를 발생시킵니다.

코드의 주된 문제점은 기능 설계에 있습니다. 즉, ode15s에는 tx을 허용하고 dx을 반환하는 함수가 필요합니다. 그러나 현재 배치되어 있으므로 에 대한 호출은 problem1 내에 포함되며 그 자체는 tx이 필요합니다. 그것은 닭 또는 계란 문제입니다.

모든 입력

이 설계 문제 제외 올바른하고 용이 ODE의 정의는 별도의 기능을 이용하여 보정 될 수있다 :

function problem1 

    [T,X] = ode15s(@ODE,[0 60*24],[4.5 15 15]) ; 
    subplot(3,1,1); 
    plot(T,X(:,1)); % Plot G 
    subplot(3,1,2); % Second subplot 
    plot(T,X(:,2)); % Plot I 

end 

function dx = ODE(t,x) 
    P1 = 0.028735 ; 
    P2 = 0.028344 ; 
    P3 = 5.035 * 10^(-5) ; 
    Vi = 12 ; 
    n = 5/54 ; 
    D_t = 3*exp(-0.05*t) ; 
    U_t = 3 ; 
    Gb = 4.5; 
    Xb = 15; 
    Ib = 15; 

    G = x(1); 
    X = x(2); 
    I = x(3); 

    dx = zeros(3,1); 
    dx(1) = -P1*(G-Gb) - (X-Xb)*G + D_t ; 
    dx(2) = -P2*(X-Xb) + P3*(I-Ib) ; 
    dx(3) = -n*I + U_t/Vi ; 
end 

주 :

  • 첫번째 라인 function problem1 의 약자입니다. 나는 나 자신이 후자의 형태를 선호하지만 나는 소수에 속한다.
  • ode15s@ODE에 전달 된 함수 핸들은 @(t,x) ODE(t,x)에 대한 짧은 기호입니다. 나는 후자의 양식을 더 좋아하지만, 당신이 parametrizing functions이 아닌 이상 덜 유효하지 않습니다.
  • 중첩 함수를 사용하여 problem1 함수에 모델 상수에 대한 함수 액세스 권한을 부여 할 수도 있지만 여기서는 별도의 함수를 선택했습니다.
+0

감사합니다 !!! 나는 교수가 우리에게 보여 줬을 때 내가 해결책을 흘끗 보았던 이래로 이것이 옳다는 것을 안다! –

관련 문제