Buscar

Trabalho Claudio Seie

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 10 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 10 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 10 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

UNIVERSIDADE EDUARDO MONDLANE 
FACULDADE DE CIÊNCIAS 
DEPARTAMENTO DE MATEMÁTICA E INFORMÁTICA 
LICENCIATURA EM INFORMÁTICA (Laboral) 
III.° Ano 
 
Tema: Método de Gauss-Jordan 
 
 
Discentes: 
 Cláudio Raúl Sumburane 
 José Eugénio Seie 
 
 
 
 Docente: 
 Rossana Soares 
 
 
 
Maputo, Novembro de 2017
Índice 
Introdução ..................................................................................................................... 2 
Algoritmo de Resolução ............................................................................................... 3 
Código ........................................................................................................................... 4 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Método de Gauss-Jordan 
 
2 
Cláudio Sumburane && José Seie 
Introdução 
O trabalho a seguir apresentado fala sobre o método conhecido por Eliminação de Gauss-
Jordan é uma versão da Eliminação de Gauss que zera os elementos acima e abaixo do 
elemento de pivotação, conforme ele percorre a matriz. Em outras palavras, a eliminação 
de Gauss-Jordan transforma a matriz em uma forma escalonada por colunas reduzida, 
enquanto a eliminação de Gauss transforma na forma escalonada por colunas. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Método de Gauss-Jordan 
 
3 
Cláudio Sumburane && José Seie 
Algoritmo de Resolução 
Consideremos um sistema de equações, onde o número de equações é igual ao número de 
variáveis. Sendo cumprida esta condição já podemos aplicar o método de eliminação de 
Gauss Jordan basta seguir os seguintes passos: 
1) O elemento da 1.ª linha, 1.ª coluna (𝒂𝟎𝟎) é a base para o método de Gauss Jordan, 
deve-se garantir que ele seja diferente de zero; 
2) Multiplicar a 1.ª linha pelo inverso do pivô. Para a 1.ª linha o pivô é (𝒂𝟎𝟎), 
a) Ficamos assim com: 𝑳𝒊𝒏𝒉𝒂𝟎 = 𝑳𝒊𝒏𝒉𝒂𝟎 ∗ 
𝟏
𝟐
𝒂𝟎𝟎. 
3) Anular todos os coeficientes da coluna do elemento pivô. Para a primeira linha o pivô 
é: 𝒂𝟎𝟎; 
a) Para se anular os elementos da coluna do pivô, para cada linha calcula-se um 
multiplicador de seguida se realiza uma operação de soma entre as linhas, a seguir 
as fórmulas detalhadas. 
b) Fórmula para multiplicador de cada linha: 𝒎𝒖𝒍𝒕𝒊𝒑𝒍𝒊𝒄𝒂𝒅𝒐𝒓𝒊 = −(𝒂𝒊𝟎/𝒂𝟎𝟎), 
c) Operação soma de linhas: 𝑳𝒊𝒏𝒉𝒂𝒊 = 𝑳𝒊𝒏𝒉𝒂𝒊 + 𝒎𝒖𝒍𝒕𝒊𝒑𝒍𝒊𝒄𝒂𝒅𝒐𝒓 ∗ 𝑳𝒊𝒏𝒉𝒂𝟎 
4) Seguem-se os passos 2 e 3 para cada pivô da matriz, onde o pivô será o elemento (𝒂𝒊𝒋) 
para cada linha. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Método de Gauss-Jordan 
 
4 
Cláudio Sumburane && José Seie 
Código 
package controller; 
 
import java.math.BigDecimal; 
import javax.swing.JTextArea; 
import model.Matriz; 
 
public class GaussJordan { 
 
 Matriz matriz; 
 JTextArea taPassos = new JTextArea(); 
 
 public GaussJordan(Matriz matriz) { 
 this.matriz = matriz; 
 } 
 
 /** 
 * TextArea onde vao sendo se registado os passos 
 * @return 
 */ 
 public String getTextArea() { 
 return this.taPassos.getText(); 
 } 
 
 
 
 
 
 
 
 
 
Método de Gauss-Jordan 
 
5 
Cláudio Sumburane && José Seie 
 /** 
 * Método que divide uma determinada linha da matriz pelo pivot desta linha 
 * @param posPivot 
 */ 
 public void divide(int posPivot) { 
 double[][] matrizRecebida = this.matriz.getMatriz(); 
 double pivot = matrizRecebida[posPivot][posPivot]; 
 System.out.println("Linha" + posPivot + " / " + pivot + "\n"); 
 for (int i = 0; i < this.matriz.getOrdem() + 1; i++) { 
 // Na linha do pivot vai dividindo todas as colunas pelo pivot 
 matrizRecebida[posPivot][i] = matrizRecebida[posPivot][i] / pivot; 
 matrizRecebida[posPivot][i] = arredondar(matrizRecebida[posPivot][i], 2); 
 } 
 imprimirMatrizRecursivo(); 
 this.matriz.setMatriz(matrizRecebida); 
 } 
 
