Ir ao conteúdo
  • Cadastre-se

Portugol Cálculo de Determinante de uma matriz nxn


Posts recomendados

Boa noite pessoal. 

Estou com dificuldade para encontrar a determinante de uma matriz. 

Não consegui utilizar o método da triangulação.

Abaixo segue o trecho do código que consegui utilizar para gerar a matriz.

 

Sou iniciante, desculpem caso seja algo muito simples de resolver.

 

programa {
    funcao inicio() {
        inteiro m, linha=0, coluna=0
        real matriz_a[100][100]
        
        escreva("Digite o numero de linhas e colunas da matriz quadrada: \n")
        leia(m)
        
        
        para(linha=0;linha<m;linha++)
        {
           
            para(coluna=0;coluna<m;coluna++)
            {
                escreva("Informe o elemento:", linha,coluna, " \n")
                leia(matriz_a[linha][coluna])
            }
        }
        
        para(linha=0;linha<m;linha++)
        {
            para(coluna=0;coluna<m;coluna++)
            {
                escreva(matriz_a[linha][coluna]," ")
            }
            escreva("\n")
        }
        
    }
}

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Estou com dificuldades até mesmo para matrizes do tipo 2x2.

O cálculo deve ser a diagonal principal - diagonal secundária. Estou tentando elaborar um algoritmo que faça essa multiplicação da diagonal, no entanto ele sempre me retorna "0". Se colocar a operação de soma da diagonal, ele faz esta operação.

 

programa {
	funcao inicio() {
		inteiro m=0, linha=0, coluna=0, k=1, det=0, diag1=0, i=0, j=0
		real matriz_a[2][2]
		
	
		
		para(i=0;i<2;i++)
		{
		    para(j=0;j<2;j++)
		    {
		        escreva("Informe o elemento:", i,j, " \n")
		        leia(matriz_a[i][j])
		    }
		}
		
		para(i=0;i<2;i++)
		{
		    para(j=0;j<2;j++)
		    {
		        escreva(matriz_a[i][j]," ")
		    }
		    escreva("\n")
		}
			para(i=0;i<2;i++)
		{
		    para(j=0;j<2;j++)
		    {
		        se(i==j)
		        diag1 = diag1*(matriz_a[i][j])
		    }
		    
		}
		escreva("a diagonal 1 eh: ", diag1)
		
	}
}

 

Link para o comentário
Compartilhar em outros sites

Para matriz 2x2, acredito que seja este código:

 

programa {
	funcao inicio() {
		inteiro m, linha=0, coluna=0, diag1=1, diag2=1, determinante=0
		real matriz_a[100][100]
		
		escreva("Digite o numero de linhas e colunas da matriz quadrada: \n")
		leia(m)
		
		
		para(linha=0;linha<m;linha++)
		{
		   
		    para(coluna=0;coluna<m;coluna++)
		    {
		        escreva("Informe o elemento:", linha,coluna, " \n")
		        leia(matriz_a[linha][coluna])
		    }
		}
		
		para(linha=0;linha<m;linha++)
		{
		    para(coluna=0;coluna<m;coluna++)
		    {
		        escreva(matriz_a[linha][coluna]," ")
		    }
		    escreva("\n")
		}
		
		para(linha=0;linha<m;linha++)
		{
		    para(coluna=0;coluna<m;coluna++)
		    {
		        se(linha==coluna e m<3)
		        diag1=diag1*matriz_a[linha][coluna]
		    }
		    
		}
	
	 
	
	
	para(linha=0;linha<m;linha++)
	{
	    para(coluna=0;coluna<m;coluna++)
	    {
	        se(linha+coluna+1==m e m<3)
	        {
	        diag2=diag2*matriz_a[linha][coluna]
	        }
	    
	
	determinante=diag1-diag2
}
}
        escreva("A diagonal principal eh: \n", diag1, "\n")
        
        escreva("A diagonal secundaria eh: \n", diag2,"\n")
        
        escreva("A determinante eh:\n ", determinante)
	    
	}
}

 

@Simon Viegas o problema agora é replicar para matrizes de ordem maior heheh

Link para o comentário
Compartilhar em outros sites

programa {
	funcao inicio() {
		inteiro m, linha=0, coluna=0, diag1=1, diag2=1, determinante=0, diag3=1, diag3_a=1, diag3_t=1, diag4=1, diag4_a=1, diag4_t=1
		inteiro diag5=1, diag5_a=1, diag5_t=1, diag6=1, diag6_a=1, diag6_t=1, det3=0
		real matriz_a[100][100]
		
		escreva("Digite o numero de linhas e colunas da matriz quadrada: \n")
		leia(m)
		
		
		para(linha=0;linha<m;linha++)
		{
		   
		    para(coluna=0;coluna<m;coluna++)
		    {
		        escreva("Informe o elemento:", linha,coluna, " \n")
		        leia(matriz_a[linha][coluna])
		    }
		}
		
		para(linha=0;linha<m;linha++)
		{
		    para(coluna=0;coluna<m;coluna++)
		    {
		        escreva(matriz_a[linha][coluna]," ")
		    }
		    escreva("\n")
		}
		
		para(linha=0;linha<m;linha++)
		{
		    para(coluna=0;coluna<m;coluna++)
		    {
		        se(linha==coluna)
		        diag1=diag1*matriz_a[linha][coluna]
		    }
		    
		}
	
	 
	para(linha=0;linha<m;linha++)
	{
	    para(coluna=0;coluna<m;coluna++)
	    {
	        se(linha+coluna+1==m)
	        {
	        diag2=diag2*matriz_a[linha][coluna]
	        }
	    }
	    
	} 
	para(linha=0;linha<m;linha++)
	{
	    para(coluna=0;coluna<m;coluna++)
	    {
	        se(coluna==linha+1)
	        {
	        diag3=diag3*matriz_a[linha][coluna]
	        }
	    }
	} 
	
		para(linha=0;linha<m;linha++)
	{
	    para(coluna=0;coluna<m;coluna++)
	    {
	        se(linha==coluna+2)
	        {
	        diag3_a=diag3_a*matriz_a[linha][coluna]
	        }
	    }
	} 
	
	diag3_t=diag3*diag3_a
	
	
	    para(linha=0;linha<m;linha++)
	{
	    para(coluna=0;coluna<m;coluna++)
	    {
	        se(linha==coluna+1)
	        {
	        diag4=diag4*matriz_a[linha][coluna]
	        }
	    }
    }
    
    para(linha=0;linha<m;linha++)
	{
	    para(coluna=0;coluna<m;coluna++)
	    {
	        se(coluna==linha+2)
	        {
	        diag4_a=diag4_a*matriz_a[linha][coluna]
	        }
	    }
	    diag4_t=diag4*diag4_a
	} 
	  para(linha=0;linha<m;linha++)
	{
	    para(coluna=0;coluna<m;coluna++)
	    {
	        se(linha+coluna==m)
	        {
	        diag5=diag5*matriz_a[linha][coluna]
	        }
	    }
    }
    
    para(linha=0;linha<m;linha++)
	{
	    para(coluna=0;coluna<m;coluna++)
	    {
	        se(coluna==linha e coluna+linha==0)
	        {
	        diag5_a=diag5_a*matriz_a[linha][coluna]
	        }
	    }
	    diag5_t=diag5*diag5_a
	} 
	
	 para(linha=0;linha<m;linha++)
	{
	    para(coluna=0;coluna<m;coluna++)
	    {
	        se(linha+coluna==1)
	        {
	        diag6=diag6*matriz_a[linha][coluna]
	        }
	    }
    }
    
     para(linha=0;linha<m;linha++)
	{
	    para(coluna=0;coluna<m;coluna++)
	    {
	        se(coluna+linha==4)
	        {
	        diag6_a=diag6_a*matriz_a[linha][coluna]
	        }
	    }
	    diag6_t=diag6*diag6_a
	} 
	
det3=(diag1+diag3_t+diag4_t)-(diag2+diag5_t+diag6_t)
	
        escreva("A diagonal 1 eh: \n", diag1, "\n")
        
        escreva("A diagonal 2 eh: \n", diag2,"\n")
        
        escreva("A diagonal 3 eh: \n", diag3_t,"\n")
        
        escreva("A diagonal 4 eh: \n", diag4_t,"\n")
        
        escreva("A diagonal 5 eh: \n", diag5_t,"\n")
        
        escreva("A diagonal 6 eh: \n", diag6_t,"\n")
        
        escreva("A determinante eh: \n", det3 ,"\n")
        
        
}

}



	

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...