Ir ao conteúdo
  • Cadastre-se

Ajuda com Matriz


oniblade

Posts recomendados

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>

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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...