int testa_lu(int n, double A[][nmax], double b[], int p[], int modo, int imprime_solucao, int imprime_tempo){ unsigned long long mark0,mark1,mark2; /* if(imprime_solucao){ printf("A eh:\n"); imprime_matriz(n, A); printf("b eh:\n"); imprime_vetor(n,b); } */ mark0 = tempo_em_microsegundos(); if(modo==0){ if( lurow(n,A,p) == -1 ) return -1; } else{ if( lucol(n,A,p) == -1 ) return -1; } mark1 = tempo_em_microsegundos(); /* if(imprime_solucao){ printf("A decomposicao LU de A eh:\n"); imprime_matriz(n, A); printf("p eh:\n"); imprime_vetor_inteiro(n,p); } */ if(modo==0){ if( ssrow(n,A,p,b) == -1 ) return -1; } else{ if( sscol(n,A,p,b) == -1 ) return -1; } mark2 = tempo_em_microsegundos(); if(imprime_tempo){ printf("| %6.2lf | %.2lf |\n",converte_milisegundo(mark1-mark0),converte_milisegundo(mark2-mark1)); } if( imprime_solucao == 1){ printf("x eh:\n"); imprime_vetor(n,b); } return 0; }
int main() { char file_name[100]; FILE *file; double A[nmax][nmax], b[nmax], duration; int n, i, j, k, p[nmax]; clock_t start, end; printf("Nome do Arquivo: "); scanf("%s", file_name); file = fopen(file_name, "r"); if (file == NULL) { fprintf(stderr, "Não foi possível abrir o arquivo!\n"); return -1; } fscanf(file, "%d", &n); for (k = 0; k < n*n; k ++) { fscanf(file, "%d %d", &i, &j); fscanf(file, "%lf", &A[i][j]); } for (k= 0; k < n; k ++) { fscanf(file, "%d", &i); fscanf(file, "%lf", &b[i]); } start = clock(); if (lucol(n, A, p) == -1) { printf("Matriz é singular.\n"); return -1; } end = clock(); duration = (double)(end - start) / CLOCKS_PER_SEC; printf("Lucol tempo %e segundos\n", duration); start = clock(); sscol(n, A, p, b); end = clock(); duration = (double)(end - start) / CLOCKS_PER_SEC; printf("Sscol tempo %e segundos\n", duration); for (i = 0; i < n; i ++) { if (b[i] - (1 + i%(n/100)) > E || b[i] - (1 + i%(n/100)) < -E) printf("Erro! %e %d %d\n", b[i],-(1 + i%(n/100)), i); } printf("Fim da Análise!\n"); return 0; }