Severity: Warning
Message: fopen(/home/polpe/.phpsession/ci_sessionf86a581f525854e4b373cb2d8e6b98b080666f1f): failed to open stream: No space left on device
Filename: drivers/Session_files_driver.php
Line Number: 159
Backtrace:
File: /home/polpe/public_html/application/controllers/Main.php
Line: 17
Function: library
File: /home/polpe/public_html/index.php
Line: 315
Function: require_once
Teljes Matlab script
(és live script)
kiegészítő függvényekkel.
Tekintsd meg LiveEditor nézetben is!
Reviewed on 2017. September 26.
Azt vizsgálom, hogyan viselkedik a modell akkor, ha az $F_0$ bemenetnél nem ismerem a $\mu_{\mathrm{max}} =\delta$ értékét. Célom, hogy a rendszert $S_0$-ba stabilizáljam, ezért használok egy $F_0 =\frac{\delta_0 \text{ }S_0 \text{ }V}{q\left(S_0 \right)}$ bemenetet. Azonban $\delta_0$ csupán a nominális értéke a tényleges $\delta$-nak. Ilyen $F_0$ értékek mellett, minnél nagyobb $\delta_0$ és $\delta$ közti eltérés, annál jobb ki fog térni az egyensúlyi pont a ténylegestől. Ha ${\delta <\text{ }\delta }_0$ és nincs visszacsatolás, a biomassza kimosódik.
Ha csak egy kicsi intervallumon is mozog a $\delta \in \left\lbrack 0\ldotp 8,1\ldotp 2\right\rbrack$, akkor is olyan hatalmas mértékben mozog az egyensúlyi pont, hogy lehetetlenség ezt a Trofino módszerrel vizsgálni (az egyes deltákra kapott régiók nem fogják metszeni egymást). Az egyetlen megoldás, ha feltételezzük, hogy a működés során a $\delta$ értékét megbecsüljük (amúgyis, konstansnak feltételezzük).
global SCOPE_DEPTH
SCOPE_DEPTH = 0;
P_generate_symvars_v5(2,1);
syms X S V Sf Y K1 K2 d0 S0 k real
┌P_generate_symvars_v5 └ 0.39746 [sec]
Legyen $\mu \left(S\right)=\frac{\delta \text{ }S}{q\left(S\right)}$, ahol $q(S) = K_2 S^2 + S + K_1$, továbbá $\delta = \mu_{\text{max}}$.
q = @(S) K2*S.^2 + S + K1;
mu = @(S) d1 * S ./ q(S);
Equilibrium point ($S_0,X_0,F_0$)
X0 = (Sf - S0) * Y;
F0 = d0*S0*V / q(S0)
f(X,S,d1) = [
mu(S)*X - X*F0/V + k*(S-S0)*X/V
-mu(S)*X/Y + (Sf-S)*F0/V - k*(Sf-S)*(S-S0)/V
]
Ellenorzes_egyensulyi_pont = f(X0,S0,d0)
F0 = (S0*V*d0)/(K2*S0^2 + S0 + K1) f(X, S, d1) = (S*X*d1)/(K2*S^2 + S + K1) - (S0*X*d0)/(K2*S0^2 + S0 + K1) + (X*k*(S - S0))/V (k*(S - S0)*(S - Sf))/V - (S0*d0*(S - Sf))/(K2*S0^2 + S0 + K1) - (S*X*d1)/(Y*(K2*S^2 + S + K1)) Ellenorzes_egyensulyi_pont = 0 0
Optimális egyensúlyi pont:
S0_opt = 0.5 * (-2*K1 + 2*sqrt(K1^2 + Sf^2*K1*K2 + Sf*K1)) / (Sf*K2 + 1) == vpa(0.2187)
S0_opt = -(K1 - (K1^2 + K2*K1*Sf^2 + K1*Sf)^(1/2))/(K2*Sf + 1) == 0.2187
Numeric substitution
V = 4;
Sf = 10;
Y = 0.5;
K1 = 0.03;
K2 = 0.5;
d0 = 1;
% S0 = 0.5 * (-2*K1 + 2*sqrt(K1^2 + Sf^2*K1*K2 + Sf*K1)) / (Sf*K2 + 1);
S0 = 0.3;
X0 = double(subs(X0));
f_sym = subs(f(X,S,d1))
Ts = 0.1;
T = 10;
N = T / Ts;
f_fh = matlabFunction(f_sym,'vars',{t,[X ; S],d1,k});
f_sym = (X*k*(S - 3/10))/4 - (4*X)/5 + (S*X*d1)/(S^2/2 + S + 3/100) (k*(S - 10)*(S - 3/10))/4 - (4*S)/5 - (2*S*X*d1)/(S^2/2 + S + 3/100) + 8
k = 0;
d_real = 1.001;
f_ode = @(t,x) f_fh(t,x,d_real,k);
figure; hold on
[tt,xx] = ode45(f_ode, [0,T],[X0;S0]);
x0 = xx(end,:)';
xx = interp1(tt,xx,linspace(0,T,N));
plot(xx(:,1),xx(:,2),'.-');
plot(xx(1,1),xx(1,2),'o');
for i = 1:10
[~,xx] = ode45(f_ode, [0,T],x0+randn(2,1)*0.02);
plot(xx(:,1),xx(:,2),'-');
plot(xx(1,1),xx(1,2),'.');
end
text(X0+0.002,S0,'Egyensúliy pont [X0;S0] (lenne)')
k = 0;
d_real = 0.999;
f_ode = @(t,x) f_fh(t,x,d_real,k);
figure; hold on
[tt,xx] = ode45(f_ode, [0,T],[X0;S0]);
x0 = xx(end,:)';
xx = interp1(tt,xx,linspace(0,T,N));
plot(xx(:,1),xx(:,2),'.-');
plot(xx(1,1),xx(1,2),'o');
for i = 1:10
[~,xx] = ode45(f_ode, [0,T],x0+randn(2,1)*0.02);
plot(xx(:,1),xx(:,2),'-');
plot(xx(1,1),xx(1,2),'.');
end
text(X0+0.002,S0,'Egyensúliy pont [X0;S0] (lenne)')
k = 1;
d_real = 1.01;
f_ode = @(t,x) f_fh(t,x,d_real,k);
figure; hold on
[tt,xx] = ode45(f_ode, [0,T],[X0;S0]);
x0 = xx(end,:)';
xx = interp1(tt,xx,linspace(0,T,N));
plot(xx(:,1),xx(:,2),'.-');
plot(xx(1,1),xx(1,2),'o');
for i = 1:10
[~,xx] = ode45(f_ode, [0,T],x0+randn(2,1)*0.02);
plot(xx(:,1),xx(:,2),'-');
plot(xx(1,1),xx(1,2),'.');
end
text(X0+0.002,S0,'Egyensúliy pont [X0;S0] (lenne)')
k = 1;
d_real = 1.1;
f_ode = @(t,x) f_fh(t,x,d_real,k);
figure; hold on
[tt,xx] = ode45(f_ode, [0,T],[X0;S0]);
x0 = xx(end,:)';
xx = interp1(tt,xx,linspace(0,T,N));
plot(xx(:,1),xx(:,2),'.-');
plot(xx(1,1),xx(1,2),'o');
for i = 1:10
[~,xx] = ode45(f_ode, [0,T],x0+randn(2,1)*0.02);
plot(xx(:,1),xx(:,2),'-');
plot(xx(1,1),xx(1,2),'.');
end
text(X0+0.002,S0,'Egyensúliy pont [X0;S0] (lenne)')
k = 1;
d_real = 1.2;
f_ode = @(t,x) f_fh(t,x,d_real,k);
figure; hold on
[tt,xx] = ode45(f_ode, [0,T],[X0;S0]);
x0 = xx(end,:)';
xx = interp1(tt,xx,linspace(0,T,N));
plot(xx(:,1),xx(:,2),'.-');
plot(xx(1,1),xx(1,2),'o');
for i = 1:10
[~,xx] = ode45(f_ode, [0,T],x0+randn(2,1)*0.02);
plot(xx(:,1),xx(:,2),'-');
plot(xx(1,1),xx(1,2),'.');
end
text(X0+0.002,S0,'Egyensúliy pont [X0;S0] (lenne)')
k = 1;
d_real = 0.99;
f_ode = @(t,x) f_fh(t,x,d_real,k);
figure; hold on
[tt,xx] = ode45(f_ode, [0,T],[X0;S0]);
x0 = xx(end,:)';
xx = interp1(tt,xx,linspace(0,T,N));
plot(xx(:,1),xx(:,2),'.-');
plot(xx(1,1),xx(1,2),'o');
for i = 1:10
[~,xx] = ode45(f_ode, [0,T],x0+randn(2,1)*0.02);
plot(xx(:,1),xx(:,2),'-');
plot(xx(1,1),xx(1,2),'.');
end
text(X0+0.002,S0,'Egyensúliy pont [X0;S0] (lenne)')
k = 1;
d_real = 0.9;
f_ode = @(t,x) f_fh(t,x,d_real,k);
figure; hold on
[tt,xx] = ode45(f_ode, [0,T],[X0;S0]);
x0 = xx(end,:)';
xx = interp1(tt,xx,linspace(0,T,N));
plot(xx(:,1),xx(:,2),'.-');
plot(xx(1,1),xx(1,2),'o');
for i = 1:10
[~,xx] = ode45(f_ode, [0,T],x0+randn(2,1)*0.02);
plot(xx(:,1),xx(:,2),'-');
plot(xx(1,1),xx(1,2),'.');
end
text(X0+0.002,S0,'Egyensúliy pont [X0;S0] (lenne)')
k = 1;
d_real = 0.8;
f_ode = @(t,x) f_fh(t,x,d_real,k);
fig = figure; hold on
[tt,xx] = ode45(f_ode, [0,T],[X0;S0]);
x0 = xx(end,:)';
xx = interp1(tt,xx,linspace(0,T,N));
plot(xx(:,1),xx(:,2),'.-');
plot(xx(1,1),xx(1,2),'o');
for i = 1:10
[tt,xx] = ode45(f_ode, [0,T],x0+randn(2,1)*0.02);
plot(xx(:,1),xx(:,2),'-');
plot(xx(1,1),xx(1,2),'.');
end
text(X0+0.002,S0,'Egyensúliy pont [X0;S0] (lenne)')
syms X S X0 S0 d d0 k K2 K1 V Y Sf real
q = @(S) K2*S^2 + S + K1;
Expr = d*S*X/q(S) - d0*S0*X/q(S0) + k*(S-S0)*X/V
[num,den] = numden(Expr);
num = expand(num)
den
Expr = (S*X*d)/(K2*S^2 + S + K1) - (S0*X*d0)/(K2*S0^2 + S0 + K1) + (X*k*(S - S0))/V num = K1*S^2*X*k - K1*S0^2*X*k + K1^2*S*X*k - K1^2*S0*X*k - S*S0^2*X*k + S^2*S0*X*k + K1*S*V*X*d - K1*S0*V*X*d0 + S*S0*V*X*d - S*S0*V*X*d0 - K2^2*S^2*S0^3*X*k + K2^2*S^3*S0^2*X*k + K1*K2*S^3*X*k - K1*K2*S0^3*X*k - K2*S*S0^3*X*k + K2*S^3*S0*X*k + K1*K2*S*S0^2*X*k - K1*K2*S^2*S0*X*k + K2*S*S0^2*V*X*d - K2*S^2*S0*V*X*d0 den = V*(K2*S^2 + S + K1)*(K2*S0^2 + S0 + K1)