Why I cannot see any result on my graph
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
clc
clear all
sympref('FloatingPointOutput',true)
syms X(t)
syms S1(t)
syms S2(t)
syms B1(t)
x=1
L=1
t1=0
kd=0.076
Bmax=15.658
ib=0.616
K1=171.492
Umaxg=0.730
Ksg=1.293
Ksx=4.469
Umaxx=0.615
SG=31
SGn=SG %g/l
SX=32 %g/l
B=0 %g/l
x0=0.01 %g/l
Xn=x0 %g/l
Yxsg=0.523
Yxsx=0.058
Ybsg=1.196
Ybsx=0.232
Ybxg=Ybsg/Yxsg
Ybxx=Ybsx/Yxsx
Usg=(Umaxg*SG)/((Ksg+SG)*((1+SX)/Ksx))
Usx=(Umaxx*SX)/((Ksx+SX)*((1+SG)/Ksg))
Ug=(Usg+Usx)*(K1/(K1+SG+SX))*(1-(B/Bmax))^(ib)
Unet=Ug-kd
ode = diff(X,t)==Unet*X;
cond=X(t1)==Xn;
XSol(t)=dsolve(ode,cond)
ode = diff(S1,t)== -Usg*((1/Yxsg)+(1/Ybsg))*XSol;
cond= S1(t1)==SGn;
SGsol(t)=dsolve(ode,cond)
ode = diff(S2,t)== -Usx*((1/Yxsx)+(1/Ybsx))*XSol;
cond= S2(t1)==SGn;
SXsol(t)=dsolve(ode,cond)
ode = diff(B1,t)== (Usg*Ybxg+Usx*Ybxx)*XSol;
cond= B1(t1)==B
Bsol(t)=dsolve(ode,cond)
for i=0:10:300
XSol(i);
SGsol(i) ;
SXsol(i);
Bsol(i);
end
plot(i,SXsol(i))
0 Kommentare
Akzeptierte Antwort
Voss
am 14 Jun. 2022
Instead of this:
plot(i,SXsol(i))
try this:
fplot(SXsol,[0 300])
or this:
t_plot = 0:10:300;
plot(t_plot,SXsol(t_plot))
2 Kommentare
Weitere Antworten (1)
Cris LaPierre
am 14 Jun. 2022
By default, MATLAB plots using a solid line style with no marker. When you plot a single point like your code is doing, this results in your point not being visible.
If you truly want to plot the ith point, then add a marker style.
plot(i,SXsol(i),'o')
If you instead want to plot all your data, remove i.
plot(SXsol)
2 Kommentare
Cris LaPierre
am 14 Jun. 2022
Bearbeitet: Cris LaPierre
am 14 Jun. 2022
I overlooked that SXsol was a symfun. Use one of the solutions described by Voss.
Siehe auch
Kategorien
Mehr zu Ordinary Differential Equations finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!