Αναγνώστες σαν εσάς βοηθούν στην υποστήριξη του MUO. Όταν κάνετε μια αγορά χρησιμοποιώντας συνδέσμους στον ιστότοπό μας, ενδέχεται να κερδίσουμε μια προμήθεια θυγατρικών. Διαβάστε περισσότερα.

Οι πίνακες διαδραματίζουν ζωτικό ρόλο σε πολλά διαφορετικά πεδία, συμπεριλαμβανομένων των γραφικών υπολογιστών, της κρυπτογραφίας και της ασύρματης επικοινωνίας. Ο πίνακας είναι ένας ορθογώνιος πίνακας αριθμών διατεταγμένων σε σειρές και στήλες, που χρησιμοποιείται για να αναπαραστήσει ένα μαθηματικό αντικείμενο ή την ιδιότητά του.

Μία από τις λειτουργίες που μπορεί να χρειαστεί να εκτελέσετε σε αυτές είναι ο πολλαπλασιασμός πίνακα. Αυτό βρίσκει χρήσεις σε πολλούς τομείς όπως οι αεροδυναμικοί υπολογισμοί, η επεξεργασία σήματος, η επεξεργασία εικόνας και η σεισμική ανάλυση. Αλλά πώς ακριβώς πολλαπλασιάζεις τους πίνακες;

Πώς να πολλαπλασιάσετε δύο πίνακες

Αντιπροσωπεύετε τη σειρά ενός πίνακα ως το γινόμενο του αριθμού των γραμμών (m) και του αριθμού των στηλών (n). Για να πολλαπλασιάσουμε δύο πίνακες, ο αριθμός των στηλών του πρώτου πίνακα πρέπει να είναι ίσος με τις σειρές του δεύτερου πίνακα.

Εάν έχετε δύο πίνακες, τον πίνακα Α τάξης m × n και Β τάξης n × p, η σειρά του πίνακα προϊόντος θα είναι m × p. Για παράδειγμα, ας υποθέσουμε ότι έχετε έναν πίνακα Α που περιέχει δύο σειρές (m) και τρεις στήλες (n) και έναν πίνακα Β που περιέχει τρεις σειρές (n) και δύο στήλες (p). Ο προκύπτων πίνακας θα αποτελείται από δύο σειρές και δύο στήλες:

Πολλαπλασιάζετε δύο πίνακες χρησιμοποιώντας το γινόμενο με τελείες. Για να λάβετε την τιμή του πρώτου στοιχείου του προκύπτοντος πίνακα, πολλαπλασιάστε και προσθέστε τα στοιχεία της πρώτης σειράς του πρώτου πίνακα και της πρώτης σειράς του δεύτερου πίνακα στοιχείο προς στοιχείο ως:

(1, 2, 3) • (7, 9, 11) = 1×7 + 2×9 + 3×11 = 58

Ομοίως, για το δεύτερο στοιχείο, πολλαπλασιάστε την πρώτη σειρά του πρώτου πίνακα και τη δεύτερη στήλη του δεύτερου πίνακα ως:

(1, 2, 3) • (8, 10, 12) = 1×8 + 2×10 + 3×12 = 64

Για το τρίτο στοιχείο, πολλαπλασιάστε τη δεύτερη σειρά του πρώτου πίνακα και την πρώτη στήλη του δεύτερου πίνακα ως:

(4, 5, 6) • (7, 9, 11) = 4×7 + 5×9 + 6×11 = 139

Για το τέταρτο στοιχείο, πολλαπλασιάστε τη δεύτερη σειρά του πρώτου πίνακα και τη δεύτερη στήλη του δεύτερου πίνακα ως:

(4, 5, 6) • (8, 10, 12) = 4×8 + 5×10 + 6×12 = 154

Έτσι, ο προκύπτων πίνακας είναι:

Μπορείτε να εξερευνήσετε και να δημιουργήσετε διαφορετικά προγράμματα για διαφορετικές λειτουργίες σε πίνακες όπως:

  • προσθέτοντας και αφαιρώντας δύο πίνακες
  • βρίσκοντας τη μετάθεση ενός πίνακα
  • ελέγχοντας εάν δύο πίνακες είναι πανομοιότυποι

Ένας αλγόριθμος για τον πολλαπλασιασμό δύο πινάκων

