Überschreibung von Variablen

Status
Nicht offen für weitere Antworten.

angie

Mitglied
Hallo!

Ich habe ein Problem mit meinem Programm zum Mehrdimensionalen Newtonverfahren!Das Programm ist eine Endlosschleife.
Beim 2. Durchlauf der while-Schleife wird bei der Zuweisung(Zeile 30 und 31) von xHilf[0] und xHilf[1] auch automatisch x[0] und x[1] mit den selben Werten belegt.Dadurch ist dann "norm2(xHilf) = norm2(x)" und die for-Schleife wird unendlich.
Kann mir jemand sagen woran das liegt?
Danke schon mal!!

Java:
public static void main(String[] args) 
	{
		double[][] matJ = new double [2][2];
		double [] s = new double [2];
		double [] r = new double [2];
		double [] xHilf = new double [2];
		double [] x = {1, -2};
		boolean korrekt = true;
		
		//Berechnung der Loesung von x
		while(norm(x) > Math.pow(10, -8) )
		{
			System.out.println(norm(x));
			//Berechnung der Jacobimatrix
			matJ[0][0] = 6 * x[0];
			matJ[0][1] = - 4 * x[1];
		    matJ[1][0] = 2 * x [0] - 2;
		    matJ[1][1] = 2 * x[1] + 2;
		    
		    //Belegung des Vektors r(x)
		    r[0] = - r1(x);
		    r[1] = - r2(x);
		    
		    //Berechnung des Vektors s
		    s = LRFaktor.vek(matJ, r);
		    
		    //Berechung von x(k + 1)
		    for(double i = 1; korrekt == true; i = i /2) 
		    {
			    xHilf[0] = x[0] + i * s[0];			 
			    xHilf[1] = x[1] + i * s[1];
			     
			    //Ueberpruefung, ob norm2( r(x(k + 1)) )  < norm2(  r(x(k )) ) 
			    if( norm2(xHilf) < norm2(x))
			    {
			    	x = xHilf;
			    	korrekt  = false;
			    }
		    }
		    korrekt = true;
		}
		System.out.println("Lösung: " + x[0] + "   " + x [1]);
	};
 
was ist norm ?

du musst halt schauen warum die beiden werte immer gleich sind bzw norm2(xHilf) nie kleiner ist...

also debuggen... vor allem auch was steht in s drin ? etc
 
> x = xHilf;

ab hier sprechen beide Variablen exakt dasselbe Array an,
wenn du eine Kopie haben möchtest, dann musst du das erst programmieren,
Arrays.copyOf() könnte helfen, sonst for-Schleife
 
Habe das Problem jetzt beheben können.
ich habe aus x = xHilf einfach
Java:
x[0] = xHilf[0];
x[1] = xHilf[1];
So ist das problem mit dem zeiger auf dasselbe Array behoben.

Danke an SlaterB!!
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben