Πολ/μός μητρών

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
Άβαταρ μέλους
Christianago
Δημοσιεύσεις: 332
Εγγραφή: 12 Νοέμ 2009 13:36

Πολ/μός μητρών

Δημοσίευση από Christianago » 06 Αύγ 2011 18:44

Καλησπερα. Προσπαθω να υλοποιησω ενα γνωστο αλγοριθμο με την php κι ενα πολυ βασικο βημα είναι ο πολλαπλασιασμός μητρών-πινάκων.
Δηλαδη μου δινεται 1 2-διάστατος πίνακας και πρεπει να τον πολ/σω με τον εαυτό του.
Ξερει κανεις πώς μπορω να κανω κατι τετοιο;

Ας πουμε εχω κατι τετοιο (μονο αριθμητικες τιμες φυσικα).

Κώδικας: Επιλογή όλων

$myArray = array(
  array( 1, 2, 3 ),
  array( 4, 5, 6 ),
  array( 7, 8, 9 )
);
Στα μαθηματικα λεγεται matrix square. Εψαξα αλλα πρεπει να ειναι δυσκολο να βρεις ετοιμη συναρτηση γι αυτο. Ευχαριστω.

Άβαταρ μέλους
Christianago
Δημοσιεύσεις: 332
Εγγραφή: 12 Νοέμ 2009 13:36

Πολ/μός μητρών

Δημοσίευση από Christianago » 06 Αύγ 2011 22:13

Το βρηκα, ευκολα μετατρεπεται και σε συναρτηση.

Κώδικας: Επιλογή όλων

$myArray = array(
  array( 1, 2, 3 ),
  array( 4, 5, 6 ),
  array( 7, 8, 9 )
);

$mul = array();

for&#40;$i=0;$i<3;$i++&#41;
        &#123;
            for&#40;$j=0;$j<3;$j++&#41;
            &#123;
                $mul&#91;$i&#93;&#91;$j&#93;=0;
                for&#40;$k=0;$k<3;$k++&#41;
                &#123;
                    $mul&#91;$i&#93;&#91;$j&#93;+=$myArray&#91;$i&#93;&#91;$k&#93;*$myArray&#91;$k&#93;&#91;$j&#93;;
                &#125;
            &#125;
        &#125;
        
print_r&#40;$mul&#41;;

Άβαταρ μέλους
jpk
Δημοσιεύσεις: 441
Εγγραφή: 09 Μαρ 2011 21:17

Πολ/μός μητρών

Δημοσίευση από jpk » 10 Αύγ 2011 01:38

Οι πίνακες ίσως ήταν το πρώτο πράγμα που με έκανε να δω τα μαθηματικά αλλιώς και να καταλάβω που επικεντρώνεται η αγάπη μου για αυτά (στους αλγόριθμους). Είδα το μήνυμά σου και σκέφτηκα ότι ένας πίνακας &#8211; matrix είναι ένα αντικείμενο με ιδιότητες που κάνουν instantiate τάξεις διεκπεραίωσης (ώστε να μην είναι βαρύ). Αλλά φυσικά &#8230; με έχουν προλάβει &#8230;
Ρίξε μια ματιά σε αυτό
http://www.phpclasses.org/package/2859- ... rices.html

Αν εξαιρέσουμε τα Εκουαδοριανά Ισπανικά &#8230; μια χαρά τα λέει ο τύπος ..

Άβαταρ μέλους
Christianago
Δημοσιεύσεις: 332
Εγγραφή: 12 Νοέμ 2009 13:36

Πολ/μός μητρών

Δημοσίευση από Christianago » 10 Αύγ 2011 02:34

Οντως οι αλγοριθμοι ειναι το πιο ωραιο πραγμα στην επιστημη των μαθηματικων εξου και η ετυμολογια τους.
Ο φιλος εδω περα κανει ενδιαφεροντα πραγματα.
It can perform the operations like sum, reduction, multiplication, division, covariance matrix, mean matrix, inverse and determinant.
Με λιγα λογια κανει τις βασικοτερες αλγεβρικες πραξεις. Θα το τσεκαρω ευχαριστω.

Άβαταρ μέλους
Christianago
Δημοσιεύσεις: 332
Εγγραφή: 12 Νοέμ 2009 13:36

Πολ/μός μητρών

Δημοσίευση από Christianago » 03 Ιουν 2012 20:12

Επαναφερω το θεμα γιατι ο τετραγωνισμος μητρας που γινεται πιο πανω στο προγραμμα ισχυει μεχρι και για 3x3 μητρες.
Μπορουμε να τροποποιησουμε το προγραμμα ετσι ωστε να ειναι για καθε μητρα (φυσικα μεχρι ενος ορισμενου μεγεθους) πχ. 5x5?

Ας πουμε οτι εχω αυτη τη μητρα:

Κώδικας: Επιλογή όλων

$myArray = array&#40;
  array&#40; 1, 2, 3, 1&#41;,
  array&#40; 4, 5, 6, 2&#41;,
  array&#40; 7, 8, 9, 3&#41;,
  array&#40; 10, 11, 12, 4&#41;
&#41;; 
οπου δε δουλευει το προγραμμα επειδη ειναι 4x4.

