calcula determinantes 3 matrices escrito en codigos separados, ajustar para usar aqui.

Cálculo de Matrices de Rigidez y Masas

Cálculo de Matrices

/* Estilos para la tabla */ table { border-collapse: collapse; width: 100%; /* O ajustar según sea necesario */ } td, th { border: 1px solid black; padding: 5px; text-align: center; /* Centrar texto en celdas */ } const inputForm = document.getElementById('input-form'); const resultsDiv = document.getElementById('results'); // Function to create a number input with label function createNumberInput(label) { const input = document.createElement('input'); input.type = 'number'; input.placeholder = label; input.name = label; // Assign a unique name for easier value retrieval return input; } // Function to create a table with headers and rows function createTable(data) { if (!data || data.length === 0) { throw new Error('No hay datos para mostrar en la tabla.'); } const table = document.createElement('table'); const headerRow = document.createElement('tr'); // Create table headers Object.keys(data[0]).forEach(key => { const th = document.createElement('th'); th.textContent = key; headerRow.appendChild(th); }); table.appendChild(headerRow); // Create table rows data.forEach(item => { const row = document.createElement('tr'); Object.values(item).forEach(value => { const td = document.createElement('td'); td.textContent = value; row.appendChild(td); }); table.appendChild(row); }); return table; } // Function to calculate the determinant of a 3x3 matrix function calculateDeterminant(matrix) { return ( matrix[0] * (matrix[4] * matrix[8] - matrix[5] * matrix[7]) - matrix[1] * (matrix[3] * matrix[8] - matrix[5] * matrix[6]) + matrix[2] * (matrix[3] * matrix[7] - matrix[4] * matrix[6]) ); } // Function to calculate lambda and matrices A function calculate() { // Get matrix K and mass values from form const kValues = Array.from(inputForm.querySelectorAll('input[name^="K"]')).map(input => parseFloat(input.value)); const massValues = Array.from(inputForm.querySelectorAll('input[name^="Mass"]')).map(input => parseFloat(input.value)); // Validate input if (kValues.length !== 9 || massValues.length !== 3 || kValues.some(isNaN) || massValues.some(isNaN)) { alert('Por favor, ingrese valores numéricos válidos para todas las entradas de la matriz K y las masas.'); return; } try { // Calculate and show the determinant of matrix K const kDeterminant = calculateDeterminant(kValues); const kDeterminantResult = document.createElement('p'); kDeterminantResult.textContent = `Determinante de K: ${kDeterminant.toFixed(2)}`; // Show with 2 decimal places resultsDiv.innerHTML = ''; // Clear previous results resultsDiv.appendChild(kDeterminantResult); // Calculate lambda (only diagonal elements) const lambda = []; for (let i = 0; i < 3; i++) { const kIndex = i * 4; // K[i][i] corresponds to K[0][0], K[1][1], K[2][2] if (massValues[i] === 0) throw new Error('División por cero en el cálculo de lambda.'); lambda.push(kValues[kIndex] / massValues[i]); } // Show partial results for lambda const lambdaTable = createTable(lambda.map(l => ({ Lambda: l }))); resultsDiv.appendChild(lambdaTable); // Calculate matrices A[z] = K with modified diagonal elements const A = []; for (let z = 0; z < 3; z++) { const A_z = [...kValues]; // Start with a copy of K // Modify diagonal elements for (let i = 0; i < 3; i++) { A_z[i * 3 + i] = kValues[i * 3 + i] - lambda[z] * massValues[i]; // Update diagonal } A.push(A_z); } // Show results for matrices A[0], A[1], A[2] and their determinants for (let z = 0; z < 3; z++) { const ATable = createTable([ { Col1: A[z][0], Col2: A[z][1], Col3: A[z][2] }, { Col1: A[z][3], Col2: A[z][4], Col3: A[z][5] }, { Col1: A[z][6], Col2: A[z][7], Col3: A[z][8] }, ]); resultsDiv.appendChild(document.createElement('h3')).textContent = `Matriz A[${z}]:`; resultsDiv.appendChild(ATable); // Calculate and show the determinant const determinant = calculateDeterminant(A[z]); const determinantResult = document.createElement('p'); determinantResult.textContent = `Determinante de A[${z}]: ${determinant.toFixed(2)}`; // Show with 2 decimal places resultsDiv.appendChild(determinantResult); } } catch (error) { alert(`Error en los cálculos: ${error.message}`); } } // Function to create the form dynamically function createForm() { const kLabel = document.createElement('label'); kLabel.textContent = 'Valores de K:'; inputForm.appendChild(kLabel); // Create inputs for matrix K for (let i = 0; i < 3; i++) { for (let j = 0; j < 3; j++) { const input = createNumberInput(`K${i + 1}${j + 1}`); inputForm.appendChild(input); } } const massLabel = document.createElement('label'); massLabel.textContent = 'Masas:'; inputForm.appendChild(massLabel); // Create inputs for masses for (let i = 0; i < 3; i++) { const input = createNumberInput(`Mass${i + 1}`); inputForm.appendChild(input); } } // Add a button to initiate calculations const calculateButton = document.createElement('button'); calculateButton.textContent = 'Calcular'; calculateButton.onclick = calculate; inputForm.appendChild(calculateButton); // Create the form on page load createForm();

Comentarios

Entradas populares de este blog

1coeficientes sismicos y cortes por pisos

Costanera madera

inercia viga doble C y coeficientes K perfiles compuestos