Multiplicaciones de matrices

Iniciado por legomanticore, 18 Diciembre 2011, 19:43 PM

0 Miembros y 1 Visitante están viendo este tema.

legomanticore

Buenas a todos y disculpen la molestia, la verdad es que me eh estado partiendo el coco con unos dilemas en PHP... me han encargado hacer un programa que me resuelva suma,resta,multiplicacion de matrices y aparte pueda sacar la transpuesta, ya eh logrado hacer que me haga la suma y la resta de matrices, tambien eh losgrado que me saque la transpuesta de una matriz, pero no logro captar como hacer la multiplicacion de matrices... sera que puedan ayudarme?

de antemano gracias

:rolleyes: :rolleyes:

AckeR

Podrías adjuntar el código que ya llevas hecho ;) y recuerda usar la etiquta GeSHi para ver mejor el code  ::)

...DaR LaS GraCiaS No CuestA NadA...

legomanticore

#2
Cita de: AckeR en 18 Diciembre 2011, 21:06 PM
ahora mismo subo lo que llevo hecho aki dejo el codigo lo hiba a subir a megaupload pero no le vi sentido a q esperaras un rato para bajar un archivo de 4 kb ... perdona la molestia y q se vea todo raro esk soy nuevo en esto del uso de GeSHi >_______<  y pss bueno ahi esta el codigo lo tengo en 4 partes distintas

la pagina lleva esto:

-----[b]libreria[/b]---------

<html>
<?php 

function 
genera_matriz($filas,$columnas,$indice
{
$x=1;
while ($x <= $filas)
{
$y=1;
  while ($y <= $columnas)
{
echo "<input type=text size=2 name="."'$indice$x$y'"."/>";
   $y++;
}
echo "<br>";
  $x++;
}
echo "<br>";
}
       
?>

</html>

----------[b]Main[/b]----------

<html>

<body bgcolor="blue">
<font face="arial" size="5">Proyecto Matriz!!</font>
 
 <br>
 <br>
   <font color="blue" face="arial">
 
 <iframe name="uno" width="70%" height="100%" src="problema.php" frameborder="1"
 scrolling="no" align="top">  </iframe>

 <iframe name="dos" width="30%" height="100%" src="resultado.php" frameborder="1"
 scrolling="no" align="top" marginheight="0" marginwidth="0">
</iframe>
</font>
 
</body>

</html>

-------[b]Problema[/b]---------

<?php session_start(); ?>
<html>
<body bgcolor="blue">

<font face="Tahoma" size="4">
<marquee><center>Seleccione la operacion que desea realizar</center></marquee>
</font>

<form target="uno" action="problema.php" method="post">
<font face="Tahoma" size="3">
Operación a realizar:
<select name="operacion">
<option> suma </option>
<option> resta </option>
<option> multiplicacion </option>
<option> transpuesta </option>
</select>
<br>
<input TYPE="submit" value="Captura matriz"/>
</font>
</form>

 <?php
   if (isset(
$_REQUEST["operacion"]))
  

  
$_SESSION["operacion"] = $_REQUEST["operacion"]; 
  

  
if (($_REQUEST["operacion"]=="suma")or( $_REQUEST["operacion"]=="resta") or ( $_REQUEST["operacion"]=="multiplicacion"))   { $captura=2;}

  if  ($_REQUEST["operacion"]=="transpuesta") {  $captura=1;}
  
  echo "<form target=uno action=problema.php method=post>";
  $x=0;
  echo "<font face=Tahoma size=3>";
  while ($captura>$x)
  {
  $x++;
     echo "filas $x:";
     echo "<br>";
    echo "<input TYPE=text name="."'f$x'"."/>";
  echo "<br>";
    echo "columnas $x:";
    echo "<br>"
    echo "<input TYPE=text name="."'c$x'"."/>";
    echo "<br>";
  
  }
  echo "</font>";

    echo "<BR><BR><input TYPE=submit value="."'capturar valores de matriz'".">";
  echo "</form>";
  
}

?>


<?php
/* Llamado a librería que genera los inputs para captura de datos de matriz */
include 'libreria.php';

if ((isset($_REQUEST["f1"]))or(isset($_REQUEST["c1"])))
{
/*Almacenar dimensiones para utilizarlas posteriormente en el calculo solicitado*/

$_SESSION["f1"]=$_REQUEST["f1"];
$_SESSION["c1"]=$_REQUEST["c1"];

echo "<form target=dos action=resultado.php method=post>";
  
/* Llamada a la función existente en la librería*/

                   
genera_matriz($_REQUEST["f1"],$_REQUEST["c1"],"I");


if ((isset($_REQUEST["f2"]))and(isset($_REQUEST["c2"])))
{
/*Almacenar dimensiones para utilizarlas posteriormente en el calculo solicitado*/

$_SESSION["f2"]=$_REQUEST["f2"];
$_SESSION["c2"]=$_REQUEST["c2"];
  
 /* Llamada a la función existente en la librería*/

genera_matriz($_REQUEST["f2"],$_REQUEST["c2"],"J");

}
echo "<input TYPE=submit value="."'resolver matriz'".">";
echo "</form>";
}
?>


