Ejemplo n.º 1
0
void guardaTeste()
{
	FILE *p;
	p = fopen ("teste.txt", "w+");

	//vai ate o final do arquivo - nao esta funcionando!
	char c = getc(p);
	while(c != EOF)
		c = getc(p);
	
	fprintf(p, "\nlambida = %f\nTeta:\n", lamb);
	for(int i = 0; i < 14; i++)
		fprintf (p, "%f;",teta[i]);

	defineRange(0,105); //valores de treinamento
	fprintf(p, "\nJ(x) de valores de treinamento = %f\n", jx());
	//printf("Erro de valores de treinamento = %f\n", jx());

	defineRange(105,142); //valores de teste1
	fprintf(p, "J(x) de valores de teste 1 = %f\n", jx());
	//printf("Erro de valores de teste 1 = %f\n", jx());

	defineRange(142,178); //valores de teste2
	fprintf(p,"J(x) de valores de teste 2 = %f\n\n", jx());
	//printf("Erro de valores de teste 2 = %f\n\n", jx());

	//casos em que o erro gera decisao errada
	fprintf(p, "Valores com erro inaceitavel:\n");
	int errado, inaceitavel;
	errado = inaceitavel = 0;

	for(int i = 0; i < 178; i++)
	{
		float erro = hx(i)-x[0][i];
		if(erro > 0.5 || erro < -0.5)
		{
			errado ++;
			if(erro > 1.0 || erro < -1.0)
				inaceitavel ++;
			printf("i = %d\tesperado = %f\tobtido = %f\terro = %f\n",i, x[0][i], hx(i), erro);

		}
	}
	fprintf(p, "Erros acima de 0.5 = %d\tErros acima de 1.0 = %d\n", errado-inaceitavel, inaceitavel);

	fclose(p);
}
Ejemplo n.º 2
0
Static void setRange(Char *line_)
{
  Char line[256];
  short v, p, FORLIM;
  Char STR1[256];
  Char STR2[256];

  strcpy(line, line_);
  line_no = orig_range_line;
  FORLIM = nvoices;
  for (v = 1; v <= FORLIM; v++) {
    sprintf(STR1, "%s=", voice_label[v-1]);
    p = strpos2(line, STR1, 1);
    if (p > 0) {
      if (strlen(line) < p + 6) {
	sprintf(STR2, "At least five characters must follow \"%s=\"",
		voice_label[v-1]);
	error(STR2, print);
      }
      defineRange(v, substr_(STR2, line, p + 2, 5));
    } else
      defineRange(v, "");
  }
}
Ejemplo n.º 3
0
void calculaTeta()
{
	defineRange(0,105); //trabalha apenas com ~60% dos casos de teste
	int count = 0;
	double ultimo_erro = 1.0, primeiro_erro = 0.0;

	printf("Modelo:\nteta0 + teta1*x1 + teta2*x2 + ... + teta13*x13\n\nResultados esperados para h(x):\n1, 2 ou 3\n\n");

	//pega valor do erro inicial
	gradiente();
	count++;
	confereErro(&ultimo_erro, count);
	primeiro_erro = ultimo_erro;
	printf("Erro inicial = %f\n", primeiro_erro);
	gradiente();
	count++;

	printf("Calculando, por favor aguarde!\n\n");

	//loop para achar os tetas
	while(confereErro(&ultimo_erro, count) == 1)
	{
		gradiente();
		count++;
	}

	//adiciona valores de teta a teta.txt
	guardaTeta(ultimo_erro, count);

	//caso erro = 0.03 nao seja possivel, imprime erro inicial e menor erro encontrado
	if(confereErro(&ultimo_erro, count) == 2)
		printf("Erro inicial = %f\tErro minimo encontrado = %f\n",primeiro_erro, ultimo_erro);

	//valores finais de teta e numero de passos
	printf("teta0 = %f\tteta1 = %f\tteta2 = %f\tteta3 = %f\nteta4 = %f\tteta5 = %f\tteta6 = %f\nteta7 = %f\tteta8 = %f\tteta9 = %f\nteta10 = %f\tteta11 = %f\tteta12 = %f\nteta13 = %f\n", teta[0], teta[1], teta[2], teta[3], teta[4], teta[5], teta[6], teta[7], teta[8], teta[9], teta[10], teta[11], teta[12], teta[13]);
	printf("numero de passos: %d\n", count);

	system("pause");
}