Hallo,
ich mache gerade meine Masterarbeit und soll chemische Reaktionen durch Differentialgleichungen (DGL) beschreiben und die Temperaturabhängigkeit dabei betrachten.
Da die Ergebnisse relativ sensibel sind, darf ich hier auch nicht alles posten, deswegen versuche ich es halbwegs verständlich zu verfassen. Der Code ist, so wie er da steht, nicht kompilierbar, und ich halte mich absichtlich nicht an diese Forenregel.
In einer anderen Klasse wird ein Temperaturprofil erstellt. Die Klasse, die die DGL löst, soll nun dieses Temperaturprofil übernehmen, und für jeden Schritt der Berechnung eine neue Temperatur verwenden.
Das ist ein Auszug der Klasse die das Temperaturprofil erstellt und soweit auch funktioniert.
Mein Problem ist nun folgendes:
Eine Funktion von hier wird in der anderen Klasse aufgerufen, sodass ein Temperaturprofil erstellt wird.
Fall 1:
Wenn ich mir das in einer for-Schleife ausdrucken lasse, bekomme ich alle Werte richtig angezeigt.
Fall 2:
Wenn ich den Vektor in T_neu speicher, wird nur die letzte Temperatur angezeigt.
Die Krönung ist nun, dass ich an ganz anderer Stelle etwas berechnen muss, dass wiederrum von der Temperatur abhängt. Sagen wir x =a* (T_neu)^2.
Das ganze in einer For Schleife zu berechnen funktioniert zwar, aber dieses x brauche ich für meine DGL. Auch hier wird nur der letzte Wert verwendet.
Mit einer Methode getX kam das gleiche Ergebnis raus.
Bisher steht folgendes da(mit benötigten anderen Methoden etc.), wobei die for Schleife keinen Unterschied bringt. Das Ergebnis ist links dargestellt, es sollte aber das rechte rauskommen (leider per Hand eingefügt)
Ich habe nun alle Möglichkeiten ausprobiert die ich nach einem Monat Java kenne (Arrays, selbst als neue DGL, mit getter, noch mehr Methoden und ein paar andere) aber ohne richtiges Ergebnis.
Ich habe im Internet auch schon gesucht, aber wahrscheinlich falsch. Bisher habe ich nichts gefunden bzw die Lösung dann übersehen.
Hat noch jemand Ideen, bzw Vorschläge, nach was ich suchen kann, um den Vektor so hinbekommen, dass in den Berechnungen der DGL auch das ensprechende x verwendet wird und nicht das letzte?
Vielen Dank
sgwosdek
ich mache gerade meine Masterarbeit und soll chemische Reaktionen durch Differentialgleichungen (DGL) beschreiben und die Temperaturabhängigkeit dabei betrachten.
Da die Ergebnisse relativ sensibel sind, darf ich hier auch nicht alles posten, deswegen versuche ich es halbwegs verständlich zu verfassen. Der Code ist, so wie er da steht, nicht kompilierbar, und ich halte mich absichtlich nicht an diese Forenregel.
In einer anderen Klasse wird ein Temperaturprofil erstellt. Die Klasse, die die DGL löst, soll nun dieses Temperaturprofil übernehmen, und für jeden Schritt der Berechnung eine neue Temperatur verwenden.
Das ist ein Auszug der Klasse die das Temperaturprofil erstellt und soweit auch funktioniert.
Code:
public class Temperatur {
public static double[] temp;
Ausführug
}
return temp;
}
Mein Problem ist nun folgendes:
Eine Funktion von hier wird in der anderen Klasse aufgerufen, sodass ein Temperaturprofil erstellt wird.
Fall 1:
Wenn ich mir das in einer for-Schleife ausdrucken lasse, bekomme ich alle Werte richtig angezeigt.
Fall 2:
Wenn ich den Vektor in T_neu speicher, wird nur die letzte Temperatur angezeigt.
Code:
for (double i = 0; i<Bedingung;i++){
System.out.println(temp.getTemp(i));
}
T_neu = temp.getTemp(zeit)
System.out.println(T_neu);
Die Krönung ist nun, dass ich an ganz anderer Stelle etwas berechnen muss, dass wiederrum von der Temperatur abhängt. Sagen wir x =a* (T_neu)^2.
Das ganze in einer For Schleife zu berechnen funktioniert zwar, aber dieses x brauche ich für meine DGL. Auch hier wird nur der letzte Wert verwendet.
Mit einer Methode getX kam das gleiche Ergebnis raus.
Bisher steht folgendes da(mit benötigten anderen Methoden etc.), wobei die for Schleife keinen Unterschied bringt. Das Ergebnis ist links dargestellt, es sollte aber das rechte rauskommen (leider per Hand eingefügt)
Code:
for (double i = 0; i<=Bedingung; i++){
T_neu = temp.getTemp(time);
x = a*T_neu*T_neu
// ODEs
ydot[0] = x * y[0]; // Reaktion 1
ydot[1] =-x * y[0]; // Reaktion 2
ydot[2] = b * ydot[1]; // Reaktion 3
ydot[3] = c * ydot[1]; // Reaktion 4
T_neu x T_neu x
2 25 2 4
3 25 3 9
4 25 4 16
5 25 5 25
Ich habe nun alle Möglichkeiten ausprobiert die ich nach einem Monat Java kenne (Arrays, selbst als neue DGL, mit getter, noch mehr Methoden und ein paar andere) aber ohne richtiges Ergebnis.
Ich habe im Internet auch schon gesucht, aber wahrscheinlich falsch. Bisher habe ich nichts gefunden bzw die Lösung dann übersehen.
Hat noch jemand Ideen, bzw Vorschläge, nach was ich suchen kann, um den Vektor so hinbekommen, dass in den Berechnungen der DGL auch das ensprechende x verwendet wird und nicht das letzte?
Vielen Dank
sgwosdek