rekursion in java

hmm danke aber das brauche ich doch noch nicht hab ein anderes problem und zwar weißt du wie man den gauss satz von einer inversen matrix berechnet. In java sprache ich habe schon begonnen aber das is zimlich heay und brauch das bis nächsten Dopnnerstag.

Oder weiß jemand links ? Wäre sehr hilfreich thx a lot

HIer der Anfang
Code:
matrixneu = new int[matrixD][matrixD]; // Neue Matrix bestimmen
  
  	
    
    for (int i= 1; i < matrixD; i++)
      {
      	for (int j= 1; j < matrixD; j++)
      		{
        		matrixneu[0][0] = zahlen[0][0];
        		matrixneu[0][i] = zahlen[0][i];//Erste Reihe bleibt unverändert
        		matrixneu[i][j] = zahlen[i][j] - (zahlen[i][0]/zahlen[0][0]) * zahlen[0][j];//Spalten werden elemeniert
        		
        	}
      }
 
Zuletzt bearbeitet:
was genau ist der gauss satz?

beim programmieren könnte ich dir helfen, aber die mathematischen grundlagen möchte ich ungern selbst raussuchen.
 
Danke bin schon etwas weitergekommen -


naja gauss sieht so aus :


du hast eione nxn matrix zb

um die inverse zu berechnen musst du jetzt dazu eine einheitsmatrix bilden also so :
1 2 3 1 0 0
0 1 2 0 1 0 |+ 0/1 * zeile 1
2 0 2 0 0 1

und so berechnest du dann die inverse matrix. Mein Problem ist jetzt wie man da am besten zeilen vertauschen kann ?

Hast du eine Ahnung ?
 
du verwendest eine variable zum zwischenspeichern deines feldinhaltes. dort schreibst du matrix [0][i] rein und in matrix [0][i] schreibst du dann matrix [1][i] raus (wenn du die zeile 0 mit der zeile 1 vertauschen willst). danach speicherst du deinen gesicherten wert aus matrix [0][i] (den du in temp stehen hast) in matrix [1][i] zurück. fertig.

schaut im code ca so aus (du willst zeile 0 und 1 vertauschen):

Code:
int n = 3, temp = 0;
int [][] matrix = new int [n][n];

for (int i = 0; i < matrix[0].length; i++)
{
  temp = matrix [0][i];
  matrix [0][i] = matrix [1][i];
  matrix [1][i] = temp;
}
 
coll danke für deine schnelle antwort hab nämlich noch 2 tage für meine arbeit zeit:) bin schon fast fertig

Werde ich gleich versuchen dürfte bei ner 3 dim genauso gehen oder ?

thx echt super von dir.
 
klar, denke schon

du musst nur aufpassen, dass du wirklich elementweise kopierst, und nicht ein ganzes array. sonst verlierst du die elemente in dem array.

mfg,
sdm
 
import eprog.*;

public class Gauss_DreieckOben extends EprogIO
{
public static int[][][] berechnenVonGaussDreieckOben (int[][][] a,int matrixD,int sp,int zl,int k,int diag,int[] faktor)
throws EprogException
{
//Selbe verfahren wie bei Gauss_DreieckUnten

diag = matrixD;
for (sp = matrixD-1; sp > 0; sp--) //Eleminationsschritte
{
diag--; //Diagonale

for (zl=sp-1; zl >= 0; zl--) //Jeweils alle folgenden Zeilen bearbeiten
{

//if(a[diag][diag][0] == 0){print ("Falsche Eingabe"); System.exit(0);

//Abfangen des Fehlers: wenn a11=0 werden zwei Zeilen vertauscht

//}
//Berechnung des Faktors mit dem die Zeile Multipliziert wird

faktor[1] = a[zl][sp][1] * a[diag][diag][0];
faktor[0] = a[zl][sp][0] * a[diag][diag][1];

//// Beachtung der 4 Vorzeichen Regeln

boolean kontroll = false;

if(kontroll == false && (faktor[1] > 0 && faktor[0] > 0))
{
faktor[1]*=(-1);
kontroll = true;
}
if(kontroll == false && (faktor[1] > 0 && faktor[0] < 0))
{
faktor[0]*=(-1);
kontroll = true;
}
if(kontroll == false && (faktor[1] < 0 && faktor[0] > 0))
{
faktor[1]*=(-1);
kontroll = true;
}
if(kontroll == false && (faktor[1] < 0 && faktor[0] < 0))
{
faktor[0]*=(-1);
kontroll = true;
}


//println("spa="+sp+"\nfaktor[1]="+faktor[1]+"\nfaktor[0]="+faktor[0]+"\na["+zl+"]["+sp+"]/a["+diag+"]["+diag+"]"); //Faktor bestimmen

for(k=0; k < a[0].length; k++)
{
//Berechnung der Zeilen und Spalten

a[zl][k][1] = (a[zl][k][1] * faktor[0] *a[sp][k][0]) + (faktor[1] *a[sp][k][1]) * a[zl][k][0];
a[zl][k][0] = a[zl][k][0] * (faktor[0] *a[sp][k][0]);

}
}
}



return a;



}
}





Das habe ich geschrieben um die uneter ecke auf Null zu setzen.
Jetzt müsste ich das ganze nocheinmal kopieren und nur oben bei den for schleifen was ändern - geht das auch ohne das ich den ganzen code verwende ?
 

Neue Beiträge

Zurück