Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Java » Matrix potenzieren

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
05.01.2004, 18:08 Uhr
~wuz
Gast


Hallo allerseis!

Ich suche einen Algorithmus um Matrizen zu potenzieren. Die matrix liegt als mehrdimensionales Array vor:


Code:
//int[][] ma array speichert die matrix.
//n wie oft potenziert.

public int[][] potentizeMatrix(int[][] ma, int n){
//gesuchter code....
}




Ich habe in eurem forum schon einen code für c gefunden, schaffe es leider aber nciht ganz diesen, in java zu überführen:

Code:
void matrix_pow(double*m,int n,int x){
double *a;
int i,j,k,c=n*n;

a=new double[2*c];
for(i=0;i<2*c;i++)a[ i ]=m[i%c];
while(--x){
for(j=0;j<n;j++)
for(i=0;i<n;i++){
m[i+j*n]=0;
for(k=0;k<n;k++)
m[i+j*n]+=a[k+j*n]*a[c+k*n+i];
}
for(i=0;i<c;i++)a[ i ]=m[ i ];
}
delete[]a;
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
05.01.2004, 18:31 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


was habt ihr nur alle aufeinmal mit den matrizen....

dein haupt-problem ist das ich mit einem 1d array gearbeitet und nicht mit einem 2d-array.

ich kenn mich zwar mit java nicht aus vermute aber mal das folgend ausdrücke auch nciht ganz zu seiner zufriedenheit verdaut werden...
du musst das in etwa so ändern


C++:
void matrix_pow(double*m,int n,int x){
double *a;
int i,j,k,c=n*n;

    a=new double[2*c]; //das kansnt du dir sparen du musst nur einfach speicher anlegen für eine doppelte matrix.. (eine die die orignalwerte speichert und eine für die aktuelle potenz
    for(i=0;i<2*c;i++)a[ i ]=m[i%c]; //hier wird die matrix einfach zweimal kopiert
    while(--x){   //das musst du ummünzen vermute mal das das java nicht so frisst. das heisst nichts anderes als das die schleife x-1 mal durchlaufen wird, weil man ja x-1 mal mit sich selbst multiplizieren muss
        for(j=0;j<n;j++) //für jede spalte
            for(i=0;i<n;i++){ //für jede zeile
                m[i+j*n]=0; //setzte das feld in der ergebnismatrix 0
                for(k=0;k<n;k++) //multiplikation und addition also berechnung für einen eintrag in der matrix ..
                    m[i+j*n]+=a[k+j*n]*a[c+k*n+i];
            }
        for(i=0;i<c;i++)a[ i ]=m[ i ]; //kopieren von der aktuellen potenz die in m steht. Muss zwischengespeichert werden weil m ja beim nächtsen mal überschrieben wird...
    }
    delete[]a; //das kannst du dir sparen macht java automatisch
}


--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 05.01.2004 um 18:32 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
05.01.2004, 20:33 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


hab mir mal spassenshalber java installiert und mir super krass einen abgebrochen um den spass zum laufen zu bekommen
so sollte es funzen

hab gerade festgestellt bei java gibt es sowas praktisches wie length um die arraylenge festzustellen.
man kann also auf den parameter n verzichten...


C++:
static void matrix_pow(int[] m,int x){

int i,j,k,c=m.length,n=(int)Math.sqrt(c);
int a[]=new int[2*c];

    for(i=0;i<2*c;i++)a[i]=m[i%c];
    while(x>0){
        for(j=0;j<n;j++)
            for(i=0;i<n;i++){
                m[i+j*n]=0;
                for(k=0;k<n;k++)
                    m[i+j*n]+=a[k+j*n]*a[c+k*n+i];
            }
        for(i=0;i<c;i++)a[i]=m[i];
        --x;
    }
}

--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
06.01.2004, 04:31 Uhr
wuz



vielen dank, dass du dir solche mühen gemacht hast
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
06.01.2004, 11:54 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


@wuz
Ich wollte mal sehen ob ich ein Javaproggie hinbekomme...
die funktion hatte ich eigentlich schnell umgeschrieben... Mein grösseres Problem war... Wie geb ich was auf die Konsole aus....
bis ich dieses dumme System.out.print gefunden hatte ist ne weile vergangen...Aussderm hats ne weile gebraucht bis ich geraft habe das man das main in die Klasse packen muss und die datei genauso wie die Klasse heissen muss.... Man Java ist vielleicht kleinlich... Ich bleib bei C...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ Java ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: