void MatrixGenerator::executeComputing() { maxIndex = n -1; generateMatrixA(true); //printMatrix(); saveAsCRS("CRS_A.txt"); //saveAsCCS("CCS_A.txt"); multiplyMatrixVectorCRS("CRS_A.txt"); clearResultVector(); //multiplyMatrixVectorCCS("CCS_A.txt"); //clearMatrixAndResultVector(); cout << endl; //maxIndex = n -1; //generateMatrixB(true); //printMatrix(); //saveAsCRS("CRS_B.txt"); //saveAsCCS("CCS_B.txt"); //multiplyMatrixVectorCRS("CRS_B.txt"); //clearResultVector(); //multiplyMatrixVectorCCS("CCS_B.txt"); //clearMatrixAndResultVector(); //cout << endl; //maxIndex = m -1; //generateMatrixC(true); //printMatrix(); //saveAsCRS("CRS_C.txt"); //saveAsCCS("CCS_C.txt"); //multiplyMatrixVectorCRS("CRS_C.txt"); //clearResultVector(); //multiplyMatrixVectorCCS("CCS_C.txt"); //clearMatrixAndResultVector(); //cout << endl; //maxIndex = m -1; //generateMatrixD(true); //printMatrix(); //saveAsCRS("CRS_D.txt"); //saveAsCCS("CCS_D.txt"); //multiplyMatrixVectorCRS("CRS_D.txt"); //clearResultVector(); //multiplyMatrixVectorCCS("CCS_D.txt"); //clearMatrixAndResultVector(); }
int main(int argc, char *argv[]) { printf("Jacob Factorization\n"); int i=0, j=0; double dbsum = 0, error = 0, bladKoncowy=0, bladLaczny=0; double czasLaczny=0; printf("Inicjalizacja macierzy\n"); double* x = malloc(sizeOfMatrix * sizeof(double)); double* x_old = malloc(sizeOfMatrix * sizeof(double)); double* Mx = malloc(sizeOfMatrix * sizeof(double)); double* N = malloc(sizeOfMatrix * sizeof(double)); double * b = malloc(sizeOfMatrix * sizeof(double*)); double** A = malloc(sizeOfMatrix * sizeof(double *)); double ** D = malloc(sizeOfMatrix * sizeof(double *)); double ** M = malloc(sizeOfMatrix * sizeof(double *)); double ** sumLU = malloc(sizeOfMatrix * sizeof(double *)); int counter=0; for(i = 0; i < sizeOfMatrix; i++) { A[i] = malloc(sizeOfMatrix * sizeof(int)); D[i] = malloc(sizeOfMatrix * sizeof(double)); M[i] = malloc(sizeOfMatrix * sizeof(double)); sumLU[i] = malloc(sizeOfMatrix * sizeof(double)); if(A[i]==NULL||D[i]==NULL||M[i]==NULL||sumLU[i]==NULL) { fprintf(stderr, "out of memory\n"); } } if(b== NULL) { fprintf(stderr, "out of memory\n"); } for (counter=0;counter<10;counter++) { printf("Iteracja %d\n", counter+1); printf("Generacja macierzy A i b\n"); generateMatrixA(A, b); printf("Przygotowanie macierzy D,M,sumLU,Mx,N,x,x_old\n"); time_t start = time(NULL); jacobFactorization(A, D, M, sumLU, x, x_old, Mx, N, b); czasLaczny+=(double)(time(NULL) - start); printf("Czas trwania: %.2f\n", (double)(time(NULL) - start)); printf("Sprawdzam!"); for(j=0;j<sizeOfMatrix;j++) { for(i=0;i<sizeOfMatrix;i++) { dbsum += A[i][j]*x[i]; } error += pow( dbsum-b[j], 2); dbsum=0; } bladLaczny+=bladKoncowy=sqrt(error); printf("Blad : %f\n", bladKoncowy); if(bladKoncowy>0.1) printf("Blad obliczen jest za duzy!\n"); }//for printf("Sredni czas : %f\n", czasLaczny/counter); printf("Sredni blad : %f\n", bladLaczny/counter); for(i = 0; i < sizeOfMatrix; i++) { free(A[i]); free(D[i]); free(sumLU[i]); free(M[i]); } free(A); free(b); free(D); free(sumLU); free(M); free(x); free(x_old); free(Mx); free(N); printf("Koniec\n"); return 0; }