Variablen Vektor zur Berechnung verwenden

sgwosdek

Mitglied
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.
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
 

knilch

Bekanntes Mitglied
Hi,
Ist gar nicht so einfach, den Fehler zu finden, wenn nur snippets zu sehen sind... Mir sieht das hier irgendwie strange aus:
Java:
for (double i = 0; i<=Bedingung; i++) {
   T_neu = temp.getTemp(time);
   ...
}
Die variable: time wird innerhalb von diesem for-loop nie irgenwie inkrementiert, dekrementiert oder sonst irgendwie verändert. Egal wie oft der for-loop durchlaufen wird ist T_neu immer gleich...
Wenn T_neu sich innerhalb vom for-loop ändern muss, dann musst du schauen, dass auch time innerhalb vom for-loop verändert wird.
Vielleicht so?
Java:
for (double i = 0; i<=Bedingung; i++) {
   T_neu = temp.getTemp(i);
   ...
}
 

sgwosdek

Mitglied
Hi,
danke für die schnelle Antwort.
Ja es stimmt, das sieht auf den ersten Blick komisch aus.
Die Schleife funktioniert sogar mit beiden Ausdrücken, nur wird trotzdem leider nur der Letzte Eintrag für die Berechnung verwendet.

Code:
public void computeDerivatives(double time, double[] y, double[] ydot)
                throws MaxCountExceededException, DimensionMismatchException {
                      
    for (double i = 0; i<=endtime; i=i+delta_time_h){
          
        T_neu = temperatures.getTemp(time);
//         T_neu = temperatures.getTemp(i);
              
                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

        }
}

Aber ich versuche gerade mit der Klammer der for-Schleife zu spielen und an verschiedenen Stellen zu positionieren, vielleicht kommt dann was bei raus.
 

sgwosdek

Mitglied
Code:
        public void computeDerivatives(double time, double[] y, double[] ydot)
                throws MaxCountExceededException, DimensionMismatchException {
            
            for (int i=0 ; i<=Bedingung; i++){
        
            double [] T_neu = new double [Bedingung];
            double [] x = new double[Bedingung];
            T_neu[i] = getTemp(i);
                
                x[i] = a* T_neu[i] * T_neu[i]
        
                System.out.println(i + ";"+T_neu[i] + ";"+x[i]
                 + ";"+getState(i,0) +);  //getState gibt das Ergebnis der Ableitung aus

                // ODEs
            
                        ydot[0] = x[i] * y[0];                     // Reaktion 1
                        ydot[1] =-x[i] * y[0];                     // Reaktion 2
                        ydot[2] = b * ydot[1];                // Reaktion 3
                        ydot[3] = c * ydot[1];                // Reaktion 4
}
}
So, ich habe nun mit Arrays rumprobiert. Die T_neu und x Abhängigkeit funktioniert auf diese Weise, nur klappt die Berechnng der Ableitungen noch nicht. Da vermute ich aber dass die Dimensionen nicht so richtig passen, das werde ich heute Abend weiter verfolgen
 

sgwosdek

