Pular para o conteúdo

Gauss Seidel

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("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("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>33[036m")..etc>33[036m")..etc>
Perfil removido removido
Hits: 27.038 Categoria: C/C++ Subcategoria: Expressões Regulares
  • Download
  • Nova versão
  • Indicar
  • Denunciar

Descrição

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("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("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>33[036m")..etc>33[036m")..etc>
Download GaussSeidel.c Enviar nova versão

Esconder código-fonte

/*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("\033[036m");
  printf("\033[04m");
  printf("Resolução de SELAs - Gauss-Seidel \n");
  printf("\033[00m");
  printf("\033[036m");
  printf("\n Forneça as dimensões da matriz A: m n = ");
  printf("\033[00m");
  scanf("%d %d", &m, &n);
  aloc_var(m,n);
  gauss_Seidel(m,n);
  printf("\033[036m");
  printf("\033[05m");
  printf("\n Deseja sair do progrma? (1-Sim, 0-Não)");
  printf("\033[00m");
  scanf("%d", &s);
 }
}


void gauss_Seidel(m,n)
 int m, n;
{
 double somat();
 int k, tol;
 printf("\033[036m");
 printf("\n Defina a matriz A[%dx%d]\n",m,n);
 printf("\033[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("\033[036m");
 printf("\n Defina o vetor B(%d)\n",m);
 printf("\033[00m");
 for(i=0; i<=m-1; i++)
 {
   printf("\n b[%d]=  ",i+1);
   scanf("%lf",&b[i]);
 }
 printf("\033[036m");
 printf("\n Defina o vetor x(%d)\n",n);
 printf("\033[00m");
 for(i=0; i<=n-1; i++)
 {
   printf("\n x[%d]=  ",i+1);
   scanf("%lf",&x[i]);
 }
 printf("\033[036m");
 printf("\n Defina o número de iterações = ");
 printf("\033[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("\033[036m");
 printf("\n O vetor x é = \n");
 printf("\033[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));
 }
}

Sequência de Fibonacci

Equação do 2º grau

Tentativas

Qual a idade de Jacinto?

Mini Analisador Léxico que conta palavras numa string

#1 Comentário enviado por marr3ta em 15/05/2008 - 17:27h
gauss sidel, eu faço na mao!! aiuhaiuhaiuhaiuhaiuhiuh.. valew cara!! muito show
#2 Comentário enviado por albertguedes em 16/05/2008 - 01:00h
Tá, sempre apoio as iniciativas de publicações aqui no VOL, independente do assunto, mas um ponto tenho que dizer Claudir, para uma técnica numérica não muito popular entre os visitantes do VOL, feita em C e ainda por cima sem comentários explicativos no código ? Eu entendo sua boa intensão, mas ela foi por agua abaixo, pois você dificultou a compreensão rápida do código, que é o ponto didático da seção de scripts. Pense nisso nos próximos códigos que você publicar.
De resto, seu código é muito bom Claudir.
#3 Comentário enviado por dborges em 07/10/2011 - 14:26h
Boa tarde.
Tentei rodar seu codigo aqui, da forma como esta, mas nao funcionou... Vc pode me dar alguma dica? Sou academico de eletrica, e estou utilizando muito Gauss Seidel, entre outros. Por acaso, vc teria o Metodo das Gradientes tambem?!Ah, sobre o erro, quando eu compilo, o erro ta logo abaixo do Main, no " void gauss_Seidel(), aloc_var();". Se possivel, por favor me ajude. Obrigado!
#4 Comentário enviado por binhobinho em 29/10/2013 - 22:05h
Meu caro, rodei o seu algoritmo no deve c++ em c funcionou perfeitamente, apos horas pesquisando na net de todos os algorítmos encontrados e diga-se de passagem de sites fomosos, o seu foi o único que rodou e que funcionou bem.
quero agradece-lo por isso. quero dizer também que o sistema que estou usando é windows 7 starter

Contribuir com comentário

Entre na sua conta para comentar.