Gauss Seidel
Publicado por Perfil removido 15/05/2008
[ Hits: 26.869 ]
Esse script é bem simples, calcula o Metodo de Gauss Seidel.
Depois de compilar e executar dando as entradas devidas, gera um arquivo texto. Dê o nome para esse arquivo.
Obs:Deve definir o tamanho da matriz(1000x1000 por exemplo).Você pode tirar os argumentos que fazem ele ficar destacado. <printf("{DESCRICAO}33[036m")..etc>
/*Matematica numerica
Claudir Oliveira
Método de Gauss Seidel
*/
/*
<1º passo-Criação de ponteiros e alocação de ponteiros>
<2º passo-Criar ponteiro para arquivos e escrever aquivos>
############################################################
compilar:gcc SeidelModificado.c -o <name>
*/
#include<stdio.h>
#include<math.h>
#include<malloc.h>
double **a, *b, *x;
int i, j, n;
main()
{
void gauss_Seidel(), aloc_var();
int s, m, n;
s = 0;
while(s==0)
{
printf("{FONTE}33[036m");
printf("{FONTE}33[04m");
printf("Resolução de SELAs - Gauss-Seidel \n");
printf("{FONTE}33[00m");
printf("{FONTE}33[036m");
printf("\n Forneça as dimensões da matriz A: m n = ");
printf("{FONTE}33[00m");
scanf("%d %d", &m, &n);
aloc_var(m,n);
gauss_Seidel(m,n);
printf("{FONTE}33[036m");
printf("{FONTE}33[05m");
printf("\n Deseja sair do progrma? (1-Sim, 0-Não)");
printf("{FONTE}33[00m");
scanf("%d", &s);
}
}
void gauss_Seidel(m,n)
int m, n;
{
double somat();
int k, tol;
printf("{FONTE}33[036m");
printf("\n Defina a matriz A[%dx%d]\n",m,n);
printf("{FONTE}33[00m");
for(i=0; i<= m-1; i++)
{
for(j=0; j<=n-1; j++)
{
printf("\n a[%d,%d]= ",i+1,j+1);
scanf("%lf",&a[i][j]);
}
}
printf("{FONTE}33[036m");
printf("\n Defina o vetor B(%d)\n",m);
printf("{FONTE}33[00m");
for(i=0; i<=m-1; i++)
{
printf("\n b[%d]= ",i+1);
scanf("%lf",&b[i]);
}
printf("{FONTE}33[036m");
printf("\n Defina o vetor x(%d)\n",n);
printf("{FONTE}33[00m");
for(i=0; i<=n-1; i++)
{
printf("\n x[%d]= ",i+1);
scanf("%lf",&x[i]);
}
printf("{FONTE}33[036m");
printf("\n Defina o número de iterações = ");
printf("{FONTE}33[00m");
scanf("%d", &tol);
k = 0;
while (k < tol)
{
for(i=0; i<=n-1; i++)
{
x[i] = (b[i] - somat(i,n) + a[i][i]*x[i])/a[i][i];
}
k = k+1;
}
printf("{FONTE}33[036m");
printf("\n O vetor x é = \n");
printf("{FONTE}33[00m");
for (i = 0; i <= n-1; i++)
{
printf("%g \n", x[i]);
}
}
double somat(i,n)
int i, n;
{
double soma;
soma = 0.0;
for(j=0; j<=n-1; j++)
{
soma = soma + a[i][j]*x[j];
}
return soma;
}
void aloc_var(m,n)
int m,n;
{
int i;
printf("\n Valor de m , n = %d,%d\n",m,n);
a=(double **) malloc((m+1)*sizeof(double *));
b=(double *) malloc((m+1)*sizeof(double));
x=(double *) malloc((n+1)*sizeof(double));
for(i=0;i < n+1;i++)
{
a[i]=(double *)malloc((n+1)*sizeof(double));
}
}
Bom treino, muito completo: classificação de atletas
Automato Finito Determinístico
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Como realizar um ataque de força bruta para desobrir senhas?
Como usar Gpaste no ambiente Cinnamon
Atualizando o Fedora 42 para 43
Perfil criado no samba ad dc não loga no Windows 10 e 11 (11)
Fedora - Google Workspace + SSSD (0)
Estou tentando ser legalista, mas tá complicado! (5)









