borrador para comenzar newton rapson matrices

Generador de Matrices

Generador de Matrices K y M

// script.js function crearMatrices() { const numGrados = parseInt(document.getElementById("numGrados").value); const matricesDiv = document.getElementById("matrices"); // Crear matrices vacías const matrizK = []; const matrizM = []; const vectorLambda = []; // Inicializar matrices y vector con ceros for (let i = 0; i < numGrados; i++) { matrizK[i] = []; matrizM[i] = []; vectorLambda[i] = 0; for (let j = 0; j < numGrados; j++) { matrizK[i][j] = 0; matrizM[i][j] = 0; } } // Crear tabla para editar la matriz K let html = `

Matriz K

`; for (let i = 0; i < numGrados; i++) { html += ""; for (let j = 0; j < numGrados; j++) { html += ``; } html += ""; } html += "
"; // Crear tabla para editar la matriz M html += `

Matriz M

`; for (let i = 0; i < numGrados; i++) { html += ""; for (let j = 0; j < numGrados; j++) { html += ``; } html += ""; } html += "
"; // Crear inputs para el vector lambda html += `

Vector Lambda

`; for (let i = 0; i < numGrados; i++) { html += ``; } html += "
"; // Agregar el HTML generado al div matricesDiv.innerHTML = html; // Agregar evento para actualizar las matrices cuando se cambia un valor const inputs = document.querySelectorAll('input[type="number"]'); inputs.forEach(input => { input.addEventListener('change', () => { const row = parseInt(input.dataset.row); const col = parseInt(input.dataset.col); const value = parseFloat(input.value); // Actualizar la matriz K o M o el vector lambda if (input.closest('table').previousElementSibling.textContent === "Matriz K") { matrizK[row][col] = value; } else if (input.closest('table').previousElementSibling.textContent === "Matriz M") { matrizM[row][col] = value; } else { vectorLambda[row] = value; } }); }); // Calcular determinantes const determinantes = [calcularDeterminante(matrizK), calcularDeterminante(matrizM)]; // Mostrar los resultados const resultadosDiv = document.createElement('div'); resultadosDiv.innerHTML = `

Determinantes

    `; determinantes.forEach((determinante, index) => { resultadosDiv.innerHTML += `
  • Determinante ${index + 1}: ${determinante}
  • `; }); resultadosDiv.innerHTML += "
"; matricesDiv.appendChild(resultadosDiv); } // Función para calcular el determinante de una matriz function calcularDeterminante(matriz) { const n = matriz.length; if (n === 1) return matriz[0][0]; if (n === 2) return matriz[0][0] * matriz[1][1] - matriz[0][1] * matriz[1][0]; let det = 0; for (let i = 0; i < n; i++) { const subMatriz = matriz.slice(1).map(row => row.filter((_, j) => j !== i)); det += matriz[0][i] * calcularDeterminante(subMatriz) * (i % 2 === 0 ? 1 : -1); } return det; } /* styles.css */ table { border-collapse: collapse; margin: 20px; } th, td { border: 1px solid black; padding: 10px; text-align: center; } input[type="number"] { width: 50px; }

Comentarios

Entradas populares de este blog

1coeficientes sismicos y cortes por pisos

Costanera madera

inercia viga doble C y coeficientes K perfiles compuestos