Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] wyznacznik i rząd macierzy
coco
post
Post #1





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 17.10.2009

Ostrzeżenie: (0%)
-----


Mam napisać skrypty php:
1. liczący rząd dowolnej macierzy 3x3
2. obliczający wyznacznik dowolnej macierzy
Co do 1 to nie wiem jaką metodę tu wybrać, aby było to w ogóle możliwe do napisania. W 2 wiem, że tutaj metodą może być rozwinięcie Laplace'a, ale nie mam pomysłu jak to rekurencyjnie napisać.
Przyda mi się każda pomoc i za każdą z góry dziękuję.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
coco
post
Post #2





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 17.10.2009

Ostrzeżenie: (0%)
-----


Cytat(pheter @ 23.10.2009, 04:30:53 ) *
Trochę to tak napisane jak w szkole kazali (dawno temu) ale powinno działać (nie wiem na ile efektywnie).
  1. <?php
  2. // elementy tablicy podać w formacie:
  3. // a=a11,a12,...,a1n;a21,...,a2n;...;an1,an2,...ann
  4.  
  5. $a=kon($_GET['a']);
  6. if (spr($a)<>0) echo "Błędne parametry!".spr($a);
  7. else
  8. { echo "Macierz:<br><table>";
  9. $n=count($a);
  10. for ($i=0;$i<$n;$i++)
  11. { echo "<tr><td>|</td>";
  12. for ($j=0;$j<$n;$j++)
  13. { $t=$a[$i][$j];
  14. echo "<td align=\"right\">$t</td>";
  15. }
  16. echo "<td>|</td></tr>";
  17. }
  18. echo "</table>Wyznacznik = ".wyz($a);
  19. }
  20.  
  21. function kon($t)
  22. { $p=explode(";",$t);
  23. $r=array();
  24. $n=count($p);
  25. for ($i=0;$i<$n;$i++)
  26. $r[]=explode(",",$p[$i]);
  27. return $r;
  28. }
  29.  
  30. function spr($a)
  31. { $n=count($a);
  32. if ($n==0) return 1;
  33. for ($i=0;$i<$n;$i++)
  34. if (count($a[$i])==$n) for ($j=0;$j<$n;$j++) $a[$i][$j]=(int)($a[$i][$j]);
  35. else return 2;
  36. return 0;
  37. }
  38.  
  39. function wyz($a)
  40. { if (($n=count($a))==1) return $a[0][0];
  41. else
  42. { $w=0;
  43. $b=-1;
  44. for ($i=0;$i<$n;$i++) $w+=($b=-$b)*$a[0][$i]*wyz(dop($a,$i));
  45. return $w;
  46. }
  47. }
  48.  
  49. function dop($m,$k)
  50. { $a=array();
  51. $n=count($m);
  52. for ($i=1;$i<$n;$i++)
  53. { $a[$i-1]=array();
  54. for ($j=0;$j<$n;$j++) if ($j<>$k) $a[$i-1][]=$m[$i][$j];
  55. }
  56. return $a;
  57. }
  58.  
  59. ?>

Zaczynam się bawić w php i dlatego proszę bardziej doświadczonych o komentarz.

Działa. Zdecydowanie ładna sprawa. Dziękuję.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 13.10.2025 - 10:29