Ir ao conteúdo
  • Cadastre-se
Entre para seguir isso  
oniblade

Ajuda com Matriz

Recommended Posts

Eaii galera , to com um problema de logica, alguem poderia me ajudar na logica desse algoritmo abaixo, eu peguei ele de um codigo fonte de uma pagina na net . Grato a quem me ajudar

 <script type="text/javascript">

<!--

a = new Array();



function GerarMatriz() {

// Dada a ordem da matriz, gera os campos de formulário para o preenchimento dos elementos

n = document.calc.ordem.value;

document.getElementById("resultado").innerHTML = "";



if (isNaN(n) || n <= 0) {

alert("A ordem da matriz deve ser um valor numérico positivo")

return false;

}



formMatriz = "<form name=\"calc2\">";



for (i = 1; i <= n; i++) {

for (j = 1; j <= n; j++) {

formMatriz += "<input type=\"text\" size=\"3\" style=\"border: solid 1px #ABABAB; width: 20px; height: 20px; vertical-align: top\" />    ";

}

formMatriz += "<br><br>";

}

formMatriz += "</form>";



document.getElementById("matriz").innerHTML = formMatriz;

document.getElementById("bt").disabled = false;

return false;

}



function ObterElementos() {

// Lê todos os elementos da matriz N x N e armazena num array do tipo a[i][j][id]

// Onde 'i' refere-se à linha, 'j' à coluna e 'n' à enésima matriz gerada, começando por 1

var k = 0;

var matriz = 1;

for (i = 1; i <= n; i++) {

a[i] = new Array();

for (j = 1; j <= n; j++) {

a[i][j] = new Array();

a[i][j][matriz] = document.calc2.elements[k].value;

k++;

}

}

}



function Calcular() {

ObterElementos();

document.getElementById("resultado").innerHTML = "Determinante: " + Determinante(1, n);

}



det = new Array();

u = new Array(); // u é um índice de contagem do tipo array, para que o valor de cada variável não seja perdido após a a chamada de uma nova função



function Determinante(id, tam) {

// Calcula o determinante de uma matriz M, segundo o Teorema de Laplace

if (tam == 1) {

return a[1][1][id]; // Se a matriz tiver ordem 1, o determinante é o único elemento de M

}

else if (tam == 2) {



/*************************************************************************

Se tiver ordem 2, o determinante vale o produto dos elementos

da diagonal principal menos o produto dos elementos da diagonal secundária

*************************************************************************/



return a[1][1][id] * a[2][2][id] - a[2][1][id] * a[1][2][id];

}

else {



/*********************************************************************

Se a ordem >= 3, entra o Teorema de Laplace:

O determinante de uma matriz M é a soma dos produtos dos elementos

de uma fila qualquer (linha ou coluna) pelos respectivos cofatores.

Mas, para este programa, considera-se sempre a primeira linha, porque

se fosse buscar uma fila específica, a aplicação, sem dúvidas,

seria mais lenta e, logo, inviável.

*********************************************************************/



det[id] = 0;

for (u[id] = 1; u[id] <= tam; u[id]++) {

if (a[1][u[id]][id] != 0) {

det[id] += (a[1][u[id]][id] * Cofator(u[id], tam, id));

}

}

return det[id];

}

}



function Cofator(x, n, m) {

// Calcula o cofator dos elementos a(1, i), para todo 1 <= i <= n

var p = 0;

for (i = 2; i <= n; i++) {

p++;

var s = 0;

for (j = 1; j <= n; j++) {

if (i != 1 && j != x) {

s++;

a[p][s][m + 1] = a[i][j][m];

}

}

}

return (Math.pow(-1, 1 + x) * Determinante(m + 1, p));

}

//-->

</script>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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
Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×