Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<math.h>
- typedef struct VALORES_CASOS
- {
- char tipo_de_funcao[10];
- int n_tipos;
- float pontos_fornecidos[2][100];
- int n_pontos;
- }v;
- void IMPRIME_VETOR(float v[],int n)
- {
- int i;
- printf("\n\n(");
- for(i=0;i<n;i++)
- {
- printf("%lf, ", v[i]);
- }
- printf(")\n\n");
- }
- void IMPRIME_MATRIZ(float Matriz[][11], int n_linhas, int n_colunas)
- {
- int i, j;
- printf("\n\n");
- for (i=0; i<n_linhas; i++)
- {
- for (j=0; j<n_colunas; j++)
- {
- printf("%lf ", Matriz [i][j]);
- }
- printf("\n");
- }
- }
- float SOMATORIO_MULTIPLICACAO (float vetor1 [], float vetor2[], int n)
- {
- int i;
- float soma = 0;
- for(i=0; i<n; i++)
- {
- soma += vetor1[i]*vetor2[i];
- }
- return soma;
- }
- float RESOLVE_SISTEMA (float SISTEMA[10][11], int v, float RESOLUCAO[])
- {
- int i=0, j=0, k=0;
- float Matriz_L[10][11], Matriz_U[10][11], COLUNA_Y[10], soma=0.0;
- for(i=0; i<v; i++)
- IMPRIME_MATRIZ(SISTEMA, v, v);
- {
- for(j=0;j<v;j++)
- {
- soma = 0.0;
- if (i>=j)
- {
- for (k=0; k<j; k++)
- {
- soma += Matriz_L[i][k]*Matriz_U[k][j];
- }
- Matriz_L[i][j] = SISTEMA[i][j] - soma;
- if (i==j)
- Matriz_U[i][j]=1;
- if (i<j)
- Matriz_U[i][j]=0.0;
- }
- if (i<j)
- {
- for(k=0; k<i; k++)
- {
- soma+= Matriz_L[i][k]*Matriz_U[k][j];
- }
- Matriz_L[i][j]=0.0;
- Matriz_U[i][j] = (SISTEMA[i][j] - soma)/Matriz_L[i][i];
- }
- }
- }
- soma=0.0;
- for (i=0; i<v; i++)
- {
- COLUNA_Y[i]=0.0;
- }
- for (i=0; i<v; i++)
- {
- RESOLUCAO[i]=0.0;
- }
- for(i=0; i<v; i++)
- {
- soma=0.0;
- for (j=0;j<v;j++)for (j=0;j<v;j++)
- if(i!=j)
- {
- soma += COLUNA_Y[j]*Matriz_L[i][j];
- printf("%lf ", soma);
- }
- COLUNA_Y[i] = (SISTEMA[i][v] - soma)/Matriz_L[i][i];
- printf(" \n%lf - %lf / %lf = %lf, iteracao: %d\n\n",SISTEMA[i][v], soma, Matriz_L[i][i], COLUNA_Y[i], i);
- }
- for(i=v-1;i>=0;i=i-1)
- {
- soma = 0.0;
- for (j=0;j<v;j++)
- {
- if(i!=j)
- {
- soma += RESOLUCAO[j]*Matriz_U[i][j];
- }
- }
- RESOLUCAO[i] = (COLUNA_Y[i] - soma)/Matriz_U[i][i];
- }
- }
- void AJUSTAMENTO (VALORES_CASOS v, float SISTEMA[10][11])
- {
- int i, j;
- IMPRIME_VETOR(v.pontos_fornecidos[0], v.n_pontos);
- float g_i[10][100], f_x[100];
- for(i=0; i<v.n_tipos; i++)
- {
- if(v.tipo_de_funcao[i]=='a')
- {
- for (j=0; j<v.n_pontos; j++)
- {
- g_i[i][j] = sin(v.pontos_fornecidos[0][j]);
- }
- }
- if(v.tipo_de_funcao[i]=='b')
- {
- for (j=0; j<v.n_pontos; j++)
- {
- g_i[i][j] = cos(v.pontos_fornecidos[0][j]);
- }
- }
- if(v.tipo_de_funcao[i]=='c')
- {
- for (j=0; j<v.n_pontos; j++)
- {
- g_i[i][j] = log(v.pontos_fornecidos[0][j]);
- }
- }
- if(v.tipo_de_funcao[i]=='d')
- {
- for (j=0; j<v.n_pontos; j++)
- {
- g_i[i][j] = exp(v.pontos_fornecidos[0][j]);
- }
- }
- if(v.tipo_de_funcao[i]=='e')
- {
- for (j=0; j<v.n_pontos; j++)
- {
- g_i[i][j] = pow((v.pontos_fornecidos[0][j]), 5);
- }
- }
- if(v.tipo_de_funcao[i]=='f')
- {
- for (j=0; j<v.n_pontos; j++)
- {
- g_i[i][j] = pow((v.pontos_fornecidos[0][j]), 4);
- }
- }
- if(v.tipo_de_funcao[i]=='g')
- {
- for (j=0; j<v.n_pontos; j++)
- {
- g_i[i][j] = pow((v.pontos_fornecidos[0][j]), 3);
- }
- }
- if(v.tipo_de_funcao[i]=='h')
- {
- for (j=0; j<v.n_pontos; j++)
- {
- g_i[i][j] = pow((v.pontos_fornecidos[0][j]), 2);
- }
- }
- if(v.tipo_de_funcao[i]=='i')
- {for (j=0; j<v.n_pontos; j++)
- {
- g_i[i][j] = v.pontos_fornecidos[0][j];
- }
- }
- if(v.tipo_de_funcao[i]=='j')
- {
- for (j=0; j<v.n_pontos; j++)
- {
- g_i[i][j] = 1;
- }
- }
- }
- for (i=0; i<v.n_tipos; i++)
- {
- for (j=0; j<v.n_tipos; j++)
- {
- SISTEMA[i][j] = SOMATORIO_MULTIPLICACAO (g_i[i], g_i[j], v.n_pontos);
- }
- SISTEMA[i][v.n_tipos] = SOMATORIO_MULTIPLICACAO(v.pontos_fornecidos[1], g_i[i], v.n_pontos);
- }
- }
- main()
- {
- float SISTEMA[10][11], SOLUCAO[10], teste[10][11];
- VALORES_CASOS v[100];
- int t,i, j, n_casos;
- FILE* ENTRADA;
- FILE* SAIDA;
- SAIDA = fopen("saida.txt", "w");
- ENTRADA = fopen("entrada.txt", "r");
- if (ENTRADA == NULL)
- printf("erro");
- fscanf(ENTRADA,"%d", &n_casos);
- for (i=0; i < n_casos; i++)
- {
- fscanf(ENTRADA,"%d\n", &v[i].n_pontos);
- for (j=0; j<v[i].n_pontos; j++)
- {
- fscanf(ENTRADA,"%f, %f;",&v[i].pontos_fornecidos[0][j], &v[0].pontos_fornecidos[1][j]);
- printf("\n----%lf, %lf-----\n", v[i].pontos_fornecidos[0][j], v[i].pontos_fornecidos[1][j]);
- }
- fscanf(ENTRADA,"%d",&v[i].n_tipos);
- for(j=0; j<v[i].n_tipos; j++)
- {
- fscanf(ENTRADA,"%c + ",&v[i].tipo_de_funcao[j]);
- printf("\n----%c-----\n", v[i].tipo_de_funcao[j]);
- }
- AJUSTAMENTO(v[i], SISTEMA);
- RESOLVE_SISTEMA(SISTEMA, v[i].n_pontos, SOLUCAO);
- fprintf(SAIDA, "\nCaso %d\n\t", i);
- for (j=0; j<v[i].n_pontos; j++)
- {
- fprintf(SAIDA,"%.5f, ", SOLUCAO[i]);
- }
- fprintf(SAIDA,"%.5f", "\b\b.\n");
- }
- ENTRADA = NULL;
- SAIDA = NULL;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement