Ir para conteúdo
Fórum Script Brasil
  • 0

Programa em linguagem C, matriz


bia.sayuri.akinaga@gmail.c

Pergunta

1 resposta a esta questão

Posts Recomendados

  • 0

Já desenvolvi uma função em C para resolução de sistemas lineares pelo método da Eliminação de Gauss. 
 

//Resolução de sistema linear através do Método da Eliminação Gaussiana
float * Gauss(float ** M, int tam){
	int i, l, j;
	float * S;
	float pivor[2];
	float aux;
	S=AlocarVetor(tam);
	for (j=0; j<tam-1; j++){
		pivor[0]=j;
		pivor[1]=M[j][j];
		for (l=j+1; l<tam;l++){		//Procura do maior termo na coluna
			if ((float)fabs(M[l][j])>(float)fabs(pivor[1])){
				pivor[0]=l;
				pivor[1]=M[l][j];
			}
		}
		if ((int)pivor[0] != j){
			for (l=j; l<=tam; l++){	//Colocando a linha com o maior termo no topo
				aux=M[(int)pivor[0]][l];
				M[(int)pivor[0]][l]=M[j][l];
				M[j][l]=aux;
			}
		}
		for (i=j+1;i<tam;i++){	//Escalonamento
			for (l=tam; l>=j; l--){
				M[i][l]=M[i][l]-M[j][l]*(M[i][j]/M[j][j]);
			}
		}
	}
	//Solução
		S[tam-1]=M[tam-1][tam]/M[tam-1][tam-1];
		for (i=tam-2; i>=0; i--){
			aux=0;
			for (j=i+1; j<tam; j++) aux=aux+M[i][j]*S[j];
			S[i]=(M[i][tam]-aux)/M[i][i];
		}	
	return S;
}

Onde M é a matriz ampliada do sistema e tam é o tamanho. A linguagem C oferece mais dificuldade em operações com matrizes devido a lógica de ponteiros e ausência de operações vetoriais.

Editado por Hazzu
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...