Άβαταρ μέλους
Khronos
Δημοσιεύσεις: 754
Εγγραφή: 11 Δεκ 2006 14:43
Τοποθεσία: Ηράκλειο

Πολ/μός μητρών

Δημοσίευση από Khronos » 03 Ιουν 2012 20:49

Κάτι τέτοιο?

Κώδικας: Επιλογή όλων

for&#40;$i=0;$i<count&#40;$myArray&#91;0&#93;&#41;-1;$i++&#41;

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Πολ/μός μητρών

Δημοσίευση από dva_dev » 03 Ιουν 2012 21:34

Καλύτερα το μέγεθος να το έχεις σε μεταβλητή ώστε να μην χρειάζεται να το ξαναϋπολογίζει χωρίς λόγο σε κάθε loop.

Άβαταρ μέλους
jpk
Δημοσιεύσεις: 441
Εγγραφή: 09 Μαρ 2011 21:17

Πολ/μός μητρών

Δημοσίευση από jpk » 03 Ιουν 2012 22:02

Η συγκεκριμένη τάξη έχει αρκετά προβλήματα κυρίως όσο αφορά το πώς έχει αντιληφθεί την αντικειμενοστρέφια στην PHP και του Ισπανικού (με πολλά ερωτηματικά) documentation αλλά και ονοματοδοσία των συμπεριφορών της. Κατά τα άλλα μόλις δοκίμασα με τον πίνακα που έδωσες και σωστό αποτέλεσμα μου έδωσε στον τετραγωνισμό του πίνακα (δεν θα μπορούσα να καταλάβω γιατί να είχε πρόβλημα σε πίνακες πάνω από 3x3).

Με

Κώδικας: Επιλογή όλων

<?php
include_once&#40;"Matrix.class.php"&#41;;
$ArrayData_MATRIZ_NxN=array&#40;array&#40;1, 2, 3, 1&#41;, array&#40;4, 5, 6, 2&#41;,array&#40;7, 8, 9, 3&#41;,array&#40;10, 11, 12, 4&#41;&#41;;
$Matriz3_NxN= new matrix&#40;$ArrayData_MATRIZ_NxN&#41;;

$mult = $Matriz3_NxN->MultiplicacionMatrices&#40;$ArrayData_MATRIZ_NxN,$ArrayData_MATRIZ_NxN&#41;;
echo "<BR>MULTIPLICACION DE MATRICES <BR>";
foreach&#40;$mult as $arr&#41;
&#123;
  echo "<br/>";
  foreach&#40;$arr as $val&#41;
  &#123;
    echo $val."\t"; 
  &#125;
&#125;
?>
Δίνει
40 47 54 18
86 103 120 40
132 159 186 62
178 215 252 84

Μπορείς να το ελέγξεις και με κάποιο online tool π.χ.
http://www.bluebit.gr/matrix-calculator ... ation.aspx

Σίγουρα η τάξη θα μπορούσε να ξαναγραφτεί με ότι προσφέρει ο OOP και να γίνει πολύ πιο αποδοτική σε χρήση πόρων αλλά και να είχε το αυτονόητο &#8211; αγγλικούς τίτλους στις μεθόδους της&#8230;

Άβαταρ μέλους
Christianago
Δημοσιεύσεις: 332
Εγγραφή: 12 Νοέμ 2009 13:36

Πολ/μός μητρών

Δημοσίευση από Christianago » 03 Ιουν 2012 22:34

Για καποιο λογο σε μενα δουλευει μονο το παρακατω. Ειναι απο το phpclasses.
http://www.phpclasses.org/package/6647- ... rices.html
Εχει κι αλλες ενδιαφεροντες πραξεις με μητρες.

Κώδικας: Επιλογή όλων

public function mult&#40;$a=NULL,$b=NULL&#41;&#123;
		if&#40;!$this->validate&#40;$a&#41; || !$this->validate&#40;$b&#41;&#41;
			$this->error&#40;"mult&#40;&#41;","Incorrect parameters"&#41;;
		$a=$this->adjust&#40;$a&#41;;	$b=$this->adjust&#40;$b&#41;;
		$sa=$this->size&#40;$a&#41;;	$sb=$this->size&#40;$b&#41;;
		$res=array&#40;&#41;;
		$tmp=0;
		if&#40;$sa&#91;'cols'&#93;!=$sb&#91;'rows'&#93;&#41;
			$this->error&#40;"mult&#40;&#41;","The number of columns of A must equal the number of rows of B"&#41;;
		for&#40;$k=1;$k<=$sb&#91;'cols'&#93;;$k++&#41;&#123;
			foreach&#40;$a as $i => $row&#41;&#123;
				foreach&#40;$b as $j => $col&#41;&#123;
					$tmp+=$a&#91;$i&#93;&#91;$j&#93;*$b&#91;$j&#93;&#91;$k-1&#93;;
				&#125;
				$res&#91;$i&#93;&#91;$k&#93;=$tmp;
				$tmp=0;
			&#125;
		&#125;
		$this->plotRaw&#40;$res,"Multiplication"&#41;;
		return $res;
	&#125;

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες