Operaciones con Matrices 3x3

Anuncio
UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO
Centro Universitario UAEM Atlacomulco
FUNDAMENTOS DE ROBÓTICA
MAESTRO: Ing. Marco Antonio López Paredes
REPORTE:
PROGRAMA QUE RESUELVE OPERACIONES BASICAS (SUMA, RESTA,
MULTIPLICACIÓN Y DIVISIÓN) CON MATRICES DE 3X3
INTEGRANTES DE EQUIPO:
David González Segundo
Alfredo Marcelo Hipólito
Nayeli González Quintana
FEBRERO 2015
INTRODUCCIÓN
Una matriz de 3 x 3 es una matriz rectangular a menudo cuadrada de números de
3 columnas y 3 filas o expresiones que pueden evaluarse como números. Las
dimensiones m x n se refieren al número de filas (m) y columnas (n)
respectivamente. Los valores individuales que constituyen una matriz se
denominan sus elementos, generalmente mencionados por sus números de fila y
columna, llamadas índices.
Para poder elaborar este programa lo primero que se requirió fueron los
conocimientos previos de cómo se resuelve una matriz de 3x3, como a
continuación se describe de manera breve.
SUMA DE MATRICES 3X3
Existen restricciones específicas sobre las dimensiones de las matrices que se
pueden agregar. En la adición de matriz a y B, el número de columnas de la matriz
debe ser igual al número de filas de matriz B. La adición de matriz resultante
tendrá el mismo número de filas como matriz a y el mismo número de columnas
que b.
RESTA DE MATRICES 3X3
En la matriz de resta a y B, el número de columnas de la matriz debe ser igual al
número de filas de matriz B. La matriz resultante resta tendrá el mismo número de
filas como matriz a y el mismo número de columnas que b.
MULTIPLICACIÓN DE MATRICES 3X3
En las matrices de AB, el número de columnas de la matriz debe ser igual al
número de filas de matriz B. La matriz de producto resultante tendrá el mismo
número de filas como matriz a y el mismo número de columnas que b.
DIVISIÓN DE MATRICES 3X3
Para elaborar la división de una matriz se decidió tomar el método que permite
dividir a la matriz por un valor escalar.
DESARROLLO
Una vez adquiridos los conocimientos de cómo se resuelven las matrices,
optamos por el elaborar un pseudocódigo previo para el que será nuestro
programa. Posteriormente, elegimos el lenguaje donde se encuentra plasmado
nuestro código fuente (HTML) elaboramos también un diagrama de flujo que nos
servirá como guía de dicho procedimiento de resolución.
DIAGRAMA DE FLUJO
INICIO
matrizA
matrizB
Ingresa matrizA
Ingresa matrizB
for i=0; i<3; i=i+1
for j=0; j<3; j=j+1
SUMA
matrizA+matrizB
IMPRIME
SUMA
RESTA
matrizA-matrizB
IMPRIME
RESTA
MULTIPLICA
matrizA*matrizB
IMPRIME
MULTIPLICACIÓN
DIVIDE
matrizA/matrizB
IMPRIME
DIVISIÓN
FIN
PSEUDOCODIGO
Var A[,]: entero
Var B[,] :entero
Var matriz_resultado[,] :double
PASO 1: DECLARACIÓN DE ARREGLOS
Desde i=0 hasta longitud A hacer
Desde j=0 hasta longitud A.renglon hacer
Lee A(i, j)
Desde i=0 hasta longitud B hacer
Desde j=0 hasta longitud B.renglon hacer
Lee B(i, j)
PASO 2: ESTABLECER RECORRIDO DEL
ARREGLO, PARA PODER OCUPAR LOS ESPACIOS
VACIOS DE NUESTRA MATRIZ
Var elección: entero
Entero ← tipo_operacion
Procedimiento tipo_operacion
Caso suma:
Desde i=0 hasta longitud matriz_resultado hacer
Desde j=0 hasta longitud matriz_resultado.renglon hacer
matriz_resultado (i,j)←A(i,j)+B(i,j)
Caso resta:
Desde i=0 hasta longitud matriz_resultado hacer
Desde j=0 hasta longitud matriz_resultado.renglon hacer
matriz_resultado (i,j)←A(i,j)-B(i,j)
Caso multiplicación:
Desde i=0 hasta longitud matriz_resultado hacer
Desde j=0 hasta longitud matriz_resultado.renglon hacer
matriz_resultado (i,j)← A(i,j)*B(i,j)
Caso división:
Var k :entero
Lee k
Desde i=0 hasta longitud matriz_resultado hacer
Desde j=0 hasta longitud matriz_resultado.renglon hacer
matriz_resultado (i,j)←A(i,j)/k
procedimiento imprimir_resultado
Desde i=0 hasta longitud matriz_resultado hacer
Desde j=0 hasta longitud matriz_resultado.renglon hacer
Imprimir matriz_resultado (i,j)←A(i,j)+B(i,j)
CÓDIGO FUENTE
PASO 3: LA FUNCION QUE SE REALIZA EN
ESTA PARTE, ES RETORNAR COMO
PARAMATRO LA OPERACIÓN A REALIZAR
PASO 4: SE REALIZA LA TAREA DE ACUERDO A
LA OPERACIÓN, Y SE RETORNAN LOS VALORES
EN UNA NUEVA MATRIZ MOSTRANDOSE COMO
RESULTADO.
Interfaz
La interfaz está diseñada con HTML, la cual contiene listas en formato tabla con
identificadores cada una, las cuales permiten que estos interactúen con los
números introducidos y las funciones a realizar.
<!DOCTYPE html>
<html>
<head>
<title>Operaciones con matrices</title>
<link rel="stylesheet" type="text/css" href="css/estilos.css"/>
<script type="text/javascript" src="js/funciones.js"></script>
</head>
<body>
<hr>
<br>
<span class="titulo">OPERACIONES CON MATRICES</span>
<br>
<div class="matriz" id="matrizA">
<ul class="cuadro">
<li><input type="text" id="a11"/></li>
<li><input type="text" id="a12"/></li>
<li><input type="text" id="a13"/></li>
</ul>
<ul class="cuadro">
<li><input type="text" id="a21"/></li>
<li><input type="text" id="a22"/></li>
<li><input type="text" id="a23"/></li>
</ul>
<ul class="cuadro">
<li><input type="text" id="a31"/></li>
<li><input type="text" id="a32"/></li>
<li><input type="text" id="a33"/></li>
</ul>
</div>
<div class="operacion">
<select id="tipo">
<option value="suma">SUMA</option>
<option value="resta">RESTA</option>
<option value="multiplicacion">MULTIPLICACION</option>
<option value="division">DIVISION</option>
</select>
</div>
<div class="operacion" style="top:160px;">
K
<input type="text" id="txtDivision" value="0"/>
</div>
<div class="matriz" id="matrizB" style="left:500px">
<ul class="cuadro">
<li><input type="text" id="b11"/></li>
<li><input type="text" id="b12"/></li>
<li><input type="text" id="b13"/></li>
</ul>
<ul class="cuadro">
<li><input type="text" id="b21"/></li>
<li><input type="text" id="b22"/></li>
<li><input type="text" id="b23"/></li>
</ul>
<ul class="cuadro">
<li><input type="text" id="b31"/></li>
<li><input type="text" id="b32"/></li>
<li><input type="text" id="b33"/></li>
</ul>
</div>
<div class="matriz" id="resultado" style="left:850px">
<ul class="cuadro">
<li id="r11">0</li>
<li id="r12">0</li>
<li id="r13">0</li>
</ul>
<ul class="cuadro">
<li id="r21">0</li>
<li id="r22">0</li>
<li id="r23">0</li>
</ul>
<ul class="cuadro">
<li id="r31">0</li>
<li id="r32">0</li>
<li id="r33">0</li>
</ul>
</div>
<button id="btnCalcular" onclick="operar()">Calcular</button>
<button id="btnLimpiar" onclick="limpiar()">Limpiar</button>
<div id="respuesta" style="top:180px; position: relative; left: 60px;">para
division usa la primera matriz
</div>
</body>
</html>
Estilos
Los estilos de la interfaz del programa operaciones con matrices solo dan forma a
los objetos del documento para mejor uso.
body
{
background-color: #F5DA81;
}
.cuadro
{
margin: 0px;
padding: 0px;
}
.cuadro > li
{
display: table-cell;
font-family:arial;
width: 70px;
max-height: 50px;
border-style: solid;
border-width: 1px;
}
.matriz
{
left: 100px;
position: absolute;
top:90px;
width: 215px;
background-color: white;
border-color: #FF0000;
}
input
{
width: 68px;
margin: 0px;
padding: 0px;
font-size: 40px;
text-align: center;
}
.operacion
{
left: 340px;
top: 130px;
position:absolute;
}
.titulo
{
color: red;
font-size: 30px;
font-family: georgia;
position: relative;
left: 200px;
}
#btnCalcular
{
position:absolute;
right:780px;
top:11em;
}
#resultado1
{
font-size: 40px;
color:red;
text-align: center;
min-height: 50px;
position: absolute;
}
Funciones
Esta parte del programa es la más importante, ya que permite realizar las
operaciones de acuerdo a los números introducidos, las cuales están
programadas con javascript
En esta parte solo se alerta que la página ya esté lista.
window.onload = function()
{
alert("listo");
};
Esta función realiza el tipo de operación que el usuario eligió.
function operar()
{
try
{
var posicion=document.getElementById('tipo').options.selectedIndex;
var tipo_operacion =
document.getElementById('tipo').options[posicion].text;
calcular(tipo_operacion);
}
catch(error)
{
alert(error);
}
};
Función que crea una nueva matriz en blanco para que pueda ocuparse con las
operaciones, va de acuerdo con los valores que el usuario introdujo en el
programa
function getMatriz(id)
{
var M = new Array(3);
for (i = 0; i < 3; i++)
{
M[i]=new Array(3);
}
for(var i=0; i<M.length; i++)
{
for(var j=0; j<M[i].length; j++)
{
M[i][j]=parseFloat(document.getElementById(id+(i+1)+""+(j+1)).value);
}
}
return M;
};
Aquí es la función que se realiza cuando se presiona el botón calcular, la función
recibe de parámetro el tipo de operación para hacer la tarea y el resultado lo
retorna en una nueva matriz que se construye después de realizar la operación.
function calcular(tipo_operacion)
{
var A = getMatriz("a");
var B = getMatriz("b");
switch (tipo_operacion)
{
case "SUMA":
for(var i=0; i<A.length; i++)
{
for(var j=0; j<A[i].length; j++)
{
document.getElementById("r"+(i+1)+""+(j+1)).innerHTML
= A[i][j] + B[i][j];
}
}
break;
case "RESTA":
for(var i=0; i<A.length; i++)
{
for(var j=0; j<A[i].length; j++)
{
document.getElementById("r"+(i+1)+""+(j+1)).innerHTML
= A[i][j] - B[i][j];
}
}
break;
case "MULTIPLICACION":
document.getElementById("r11").innerHTML = (A[0][0] * B[0][0]) +
(A[0][1] * B[1][0]) + (A[0][2] * B[2][0]);
document.getElementById("r12").innerHTML = (A[0][0] * B[0][1]) +
(A[0][1] * B[1][1]) + (A[0][2] * B[2][1]);
document.getElementById("r13").innerHTML = (A[0][0] * B[0][2]) +
(A[0][1] * B[1][2]) + (A[0][2] * B[2][2]);
document.getElementById("r21").innerHTML = (A[1][0] * B[0][0]) +
(A[1][1] * B[1][0]) + (A[1][2] * B[2][0]);
document.getElementById("r22").innerHTML = (A[1][0] * B[0][1]) +
(A[1][1] * B[1][1]) + (A[1][2] * B[2][1]);
document.getElementById("r23").innerHTML = (A[1][0] * B[0][2]) +
(A[1][1] * B[1][2]) + (A[1][2] * B[2][2]);
document.getElementById("r31").innerHTML = (A[2][0] * B[0][0]) +
(A[2][1] * B[1][0]) + (A[2][2] * B[2][0]);
document.getElementById("r32").innerHTML = (A[2][0] * B[0][1]) +
(A[2][1] * B[1][1]) + (A[2][2] * B[2][1]);
document.getElementById("r33").innerHTML = (A[2][0] * B[0][2]) +
(A[2][1] * B[1][2]) + (A[2][2] * B[2][2]);
break;
case "DIVISION":
var k =parseFloat(document.getElementById("txtDivision").value);
for(var i=0; i<A.length; i++)
{
for(var j=0; j<A[i].length; j++)
{
document.getElementById("r"+(i+1)+""+(j+1)).innerHTML
= A[i][j] /k;
}
}
break;
default:
alert("no se encontro operacion")
break;
}
};
Esta función solo limpia los campos de las matrices si el usuario desea introducir
nuevos valores para operar con matrices
function limpiar()
{
var A = getMatriz("a");
var B = getMatriz("b");
for(var i=0; i<A.length; i++)
{
for(var j=0; j<A[i].length; j++)
{
document.getElementById("a"+(i+1)+""+(j+1)).value = "";
document.getElementById("b"+(i+1)+""+(j+1)).value = "";
}
}
}
ANEXOS
SUMA
RESTA
MULTIPLICACIÓN
DIVISIÓN
Descargar