</body>

</html>


----------[b]Resultado[/b]----------

<?php session_start()?>
<html>
<body bgcolor="blue">
               <center>
<font face="arial" size="2">
<br>
<b>Resultado del problema</b>
 <?php 

   If (isset($_REQUEST["I11"]))
   {
   /* Se realiza calculo de matrices dependiendo de la operación seleccionada */   
  
If (
$_SESSION["operacion"]=="suma")
   {
   $x=1;
   $y=1;
   while ($x <= $_SESSION["f1"])
   {
   while ($y <= $_SESSION["c1"])
   {
   echo "<br>";
   $matriz_resultado["$x$y"] = $_REQUEST["I$x$y"]+$_REQUEST["J$x$y"];
   $y++; 
   }
   $y=1;
   $x++;
  
   }
   }

If ((isset(
$_REQUEST["I11"]))and(isset($_REQUEST["J11"])))
   {
   /* Se realiza calculo de matrices dependiendo de la operación seleccionada */
  
   If ($_SESSION["operacion"]=="resta")
   {
   $x=1;
   $y=1;
   while ($x <= $_SESSION["f1"])
   {
   while ($y <= $_SESSION["c1"])
   {
   echo "<br>";
   $matriz_resultado["$x$y"] = $_REQUEST["I$x$y"]-$_REQUEST["J$x$y"];
   $y++; 
   }
   $y=1;
   $x++;
  
   }
   }
   }
   If (isset($_REQUEST["I11"]))
   {
   If ($_SESSION["operacion"]=="transpuesta")
  
   {
   $x=1;
   $y=1;
   while ($x <= $_SESSION["f1"])
   {
   while ($y <= $_SESSION["c1"])
   {
   $matriz_resultado["$x$y"] = $_REQUEST["I$y$x"];
  
  
   $y++; 
   }
   $y=1;
   $x++;
   }
   }
   }
  
   $x=1;
   $y=1;
  
   echo "<br><br>";
   echo "<table border=1 >";
   while ($x <= $_SESSION["f1"])
   {
       echo 
"<tr height=50 width=50>";
   while ($y <= $_SESSION["c1"])
   {
          echo "<td height=50 width=50>";
   echo "<center>";
   echo $matriz_resultado["$x$y"] ;
   echo "</center>";
   $y++; 
   echo "</td>";
   }
   $y=1;
   $x++;
   echo "</tr>";
   }
   echo "</table>";
   }
  
?>

  </font>
</center>
</body>
</html>

Shell Root

Tienes que saber primero como se multiplican las matrices, saca la lógica y la formula y será mucho más fácil programarlo.
:http://es.wikipedia.org/wiki/Multiplicaci%C3%B3n_de_matrices
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

legomanticore

Cita de: Shell Root en 19 Diciembre 2011, 05:18 AM

de hecho si se como multiplicar matrices xD hasta sacar transpuesta e inversa y todo ese rollo :3

pero graxie :3

Shell Root

Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

legomanticore

Cita de: Shell Root en 19 Diciembre 2011, 10:40 AM

que no entiendo bien el como hacer el codigo, la verdad ... lo eh intentado de varias formas y no me sale... :/  :-(

legomanticore

Cita de: AckeR en 18 Diciembre 2011, 21:06 PM
Podrías adjuntar el código que ya llevas hecho ;) y recuerda usar la etiquta GeSHi para ver mejor el code  ::)

crees k puedas ayudarme bro? =(

Shell Root

El código lo hice apartir de este en Java, :http://www.microplagio.com/articulos/script-multiplicacion-de-matrices-en-java/
Código (php) [Seleccionar]
    class Matriz{
       
        function multiplicacion( $Mat1, $Mat2 ){
            $suma = 0;
            $result = array();
            for( $i=0; $i<count($Mat1); $i++ ){
                for( $j=0; $j<count($Mat2); $j++ ){
                    $suma = 0;
                    for( $k=0; $k<count($Mat2); $k++ ){
                        $suma += $Mat1[$i][$k] * $Mat2[$k][$j];
                    }
                    $result[$i][$j] = $suma;
                }
            }
            return $result;
        }
       
        function mostrar( $Mat ){
            for( $i=0; $i<count($Mat); $i++ ){
                for( $j=0; $j<count($Mat[$i]); $j++ ){
                    print $Mat[$i][$j]." | ";
                }
                print "<br/>";
            }
        }
    }
   
    $Mat1[0] = array(1, 2, 3, 4);
    $Mat1[1] = array(5, 6, 7, 8);
   
    $Mat2[0] = array(1, 2, 3, 4);
    $Mat2[1] = array(5, 6, 7, 8);
   
   
    $Matriz = new Matriz();
    $Mat = $Matriz->multiplicacion($Mat1, $Mat2);
    $Matriz->mostrar($Mat);
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

legomanticore

Cita de: Shell Root en 20 Diciembre 2011, 05:04 AM

okz gracias :D ahora me toca colocarlo como debe para que jale con las otras 3 funciones k ia tengo ^_^