Ακολουθήστε αυτόν τον αλγόριθμο για να δημιουργήσετε το πρόγραμμα για τον πολλαπλασιασμό οποιωνδήποτε δύο πινάκων:

  1. Ξεκινήστε το πρόγραμμα.
  2. Εισαγάγετε τις γραμμές και τις στήλες του πρώτου πίνακα.
  3. Εισαγάγετε τις γραμμές και τις στήλες του δεύτερου πίνακα.
  4. Εάν οι πίνακες δεν είναι συμβατοί για πολλαπλασιασμό, εκτυπώστε ένα σφάλμα και βγείτε.
  5. Ορίστε έναν πίνακα και εισαγάγετε τους αριθμούς στον πρώτο πίνακα.
  6. Ορίστε έναν άλλο πίνακα και εισαγάγετε τον αριθμό στον δεύτερο πίνακα.
  7. Ορίστε έναν πίνακα για να αποθηκεύσετε το αποτέλεσμα του πολλαπλασιασμού των δύο πινάκων.
  8. Ορίστε έναν βρόχο για επανάληψη πάνω από τη σειρά του πρώτου πίνακα.
  9. Ρυθμίστε έναν εσωτερικό βρόχο για επανάληψη πάνω από τη στήλη του δεύτερου πίνακα.
  10. Ρυθμίστε έναν άλλο εσωτερικό βρόχο για επανάληψη πάνω από τη στήλη του πρώτου πίνακα.
  11. Πολλαπλασιάστε και προσθέστε τα στοιχεία χρησιμοποιώντας τον τύπο mul[i][j] += m1[i][k] * m2[k][j] και αποθηκεύστε το αποτέλεσμα του πολλαπλασιασμού στον προκύπτοντα πίνακα.
  12. Εμφάνιση του προκύπτοντος πίνακα.
  13. Έξοδος από το πρόγραμμα.

Πώς να εκτελέσετε τον πολλαπλασιασμό μήτρας χρησιμοποιώντας το C

Ολόκληρος ο πηγαίος κώδικας για τον πολλαπλασιασμό μήτρας με χρήση C υπάρχει σε αυτό Αποθετήριο GitHub και είναι δωρεάν για χρήση.

Εισαγάγετε τη βιβλιοθήκη stdio για την εισαγωγή αριθμών και εμφανίστε την έξοδο ανάλογα. Δηλώστε το κύριος συνάρτηση και ζητήστε από τον χρήστη να εισαγάγει τον αριθμό των στηλών και τον αριθμό των γραμμών και για τους δύο πίνακες χρησιμοποιώντας το Τυπώνω() λειτουργία.

Χρησιμοποιήστε το scanf() λειτουργία λήψης εισόδου. %ρε είναι ο προσδιοριστής δεκαδικής μορφής που διασφαλίζει ότι το πρόγραμμα διαβάζει την είσοδο ως αριθμό.

#περιλαμβάνω
#περιλαμβάνω

