christian-ago Δημοσ. 6 Αυγούστου 2011 Δημοσ. 6 Αυγούστου 2011 Καλησπερα. Προσπαθω να υλοποιησω ενα γνωστο αλγοριθμο με την php κι ενα πολυ βασικο βημα είναι ο πολλαπλασιασμός μητρών-πινάκων. Δηλαδη μου δινεται 1 2-διάστατος πίνακας και πρεπει να τον πολ/σω με τον εαυτό του. Ξερει κανεις πώς μπορω να κανω κατι τετοιο; Ας πουμε εχω κατι τετοιο (μονο αριθμητικες τιμες φυσικα). > $myArray = array( array( 1, 2, 3 ), array( 4, 5, 6 ), array( 7, 8, 9 ) ); Στα μαθηματικα λεγεται matrix square. Εψαξα αλλα πρεπει να ειναι δυσκολο να βρεις ετοιμη συναρτηση γι αυτο. Ευχαριστω.
macabre_sunsets Δημοσ. 6 Αυγούστου 2011 Δημοσ. 6 Αυγούστου 2011 >$myArray = array( array( 1, 2, 3 ), array( 4, 5, 6 ), array( 7, 8, 9 ) ); $mul = array(); for ($i=0; $i<$x; $i++) { for ($j=0; $j<$y; $j++) { $mul[$i][$j] = $myArray[$i][$j] * 2; } } Κάτι σαν το παραπάνω θέλεις (μιας και δεν ξέρω από μαθηματικά);
christian-ago Δημοσ. 6 Αυγούστου 2011 Μέλος Δημοσ. 6 Αυγούστου 2011 Οι μεταβλητες $x και $y δεν ειναι ορισμενες. Τι αντιπροσωπευουν;
christian-ago Δημοσ. 6 Αυγούστου 2011 Μέλος Δημοσ. 6 Αυγούστου 2011 Οκ εστω οτι ξερουμε το μεγεθος του πινακα. Η προταση αυτη δεν κανει πολ/μο μητρας οπως στην αλγεβρα. >$mul[$i][$j] = $myArray[$i][$j] * 2; Απλα διπλασιαζει καθε στοιχειο του πινακα και αποθηκευει το αποτελεσμα σε ενα νεο πινακα. Ευχαριστω παντως. θα ηταν μια αρχη ομως εαν υψωναμε καθε στοιχειο στο τετραγωνο.
macabre_sunsets Δημοσ. 6 Αυγούστου 2011 Δημοσ. 6 Αυγούστου 2011 Συγγνώμη δεν ξέρω τι είναι ο πολλαπλασιασμός μήτρας για να βοηθήσω περισσότερο. Όσο για το x2, όντως λάθος μου. ^2 ήθελα να γράψω, ώστε το εκάστοτε στοιχείο να πολλαπλασιάζεται με τον εαυτό του.
akisk Δημοσ. 6 Αυγούστου 2011 Δημοσ. 6 Αυγούστου 2011 >for(i=0;i<x;i++) { for(j=0;j<y;j++) { mul[i][j]=0; for(k=0;k<x;k++) { mul[i][j]+=myArray[i][k]*myArray[k][j]; } } }
christian-ago Δημοσ. 6 Αυγούστου 2011 Μέλος Δημοσ. 6 Αυγούστου 2011 Ευχαριστω εδω ειναι ολοκληρο για οποιον χρειαστει ποτε. Δεν ειναι κι εντελως δυναμικος ο κωδικας αλλα προσαρμοζεται ευκολα σε συναρτηση. >$myArray = array( array( 1, 2, 3 ), array( 4, 5, 6 ), array( 7, 8, 9 ) ); $mul = array(); for($i=0;$i<3;$i++) { for($j=0;$j<3;$j++) { $mul[$i][$j]=0; for($k=0;$k<3;$k++) { $mul[$i][$j]+=$myArray[$i][$k]*$myArray[$k][$j]; } } } print_r($mul);
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.