? 發問時間: 電腦與網際網路程式設計 · 1 0 年前

MATLAB 高手請進

我想要用 matlab 來 plot 以下兩個 differential equations :

(1) dx/dt = k1*x-k2*x*y

(2) dy/dt = k3*x*y-k4*y

where,

k1 = 0.02

k2 = 0.00004

k3 = 0.0004

k4 = 0.04

x0 = 500 <---原本的 x

y0 = 200 <---原本的 y

Plot x vs. y from t=0 to t=500

如果看不懂題目請發問!

謝謝!!! : )

1 個解答

評分
  • 1 0 年前
    最佳解答

    首先你要開題目檔odedx.m和解題檔

    題目檔部分

    function dx=odedx(t,x)

    dx=[0.02*x(1)-0.00004*x(2)*x(1);

    0.0004*x(2)*x(1)-0.04*x(2)];

    我把x設為x(1)y設為x(2)

    注意:檔案名為odedx.m

    -----------------------------------------------------------------

    解題檔

    x0=[500;200]; %設定初始

    tspan=0:0.01:40; %設定t值範圍0~40S

    tol=1e-6;

    options=odeset('RelTol',tol,'AbsTol',[tol,tol]); %設定誤差範圍

    [t,x]=ode45('odedx',tspan,x0,options); %呼叫ode45解題注意題目檔案名稱要對

    %t對y1的圖

    figure(1)

    plot(t,x(:,1),'r');

    title('t 與x1(t)的相對圖形');

    xlabel('time(t)');

    ylabel('x1(t)');

    %t對y2的圖

    figure(2)

    plot(t,x(:,2),'b');

    title('t 與x2(t)的相對圖形');

    xlabel('time(t)');

    ylabel('x2(t)');

還有問題?馬上發問,尋求解答。