Exemple #1
0
 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;
}
Exemple #2
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;
}