Mitglied
So, ich habe was rausbekommen, aber fragt jetzt bitte nicht wie
Code:
for (int i=0 ; i<=Bedingung; i++){
           
            double [] T_neu = new double [Bedingung];     //vectors of length Bedingungen
            double [] x = new double[Bedingung];
            T_new[i] = temperatures.getTemp(i);
  
     x[i] = a * T_neu[i] *   T_neu[i]         
               
                // 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
              
               
                System.out.println(i + "    "+T_neu[i] + "    "+x[i] + "    "
                        +ydot[0] +"    "+ydot[1] +"    "+ydot[2] +"    "+ydot[3]);


Das ganze löst zwar noch nicht die DGL, gibt aber erstmal die Änderungen durch die Temperatur wieder.
Wenn jemand noch auf eine bessere/schnellere/einfachere Idee kommt, stehe ich den Vorschlägen offen gegenüber, immerhin ist meine Lösung nun wirklich nicht das Gelbe vom Ei.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Vektor vs List Java Basics - Anfänger-Themen 4
L Klassen Vektor Klasse Java Basics - Anfänger-Themen 2
E Variable (Vektor) in andere Methode übergeben Java Basics - Anfänger-Themen 4
O Matrix, Vektor Java Basics - Anfänger-Themen 9
J Compiler-Fehler Fehler bei Vektor (E extends Object declared in class Vector) Java Basics - Anfänger-Themen 9
U Ist diese Methode zur Matrix Vektor Multiplikation korrekt ? Java Basics - Anfänger-Themen 5
E Matrix mit Vektor multiplizieren Java Basics - Anfänger-Themen 7
M transposen Vektor transformieren Java Basics - Anfänger-Themen 8
M Vektor Rechnung Java Basics - Anfänger-Themen 6
B Stützstellen (Vektor) erzeugen? Java Basics - Anfänger-Themen 8
R Matrix-Vektor-Multiplikation Java Basics - Anfänger-Themen 13
B Vektor addieren Java Basics - Anfänger-Themen 4
F Funktion eines JButton in einen Vektor verlagern Java Basics - Anfänger-Themen 4
Z Matrix mit Vektor multiplizieren Java Basics - Anfänger-Themen 13
P Vektor im R3 drehen? Java Basics - Anfänger-Themen 14
M Map mit Vektor: Element hinzufügen Java Basics - Anfänger-Themen 21
A vektor bearbeiten?? Java Basics - Anfänger-Themen 9
V Position in einem Vektor Java Basics - Anfänger-Themen 3
N Vektor mit eigener Datenstruktur sortieren Java Basics - Anfänger-Themen 20
A Wie greif ich auf Elemente eines Arrays in einem Vektor zu? Java Basics - Anfänger-Themen 6
D Array? ArrayList? Vektor? ...? Java Basics - Anfänger-Themen 6
C OOP Aus Vektor zufällig einen Eintrag wählen und in Array[][] schreiben Java Basics - Anfänger-Themen 5
Z Summe von Vektor-Elementen Java Basics - Anfänger-Themen 5
S Variable über den Vektor bestimmen Java Basics - Anfänger-Themen 20
J klasse vektor addition Java Basics - Anfänger-Themen 10
M Vektor Klasse Problem Java Basics - Anfänger-Themen 12
M Reihenfolge von Objekten im Vektor Java Basics - Anfänger-Themen 3
G Vektor auslesen und als int Variable casten Java Basics - Anfänger-Themen 4
G Mothoden von Objekten in Vektor aufrufen Java Basics - Anfänger-Themen 4
F ComboBox im Vektor auslesen, Vektor<JComboBox> Java Basics - Anfänger-Themen 6
G Probleme mit Datenstrukturen (Vektor, HashMap) Java Basics - Anfänger-Themen 5
T Koordinaten eines Vektor übergeben Java Basics - Anfänger-Themen 21
J Vektor in Vektor speichern? Java Basics - Anfänger-Themen 10
J Vektor null setzen Java Basics - Anfänger-Themen 10
R Vektor in verketteter Liste Java Basics - Anfänger-Themen 14
J Vektor + auf Elemente zugreifen funktioniert nicht Java Basics - Anfänger-Themen 11
H Vektor auslesen und durchsuchen Java Basics - Anfänger-Themen 4
G Vektor Java Basics - Anfänger-Themen 1
C "null" Element Vektor abfragen Java Basics - Anfänger-Themen 7
C vektor erschaffen Java Basics - Anfänger-Themen 2
C Ein Element aus Mehrdimensionalem Vektor lesen Java Basics - Anfänger-Themen 2
L Vektor befüllen? Java Basics - Anfänger-Themen 3
G Doppelte (Paar) Werte in einem Vektor finden Java Basics - Anfänger-Themen 6
S kartesischer Vektor im n-dimensionalen Raum. Java Basics - Anfänger-Themen 7
G Objekte in einen Vektor speichern Java Basics - Anfänger-Themen 4
M Vektor, gefüllt mit Objekten einer selbstdefinierten Klasse Java Basics - Anfänger-Themen 4
C checken ob ein Vektor leer ist Java Basics - Anfänger-Themen 3
J tast-Eingabe_(Vektor)Skalar-produkt Java Basics - Anfänger-Themen 19
G elemente in einem vektor nach ihren eigenschaften sortieren Java Basics - Anfänger-Themen 2
G Problem clone und Vektor Java Basics - Anfänger-Themen 4
M Vektor sortieren Java Basics - Anfänger-Themen 7
P Vektor toString? Java Basics - Anfänger-Themen 2
T Hashtable und Vektor Java Basics - Anfänger-Themen 3
I einlaggern von Objekten in ein Vektor Java Basics - Anfänger-Themen 10
G Vektor Java Basics - Anfänger-Themen 3
I File Uploader... Statusanzeige, Berechnung des Status etc. Java Basics - Anfänger-Themen 0
Bugs Bunny Fehlerhafte Berechnung beim erneuten Durchlaufen der Schleife Java Basics - Anfänger-Themen 5
Jamie logische Verknüpfung zur Schaltjahr-Berechnung Java Basics - Anfänger-Themen 30
Stephan_kl Reihenwert-Berechnung, Ergebnis mit vorherigem Ergebnis vergleichen Java Basics - Anfänger-Themen 11
Abraham42 Berechnung der Kühlung Java Java Basics - Anfänger-Themen 12
S Hashcode-Berechnung + ^ Java Basics - Anfänger-Themen 2
J Median-Berechnung von 2D-Teilarrays Java Basics - Anfänger-Themen 56
F Tabelle - Berechnung Rang Java Basics - Anfänger-Themen 2
B Berechnung der Position von Kinderelemente von einem Elternknoten Java Basics - Anfänger-Themen 23
S Berechnung der sleep time ist falsch Java Basics - Anfänger-Themen 46
S Switch-Case zur Berechnung der Einkommensteuer Java Basics - Anfänger-Themen 15
F Berechnung der Rektaszension und Deklination eines Sterns Java Basics - Anfänger-Themen 7
2 Taschenrechner mit GUI Problem bei der Berechnung Java Basics - Anfänger-Themen 8
V Erste Schritte Pi Berechnung Java Basics - Anfänger-Themen 47
M Berechnung der Reststrecke bei Graphen Java Basics - Anfänger-Themen 1
V Algorithmus zur fortlaufenden Berechnung des duechscjnt Java Basics - Anfänger-Themen 1
B Berechnung zu einer Schleife formen Java Basics - Anfänger-Themen 6
B Berechnung Median mit Methode Java Basics - Anfänger-Themen 7
CptK Methoden Berechnung von Anfangsgeschwindigkeit und Winkel Java Basics - Anfänger-Themen 27
K Erste Schritte Berechnung der Summe zweier Arrays Java Basics - Anfänger-Themen 15
S Erste Schritte Berechnung des Paketportos - Problem/Frage Java Basics - Anfänger-Themen 52
J Gleitkommazahlen, Berechnung von pi Java Basics - Anfänger-Themen 4
J Berechnung liefert falsches Ergebnis Java Basics - Anfänger-Themen 2
kilopack15 Verzweiflung wegen Berechnung mit Multithreading Java Basics - Anfänger-Themen 1
A Die Werte zur Berechnung müssen als Parameter übergeben werden? Java Basics - Anfänger-Themen 7
Salo Berechnung von Winkeln Java Basics - Anfänger-Themen 28
M Restbuchwert Berechnung geht nicht Java Basics - Anfänger-Themen 45
Ghostman1711 Pi berechnung Methode aufrufen Java Basics - Anfänger-Themen 2
L Rekursive Methode zur Berechnung der Potenz q hoch p Java Basics - Anfänger-Themen 17
beatles Operatoren Operatoren - Berechnung Java Basics - Anfänger-Themen 40
K Best Practice Algorithmus für Berechnung von Zahlenreihenfolge Java Basics - Anfänger-Themen 12
N Verzögerte Berechnung "Lazy" Java Basics - Anfänger-Themen 8
J Erste Schritte Rundungsproblem - Berechnung Notendurchschnitt Java Basics - Anfänger-Themen 13
T Java double berechnung fehler Java Basics - Anfänger-Themen 2
M Berechnung in Java Java Basics - Anfänger-Themen 4
S Berechnung der Arbeitstage in einem Zeitraum Java Basics - Anfänger-Themen 9
E Problem bei rekursiver Berechnung des Binomialkoeffizienten Java Basics - Anfänger-Themen 5
T Iterative Pi Berechnung in Rekursive Java Basics - Anfänger-Themen 2
S Double, int, Berechnung Java Basics - Anfänger-Themen 3
C Nach Berechnung runden und Wert ausgeben Java Basics - Anfänger-Themen 7
E Berechnung für Shop einbinden Java Basics - Anfänger-Themen 8
S Klassen Formel zur Berechnung .... Bitte um Hilfe Java Basics - Anfänger-Themen 7
S Euklid Algorithmus zur Berechnung des GGTs Java Basics - Anfänger-Themen 2
OnDemand Berechnung in die start und paint Methode eines Applets Java Basics - Anfänger-Themen 28
P Schleife zur Berechnung von einer Summe Java Basics - Anfänger-Themen 16

Ähnliche Java Themen

Neue Themen


Oben