013
03.07.2003, 12:46 Uhr
~daredevil
Gast
|
Juhuuu!!!!
es funktioniert!!!
C++: |
#include <stdio.h> #include <iostream.h>
void matrix_pow(double *m, int n, int x);
int main(){ int i,j,n=3; double *matrix=new double[n*n];
matrix[0]=1; matrix[1]=2; matrix[2]=-2;
matrix[3]=1; matrix[4]=2; matrix[5]=1;
matrix[6]=-1; matrix[7]=3; matrix[8]=1;
matrix_pow(matrix,n,3); for(j=0;j<n;j++){ for(i=0;i<n;i++) printf("%0.2f\t",matrix[i+j*n]); printf("\n"); } }
void matrix_pow(double *m,int n,int x) { int i,j, k,f, d, v; double *mat=new double[n*n]; double *sum=new double[n*n];
for(i=0; i<(n*n); i++) {mat[i]=m[i]; sum[i]=0;}
for(; x>1; x--) { for(i=0, v=0, f=0, d=0; i<(n*n); i++) { for(k=0, j=0;j<n; k+=n, j++) { sum[d]+=mat[n*v+j]*m[f+k]; } f++; if(f==n) { v++; f=0; } d++; k=0;
}
for(i=0; i<(n*n); i++) mat[i]=sum[i];
for(i=0; i<(n*n); i++) sum[i]=0;
}
for(i=0; i<(n*n); i++) m[i]=mat[i]; }
|
Und wehe es sagt einer, das kann man noch optimieren |