2015-10-06 7 views
-2

Для проекта мне нужно понять код matlab, но поскольку я совершенно новый, я действительно не понимаю, что происходит. У меня есть файл функции и файл сценария.MatLab ode45 описание

Функция:

function dxdt = sniffer_ode(t,x,par,tu) 

X = x(1); 

R = x(2); 


k1 = par(1); 

k2 = par(2); 

k3 = par(3); 

k4 = par(4); 


S = interp1(tu(:,1),tu(:,2),t); 


dxdt(1) = k3*S-k4*X; 

dxdt(2) = k1*S-k2*X*R; 


dxdt = dxdt(:); %dxdt should be column 

и файл сценария:

%sniffer 
close all 

%initial conditions: 
X0=0; R0=0; 
x0=[X0 R0]; 
%parameters: 
k1=1; k2=1; k3=1; k4=1; 
par=[k1 k2 k3 k4]; 
%input: 
tu=[ 0 , 0 
    1 , 0 
    1.01, 1 
    20 , 1]; 

[t,x] = ode45(@sniffer_ode,[0 20],x0, [],par,tu); 

plot(t,x); 

Таким образом, вопрос: Что происходит? Мне также нужно построить S на том же рисунке, что и X и R. Как мне это сделать?

Я ценю вашу помощь!

ответ

0

Это действительно основной вопрос Matlab. Существует tons of information о вашем requested topic. Я думаю, что эти slides помогут вам на правильном пути.

Однако быстрое объяснение; первый код, который вы предоставляете, - это функция, которая описывает ваше обыкновенное дифференциальное уравнение. Эта функция всегда должна иметь вид x' = f(t,x,...). Здесь t - это время и x - это состояние. После состояния (на месте точек ...) вы можете определить другие входные параметры, например, в вашей функции ode. Кроме того, функция interp1interpolates предоставила данные.

Второй код, который вы указываете, - это код, который вы начинаете с Matlab. Определяются параметры, после которых обыкновенное дифференциальное уравнение решается и строится на графике.

Если у вас есть дополнительные вопросы, я бы порекомендовал вам сначала попытаться найти ответ, используя search engine.