[matlab]數值計算微分方程組與ode45傳參問題

NO IMAGE

[matlab]數值計算微分方程組

當我們使用dsolve無法進行符號求解時,我們使用ode45函式

函式原型為

[t,y] = ode45(odefun,tspan,y0)example
[t,y] = ode45(odefun,tspan,y0,options)example
[t,y,te,ye,ie] = ode45(odefun,tspan,y0,options)
sol = ode45(___)

首先編寫函式檔案.m作為ode45的第一個引數odefun

function y = fun(t,x,flag,k)
%flag is a [] to mark the args
%---------------
%some global setting
lamda=1;
%---------------
y=[x(2)*k,lamda*x(2)*(1-x(1)-x(2))-k*x(2)]';
end

t為預設自變數,x為一個因變數向量。返回值是對應的因變數向量的一階導數,或者我們可以寫成

function y = fun(t,x,flag,k)
%flag is a [] to mark the args
%---------------
%some global setting
lamda=1;
%---------------
y=zero(2,1)
y(1)=x(2)*k;
y(2)=lamda*x(2)*(1-x(1)-x(2))-k*x(2);
end

然後編寫ode45

[t,x]=ode45('fun',tspan,[0,x0],[],each);

tspan為[0:10] 自變數範圍
第三個引數為初值向量
第四個引數空陣組作flag 區別開傳入fun的引數和ode45所需要的引數