 /** 
 * Método que Zerra as linhas a baixo de um pivot 
 * @param posPivot 
 * @return 
 */ 
 public double[][] zerrarColunas(int posPivot) { 
 double multiplicador; 
 double[][] matrizRecebida = this.matriz.getMatriz(); 
 for (int i = 0; i < this.matriz.getOrdem(); i++) { 
 if (i != posPivot) { 
 multiplicador = -matrizRecebida[i][posPivot]; 
 for (int j = 0; j < this.matriz.getOrdem() + 1; j++) { 
 matrizRecebida[i][j] = matrizRecebida[i][j] + multiplicador * 
matrizRecebida[posPivot][j]; 
 matrizRecebida[i][j] = arredondar(matrizRecebida[i][j], 2); 
Método de Gauss-Jordan 
 
6 
Cláudio Sumburane && José Seie 
 } 
 } 
 } 
 
 imprimirMatrizRecursivo(); 
 return matrizRecebida; 
 } 
 
 /** 
 * Aplicação do Método Gauss Jordan 
 */ 
 public void aplicarMetodo() { 
 int pivot = 0; 
 imprimirMatrizRecursivo(); 
 for (int i = 0; i < this.matriz.getOrdem(); i++) { 
 for (int j = 0; j <= this.matriz.getOrdem(); j++) { 
 if (i == j) { 
 divide(i); 
 pivot = i; 
 } 
 } 
 zerrarColunas(pivot); 
 if(infinidadeSol(zerrarColunas(pivot))){ 
 i = this.matriz.getOrdem()-1; 
 
 } 
 
 } 
 } 
 
 
 
Método de Gauss-Jordan 
 
7 
Cláudio Sumburane && José Seie 
 public boolean infinidadeSol(double matrizRecebida[][]) { 
 for (int linha = 0; linha < this.matriz.getOrdem(); linha++) { 
 if(this.linhaNula(matrizRecebida, linha, 0, 0)){ 
 return true; 
 } 
 
 } 
 
 return false; 
 } 
 
 
 /** 
 * Metodo que verifica se uma determinada linha e nula ou nao 
 * @param matrizRecebida matriz recebida 
 * @param linha posicao da linha a ser analisada 
 * @param contColunas incrementa as colunas 
 * @param ocorenciaZerro conta o numero de ocorencia de zerros na linha 
 * @return 
 */ 
 public boolean linhaNula(double matrizRecebida[][], int linha, int contColunas, int 
ocorenciaZerro) { 
 if (contColunas == this.matriz.getOrdem()) 
 return ocorenciaZerro >= this.matriz.getOrdem(); 
 else{ 
 if(matrizRecebida[linha][contColunas] == 0) 
 ocorenciaZerro++; 
 return linhaNula(matrizRecebida, linha, contColunas + 1, ocorenciaZerro); 
 } 
 
 } 
 
Método de Gauss-Jordan 
 
8 
Cláudio Sumburane && José Seie 
 /** 
 * Método que chama o método imprimir matriz 
 * 
 */ 
 public void imprimirMatrizRecursivo() { 
 double[][] matrizRecebida = this.matriz.getMatriz(); 
 System.out.println(percorreMatriz(matrizRecebida, -1, 0)); 
 } 
 
 /** 
 * Método que percorre uma determinada matriz 
 * @param matrizRecebida 
 * @param i contador de linhas* @param j contador de colunas 
 * @return 
 */ 
 public String percorreMatriz(double matrizRecebida[][], int i, int j) { 
 if (i == this.matriz.getOrdem() - 1) 
 return ""; 
 else 
 return percorreColuna(matrizRecebida, i + 1, j) + "\n\n" + 
percorreMatriz(matrizRecebida, i + 1, j); 
 } 
 
 /** 
 * Método que percore colunas de uma determinada linha da matriz 
 * @param matrizRecebida 
 * @param linha linha 
 * @param contColunas contador de colunas 
 * @return 
 */ 
 
Método de Gauss-Jordan 
 
9 
Cláudio Sumburane && José Seie 
public String percorreColuna(double matrizRecebida[][], int linha, int contColunas) { 
 if (contColunas == this.matriz.getOrdem()) 
 return matrizRecebida[linha][contColunas] + ""; 
 else 
 return matrizRecebida[linha][contColunas] + " " + 
percorreColuna(matrizRecebida, linha, contColunas + 1); 
 } 
 
 /** 
 * Metodo que arredonda um numero real 
 * 
 * @param nrEntrada 
 * @param nrCasas 
 * @return 
 */ 
 private double arredondar(double nrEntrada, int nrCasas) { 
 BigDecimal bd = new BigDecimal(nrEntrada); 
 bd = bd.setScale(nrCasas, BigDecimal.ROUND_HALF_UP); 
 return bd.doubleValue(); 
 } 
 
}

Outros materiais