wenn die Sauerstoffkonzentration Teil des Modells ist, sollte schon durch das Modell sichergestellt sein, dass die Sauerstoffkonzentration nicht negativ wird. Ansonsten bzw. bei numerischen Problemen hilft der Vorschlag von denny.
Die Sauerstoffkonzentration ist Teil des Modells und sollte eigentlich im Realfall nicht unter null gehen (regelungsbedingt), allerdings kann sie das unter bestimmten Umständen. Allerdings nur bis null und nicht darunter da in der Realität keine negative Sauerstoffkonzentration existiert. Ich hab beide Vorschläge probiert, kriegs aber nicht hin das wenn cO2 über eine Differenzialgleichung berechnet wird null als Untergrenze angenommen wird. Ich hab die Files mal beigefügt sind noch nicht fertig aber man kann in der Graphik erkennen das cO2 unter null geht.
tsim = [0; 30]; % Simulationszeitraum (0 bis 15 h)
options = odeset('RelTol',1e-5); % Definition der Toleranz (Genauigkeit der Simulation)
% Setzen der Anfangsbedingungen (Vektor y0)
cx0=2000; % Biomassekonz. zu Beginn der Kultivierung [g/m^3]
cs0=4000; % Startkonzentration des Substrats [g/m^3]
V0=0.001; % Anfangsvolumen [m^3]
cO20=7.84; % Anfangskonz O2 in Wasser gesättigt bei 30°C [g/m^3]
% Die Reihenfolge der Zustände wird durch die Differentialgleichungen % im File monod.m festgelegt
% Luedeking-Piret Ansatz für die Produktbildung
qp = alpha*mu + beta; % Produkt ist CO2
qO2=-qp; % Die Sauerstoffverbrauchsrate ist bei Glucose erbrauch
Erklärung: wenn y(5) "ein wenig negativ" geworden ist und ich noch mehr davon wegnehmen würde, dann nehme ich nichts weg.
Ich vermute allerdings, dass die Ursache des Problems hier ein Modellierungsfehler ist. Also: Gleichungen und insbesondere Vorzeichen und Einheiten kontrollieren. Es kann auch sein, dass einfach nicht alle relevanten Effekte enthalten sind.
Was ich hier gemacht habe, ist schließlich nur eine Notlösung, und es bleibt offen, ob der Rest der Lösung sinnvoll ist. Wie gesagt, ich kann ja nicht mehr Sauerstoff rausziehen als da ist. Insbesondere würde ich erwarten, dass es mit sinkender Sauerstoffkonzentration auch schwieriger wird, weiteren Sauerstoff zu entziehen.
du hast recht der Einfachheit halber hab ich die Produktbildung gleich der Sauerstoffverbrauchsrate gesetzt ohne Abhängigkeit voneinander, deshalb kommts auch zu einer negativen Sauerstoffkonzentration. Ist 'n unsauberes modell aber für manche Fragestellungen einfacher als alles voneinander abhängig zu machen. Bei dem Differentialgleichungslöser Berkeley Madonna gibts einen einfachen Befehl limit(variable) >= um genau solche Dinge zu vereinfachen, dachte bei Matlab wäre das auch möglich. Sind allerdings auch meine ersten Gehversuche mit Programmen wie diesen.
eine Minimallösung habe ich ja angegeben.
Man könnte sicher über Events gehen, um das genauer zu machen (siehe Doku von odexy), aber das wäre hier wohl überzogen.
Um einen störenden Effekt negativer Konzentrationen zu verhindern, könnte man zusätzlich noch
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.