2016-05-26 19 views
-1

ich dieses Modell für Glukose und Insulin erhalten habe, und ein System von Differentialgleichungen:System von Differentialgleichungen mit ode45 in Matlab

system of differential equations

Wo:

G(t) - die Plasma-Glucosekonzentration zum Zeitpunkt t
I(t) - die Plasmainsulinkonzentration zur Zeit t
X(t) - das interstitielle Insulin zur Zeit t
Gb - die basalen Plasmaglukosekonzentration
Ib - die basalen Plasmainsulinkonzentration

, die das Modell beschreiben. Ich muss einen Algorithmus verwenden, um Parameter mit ode45 in Matlab zu schätzen.

Testdaten ist wie folgt:

Test data screenshot

Ich bin nicht sicher, wie Schreibfunktion für ode45, meine Idee ist wie folgt:

function [] = cwiczenie3_1a(dane) 
a=size(dane); 
u=[]; 
y=[]; 
for i=1:a(1,1) 
    g(i,1)=dane(i,2); 
    j(i,1)=dane(i,3); 
end 
[x t]=ode45(@funkcjajeden,[0 100],[0,0]) 
end 

function [dg] = funkcjajeden(t,g) 
gb=350; 
d=0.1; 
ib=120; 
k1=1; 
k2=2; 
k3=1; 
dg=zeros(size(g)); 
dg(1)=(k1*(gb-g(1)))-d*g(1); 
dg(2)=(k2*(g(2)-ib))-k3*d; 
end 

Antwort

2

einen Blick auf the documentation for ode45 Taking die lösen System der Differentialgleichungen sollten Sie die Funktion in eine Datei schreiben, odefcn.m in diesem Fall:

function dg = odefcn(g,k1,k2,k3,gb,ib,d) 

    dg = zeros(size(g)); 
    dg(1) = k1*(gb-g(1)) - d*g(1); 
    dg(2) = k2*(g(2)-ib) - k3*d; 

Und dann in einer anderen Datei, die Sie es lösen, indem Sie:

gb = 350; 
d = 0.1; 
ib = 120; 
k1 = 1; 
k2 = 2; 
k3 = 1; 

tspan = [0 100]; 
g0 = [0 0]; 
[t,g] = ode45(@(t,g) odefcn(g,k1,k2,k3,gb,ib,d), tspan, g0); 

plot(t,g(:,1),t,g(:,2)) 

Auf diese Weise können sowohl die Werte für G(t) ein I(t) für diese Anfangswerte und Parameter erhalten:,

Image

Dann Sie können mit den Testdaten vergleichen und den Wert der Parameter finden.

Verwandte Themen