Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: Vampersy en 10 Octubre 2008, 07:49 am



Título: Multiplicar matrices n*n
Publicado por: Vampersy en 10 Octubre 2008, 07:49 am
Hola gente:
Saludos a todos antes que nada..¡

Bueno estoy tratando de hacer un pequeño script php para multiplicar matrices, pero hasta ahorita no me ha salido.
Si algunos de ustedes puede proporcionarme alguno, le agradezco de antemano, ya que he buscado por la web y solo he encontrado para otros lenguajes diferentes al php.

Ok espero puedan aportar alguna idea, mientras seguiré intentando dar con el clavo.. ;D


Título: Re: Multiplicar matrices n*n
Publicado por: alone-in-the-chat en 10 Octubre 2008, 17:02 pm
 :)

Publica lo que tu ya hayas hecho para darle una revisada , y echarte una mano.

Saludos¡¡


Título: Re: Multiplicar matrices n*n
Publicado por: [ Alberto] en 11 Octubre 2008, 10:42 am
primero tienes que verificar que las dos se puedan multiplicar luego podría ser  ir recorriendo columna de una matriz y multiplicar por la fila de la otra no recuerdo como era que se multiplicaban  :-[ mañana le hecho cabeza es un ejercicio bueno


Título: Re: Multiplicar matrices n*n
Publicado por: Rentero en 11 Octubre 2008, 13:25 pm
Si. Te dejo algunos enlaces donde tambien salen códigos en PHP aunque no los he comprobado.

http://www.mathwarehouse.com/algebra/matrix/multiply-matrix.php
http://www.ingenieria.uady.mx/weblioteca/programacion/Prog07/MultiplicdeMatrices.htm
http://www.marcelovalenzuela.com/matrices/producto-de-matrices-comentarios.php

http://www.forosdelweb.com/f18/matrices-php-411416/

Añado:
http://dada.perl.it/shootout/matrix_allsrc.html


Título: Re: Multiplicar matrices n*n
Publicado por: Vampersy en 13 Octubre 2008, 07:58 am
Caballeros gracias por sus aportes.
Este es mi avance, pero ya estoy que me explota la cabeza y nada que sale.
Aqui pego el avance para que me puedan ayudar.

Se supone que la matriz la define el usuario y se debe automaticamente calcular la matriz resultante o el resultado:


el error me lo marca en la linea 160.
Espero sus aportaciones que ahorita ya ando enbolado por darle tanta vuelta al error  :o :rolleyes:

http://rapidshare.com/files/153492401/matriz.php.html




Título: Re: Multiplicar matrices n*n
Publicado por: alone-in-the-chat en 13 Octubre 2008, 17:30 pm
Como no vi si lo que deseas multiplicar son matrices algebraicas ni explicaste muy bien como hacerlo modifique tu ejemplo para que trabaje bien , tal y como esta planteado .

:)

Claro debes mejorar algunas cosas pero espero que ya lo tengas mas claro