ενθκύριος()
{
ενθ r1, r2, c1, c2;

printf("Εισαγάγετε τον αριθμό των σειρών Για ο πρώτος πίνακας:\n");
scanf("%d", &r1);

printf("Εισαγάγετε τον αριθμό των στηλών Για ο πρώτος πίνακας:\n");
scanf("%d", &c1);

printf("Εισαγάγετε τον αριθμό των σειρών Για ο δεύτερος πίνακας:\n");
scanf("%d", &r2);

printf("Εισαγάγετε τον αριθμό των στηλών Για ο δεύτερος πίνακας:\n");
scanf("%d", &c2);

Ελέγξτε ότι είναι δυνατός ο πολλαπλασιασμός πίνακα. Εάν ο αριθμός των στηλών του πρώτου πίνακα δεν είναι ίσος με τον αριθμό των σειρών του δεύτερου πίνακα, εμφανίστε ένα σφάλμα και βγείτε.

αν (c1 != r2) {
printf("Οι πίνακες δεν μπορούν να πολλαπλασιαστούν μαζί");
έξοδος(-1);
}

Αν όλα είναι καλά, ορίστε δύο πολυδιάστατους πίνακες, m1 και m2, με το μέγεθος που παρείχε ο χρήστης. Ζητήστε από τον χρήστη να εισαγάγει τα στοιχεία και των δύο πινάκων ένα προς ένα. Χρησιμοποιήστε ένα ένθετο Για βρόχο για να λάβει την είσοδο τόσο για τη γραμμή όσο και για τη στήλη του πίνακα. Ο εξωτερικός βρόχος for επαναλαμβάνεται πάνω από τις σειρές του πίνακα και ο εσωτερικός βρόχος πάνω από τη στήλη του πίνακα.

ενθm1[r1][c1], m2[r2][c2];
printf("Εισαγάγετε τα στοιχεία του πρώτου πίνακα\n");

Για (ενθ i = 0; i < r1; i++) {
Για (ενθ j = 0; j < c1; j++) {
scanf("%ρε", &m1[i][j]);
}
}

printf("Εισαγάγετε τα στοιχεία του δεύτερου πίνακα\n");

Για (ενθ i = 0; i < r2; i++) {
Για (ενθ j = 0; j < c2; j++) {
scanf("%ρε",&m2[i][j]);
}
}

Ορίστε έναν τρίτο πίνακα, mul, της τάξης r1 * c2 για να αποθηκεύσετε το αποτέλεσμα. Χρησιμοποιήστε ένα ένθετο Για βρόχο για την εκτέλεση του πολλαπλασιασμού. Ο πιο εξωτερικός βρόχος for επαναλαμβάνεται πάνω από τις σειρές, ο επόμενος εσωτερικός βρόχος επαναλαμβάνεται πάνω από τις στήλες και ο πιο εσωτερικός εκτελεί τον πολλαπλασιασμό. Χρησιμοποιήστε τον τύπο mul[i][j] += m1[i][k] * m2[k][j] να πολλαπλασιάσουμε τα στοιχεία του πίνακα.

Ο τύπος χρησιμοποιεί τον τελεστή στενογραφίας += να προσθέσω mul[i][j] στην υπολογισμένη έκφραση και αποθηκεύστε την. Θυμηθείτε να αρχικοποιήσετε το αποτέλεσμα στο μηδέν πριν προσθέσετε σε αυτό.

ενθmul[r1][c2];

Για (ενθ i = 0; i < r1; i++) {
Για (ενθ j = 0; j < c2; j++) {
mul[i][j] = 0;

Για (ενθ k = 0; k < c1; k++) {
mul[i][j] += m1[i][k] * m2[k][j];
}
}
}

Εμφανίστε τον πολλαπλασιασμένο πίνακα χρησιμοποιώντας έναν ένθετο βρόχο for που επαναλαμβάνεται πάνω από τις σειρές και τις στήλες των πινάκων που προκύπτουν. Χρησιμοποιήστε τον χαρακτήρα νέας γραμμής (\n) για να εμφανίσετε κάθε μία από τις σειρές σε ξεχωριστή γραμμή. Επιστρέψτε το 0 για έξοδο από την κύρια λειτουργία και το πρόγραμμα.

printf("Ο πολλαπλασιασμένος πίνακας είναι: \n");

Για (ενθ i = 0; i < r1; i++) {
Για (ενθ j = 0; j < c2; j++) {
printf("%d\t", mul[i][j]);
}

printf("\n");
}

ΕΠΙΣΤΡΟΦΗ0;
}

Η έξοδος του προγράμματος πολλαπλασιασμού μητρών

Θα πρέπει να δείτε κάτι σαν την ακόλουθη έξοδο όταν εκτελείτε το πρόγραμμα πολλαπλασιασμού μήτρας:

Εάν εισαγάγετε μη έγκυρη είσοδο, ο πολλαπλασιασμός του πίνακα αποτυγχάνει και θα δείτε κάτι σαν αυτό:

Οι μήτρες έχουν πολλές χρήσεις

Διάφορα πεδία χρησιμοποιούν πίνακες όπως επιστήμη, εμπόριο, οικονομία, γεωλογία, ρομποτική και κινούμενα σχέδια. Θα χρησιμοποιήσετε κυρίως πίνακες στα μαθηματικά για να λύσετε γραμμικές εξισώσεις και να αναπαραστήσετε μετασχηματισμούς όπως η περιστροφή ή η μετάφραση. Οι πίνακες μπορούν να υπολογίσουν την ποσότητα ανάκλασης και διάθλασης καθώς και να λύσουν εξισώσεις δικτύου AC σε ηλεκτρικά κυκλώματα.

Εκτός από εκπαιδευτικές εφαρμογές, μπορείτε να χρησιμοποιήσετε πίνακες για την ανάλυση δεδομένων έρευνας, δεδομένων ψηφοφορίας, υπολογισμού λιστών στοιχείων και άλλων συνόλων δεδομένων.