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!!
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]);
};