matriz.php
Código
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  5. <title>Documento sin t&iacute;tulo</title>
  6. </head>
  7.  
  8. <body>
  9. <form id="form1" name="form1" method="post" action="matriz.php">
  10.  <div align="center">
  11.    <table width="287" border="3">
  12.      <tr>
  13.        <td colspan="2"><div align="center">
  14.          <h5><strong>Teclea Las dimenciones de la matriz 1</strong></h5>
  15.        </div></td>
  16.      </tr>
  17.      <tr>
  18.        <td width="123">Teclea las filas</td>
  19.        <td width="144"><div align="center">
  20.            <input name="txtf1" type="text" id="txtf1" />
  21.        </div></td>
  22.      </tr>
  23.      <tr>
  24.        <td>Teclea las columnas</td>
  25.        <td><input name="txtc1" type="text" id="txtc1" /></td>
  26.      </tr>
  27.      <tr>
  28.        <td colspan="2"><div align="center"></div></td>
  29.      </tr>
  30.    </table>
  31.    <table width="287" border="3">
  32.      <tr>
  33.        <td colspan="2"><div align="center">
  34.          <h5>Teclea Las dimenciones de la matriz 2 </h5>
  35.        </div></td>
  36.      </tr>
  37.      <tr>
  38.        <td width="123">Teclea las filas</td>
  39.        <td width="144"><div align="center">
  40.            <input name="txtf2" type="text" id="txtf2" />
  41.        </div></td>
  42.      </tr>
  43.      <tr>
  44.        <td>Teclea las columnas</td>
  45.        <td><input name="txtc2" type="text" id="txtc2" /></td>
  46.      </tr>
  47.      <tr>
  48.        <td colspan="2"><div align="center"></div></td>
  49.      </tr>
  50.    </table>
  51.    <p>
  52.      <input type="submit" name="Submit2" value="Dibujar" />
  53.      <label>
  54.      <input type="submit" name="Submit" value="Calcular" />
  55.      </label><label></label>
  56.      <label></label></p>
  57.    </div>
  58.   <p>
  59.     <label></label>
  60.     <label></label>
  61.     <label></label>
  62.   </p>
  63.   <p align="center">
  64. <?php
  65.  
  66. if ($_POST["txtf1"] != "" && $_POST["txtc1"] != "" && $_POST["txtf2"] != "" && $_POST["txtc2"] != "" && isset($_POST['calcular']) == false)
  67. {
  68. $f1=$_POST["txtf1"];
  69. $c1=$_POST["txtc1"];
  70. $f2=$_POST["txtf2"];
  71. $c2=$_POST["txtc2"];
  72.  
  73. if ($c1==$f2)
  74. {
  75. echo "Matriz 1";
  76.  
  77. echo "<table border=3 cellspacing=1>";
  78. $j = 1;
  79. for ($fila=1;$fila<=$f1;$fila++)
  80. {
  81. $i = 1;
  82. echo "<tr>";
  83. for ($col=1;$col<=$c1;$col++)
  84. {
  85. echo "<td>";
  86. echo "<label>";
  87. echo "<input type='text' name='txt1[$j][$i]' />";
  88. echo "</label>";
  89. echo "</td>";
  90. $i++;
  91. }
  92. echo "</tr>";
  93. $j++;
  94. }
  95. echo "</table>";
  96.  
  97.  
  98. echo "<br>";
  99.  
  100. //Dibujo de la 2da matriz
  101.  
  102. echo "Matriz 2";
  103. echo "<table border=3 cellspacing=1>";
  104. $j = 1;
  105. for ($fila=1;$fila<=$f2;$fila++)
  106. {
  107. $i = 1;
  108. echo "<tr>";
  109. for ($col=1;$col<=$c2;$col++)
  110. {
  111. echo "<td>";
  112. echo "<label>";
  113. echo "<input type='text' name='txt2[$j][$i]' />";
  114. echo "</label>";
  115. echo "</td>";
  116. $i++;
  117. }
  118. echo "</tr>";
  119. $j++;
  120. }
  121. echo "</table>";
  122. echo "<input type = 'hidden' name = 'calcular' value = '1'/>";
  123. }else{
  124. echo "Las Matrices no son Multiplicables";
  125. }
  126. }
  127. ?>
  128.   </p>
  129. </form>
  130. <?php
  131.  
  132.  
  133. if ($_POST[txt1] != "" && $_POST[txt2] != "" && isset($_POST['calcular']))
  134. {
  135. $txt1 = $_POST['txt1'];
  136. $txt2 = $_POST['txt2'];
  137.  
  138. $A = $txt1;
  139. $B = $txt2;
  140. $C = array();
  141.  
  142. //print_r($A);print_r($B);
  143.  
  144. if(count($A)==count($B))
  145. {
  146. $n=count($A);
  147. for($i=1;$i<=$n;$i++)
  148. {
  149. for($j=1;$j<=$n;$j++)
  150. {
  151. $C[$i][$j] = 0;
  152. //echo ($A[$i][$j]*$B[$i][$j]);
  153. for($k=1;$k<=$n;$k++)
  154. {
  155. $C[$i][$j] += $A[$i][$k]*$B[$k][$j];
  156. echo $C[$i][$j]."<br />";
  157. }
  158. }// for anidado
  159. }// primer for
  160. }// if para determinar si son iguales las matrices
  161. }elseif(isset($_POST['calcular'])){
  162. echo "INTRODUCE TODOS LOS ELEMENTOS DE LA MATRIZ";
  163. }
  164. ?>
  165. </body>
  166. </html>
  167.  
  168.  

Saludos¡¡


Título: Re: Multiplicar matrices n*n
Publicado por: Vampersy en 14 Octubre 2008, 23:07 pm
Caballeros, este ejercicio sencillo pero a la vez complicado, ( para lgunos, me incluyo), me provoco dolores de cabeza y canas de mil colores jeje  ;D.

Si alguien necesita lo mismo por aqui paso el code:

resuelve matrices n * n.  Aclaro que no es perfecto y evidentemente se puede optimizar mucho maaaaas...

http://rapidshare.com/files/154052586/matricesPHP.rar.html

Bueno saludos y gracias por sus aportaciones  ::)

NOTA: son 3 archivos, y  el uno llama al segundo y el segundo al tercero.