Perkalian matriks-vektor pada kartu grafis. Perkalian matriks dengan vektor

Sistem MatLab hanya melakukan operasi matematika pada matriks dan vektor. Pertimbangkan terlebih dahulu operasi sederhana penjumlahan dan perkalian matriks dan vektor. Biarkan dua vektor diberikan

a = ; % vektor baris
b = ; % vektor kolom

maka perkalian kedua vektor tersebut dapat ditulis sebagai

c = a*b; %c=1+2+3+4+5=16
d = b*a; %d - matriks elemen 5x5

Menurut operasi pada vektor, mengalikan vektor baris dengan vektor kolom menghasilkan angka, dan mengalikan vektor kolom dengan vektor baris menghasilkan matriks dua dimensi, yang merupakan hasil perhitungan dalam contoh di atas, yaitu.

Penjumlahan dan pengurangan dua buah vektor ditulis sebagai

a1 = ;
a2 = ;
c = a1+a2; %c = ;
c = a2-a1; %c = ;

Perhatikan bahwa operasi penjumlahan dan pengurangan dapat dilakukan antara dua vektor kolom atau dua vektor baris. Jika tidak, MatLab akan mengeluarkan pesan kesalahan, karena vektor dari jenis yang berbeda tidak dapat ditambahkan. Ini adalah kasus dengan semua operasi aritmatika yang tidak valid: jika tidak dapat dihitung, sistem MatLab akan melaporkan kesalahan dan program akan berhenti pada baris yang sesuai.

Demikian pula, operasi perkalian dan penambahan antara matriks dilakukan:

A = ;
B = satuan(3);
C=A+B; % penjumlahan dua matriks dengan ukuran yang sama
D=A+5; % penambahan matriks dan bilangan
E=A*B; % perkalian matriks A dengan B
F=B*A; % perkalian matriks B dengan A
G=5*A; % perkalian matriks dengan bilangan

Operasi penghitungan matriks invers, serta transpos matriks dan vektor, ditulis sebagai berikut:

a = ; % vektor baris
b = a'; % vektor kolom yang dibentuk oleh
% transpos dari vektor baris a.
A = ; % matriks elemen 3x3
B = a*A; %b= - vektor baris
C=A*b; % C = - vektor kolom
D = a*A*a'; % D = 45 – bilangan, jumlah matriks A
E = A'; % E adalah matriks yang ditransposisikan A
F = inv(A); % F - matriks terbalik A
G = A^-1; % G - matriks terbalik A

Dari contoh di atas, terlihat bahwa operasi transpos matriks dan vektor dilambangkan dengan simbol '(apostrof), yang diletakkan setelah nama vektor atau matriks. Perhitungan matriks invers dapat dilakukan dengan memanggil fungsi inv() atau dengan menaikkan matriks ke pangkat -1. Hasil dalam kedua kasus akan sama, dan dua metode perhitungan dibuat untuk kemudahan penggunaan saat mengimplementasikan berbagai algoritma.

Jika dalam proses perhitungan diperlukan untuk mengalikan, membagi atau menaikkan elemen dari vektor atau elemen matriks dengan elemen, maka operator berikut digunakan untuk ini:

.* - perkalian elemen-bijaksana;
./ dan .\ - pembagian berdasarkan elemen;
.^ - eksponensial elemen-bijaksana.

Pertimbangkan operasi operator ini dalam contoh berikut.

a = ; % vektor baris
b = ; % vektor baris
c = a.*b; %c=
A = satuan(3); % matriks 3x3 terdiri dari satuan
B = ; % matriks 3x3
C = A.*B; % matriks 3x3, terdiri dari
D = A./B; % matriks 3x3, terdiri dari
E = A.\B; % matriks 3x3, terdiri dari
F = A.^2; % kuadrat elemen matriks A

Untuk mengakhiri bagian ini, pertimbangkan beberapa fungsi yang berguna saat bekerja dengan vektor dan matriks.

Untuk menemukan nilai maksimum elemen vektor, fungsi standar max() digunakan, yang mengembalikan nilai maksimum elemen yang ditemukan dan posisinya (indeks):

a = ;
= maks(a); % v = 6, i = 2;

v = maks(a); %v = 6;

Contoh di atas menunjukkan dua cara berbeda untuk memanggil fungsi max(). Dalam kasus pertama, nilai maksimum elemen dan indeksnya dalam vektor ditentukan, dan dalam kasus kedua, hanya nilai maksimum elemen yang ditentukan.

Dalam kasus matriks, fungsi ini menentukan nilai maksimum dalam kolom, seperti yang ditunjukkan pada contoh di bawah ini:

A = ;
= maks(A); % V=, I=
V = maks(A); %V=

Sintaks lengkap dari fungsi max() dapat ditemukan dengan mengetikkan perintah di jendela perintah MatLab

Tolong<название функции>

Fungsi min() bekerja dengan cara yang sama, yang menentukan nilai minimum elemen vektor atau matriks dan indeksnya.

Fungsi lain yang berguna untuk bekerja dengan matriks dan vektor adalah fungsi sum(), yang menghitung jumlah nilai elemen vektor atau kolom matriks:

a = ;
s = jumlah(a); %s = 3+5+4+2+1=15
A = ;
S1 = jumlah(A); %S1=
S2 = jumlah(jumlah(A)); % S2=39

Saat menghitung jumlah S2, jumlah nilai elemen matriks A pertama-tama dihitung oleh kolom, dan kemudian oleh baris. Akibatnya, variabel S2 berisi jumlah nilai semua elemen matriks A.

Untuk mengurutkan nilai elemen vektor atau matriks dalam urutan menaik atau menurun, gunakan fungsi sort() sebagai berikut:

a = ;

b1 = urutkan(a); %b1=
b2 = urutkan(a, 'turun'); %b2=
b3 = urutkan(a, 'naik'); %b3=

untuk matriks

A = ;
B1 = urutkan(A); %B1=
B2 = sort(A, 'turun'); %B2=

Dalam banyak masalah praktis, seringkali diperlukan untuk menemukan elemen tertentu dalam vektor atau matriks. Ini dapat dilakukan dengan menggunakan fungsi find() standar, yang mengambil sebagai argumen suatu kondisi yang dengannya elemen yang diperlukan ditemukan, misalnya:

a = ;
b1 = temukan(a == 2); %b1 = 4 - indeks elemen 2
b2 = temukan(a ~= 2); % b2 = - indeks tanpa 2
b3 = temukan(a > 3); %b3=

Pada contoh di atas, simbol '==' berarti memeriksa kesetaraan, dan simbol '~=' melakukan pemeriksaan ketidaksetaraan nilai elemen vektor a. Rincian lebih lanjut tentang operator ini akan dijelaskan di bagian operator bersyarat.

Fungsi lain yang berguna untuk bekerja dengan vektor dan matriks adalah fungsi mean() untuk menghitung mean aritmatika, yang bekerja seperti ini:

a = ;
m = rata-rata(a); %m = 3
A = ;
M1 = rata-rata (A); %M1=
M2 = mean(rata-rata(A)); % M2 = 4,333

Jadi, dalam pelajaran sebelumnya, kami menganalisis aturan untuk penjumlahan dan pengurangan matriks. Ini adalah operasi sederhana yang sebagian besar siswa memahaminya secara harfiah langsung dari kelelawar.

Namun, Anda bersukacita lebih awal. Freebie sudah berakhir - mari kita beralih ke perkalian. Saya akan segera memperingatkan Anda: mengalikan dua matriks sama sekali tidak mengalikan angka dalam sel dengan koordinat yang sama, seperti yang mungkin Anda pikirkan. Semuanya jauh lebih menyenangkan di sini. Dan Anda harus mulai dengan definisi awal.

Matriks yang konsisten

Salah satu karakteristik terpenting dari matriks adalah ukurannya. Kita telah membicarakan hal ini ratusan kali: $A=\left[ m\times n \right]$ berarti matriks tersebut memiliki persis $m$ baris dan $n$ kolom. Kami telah membahas bagaimana tidak membingungkan baris dengan kolom. Sekarang ada hal lain yang penting.

Definisi. Matriks berbentuk $A=\left[ m\times n \right]$ dan $B=\left[ n\times k \right]$, di mana jumlah kolom pada matriks pertama sama dengan jumlah baris dalam detik, disebut konsisten.

Sekali lagi: jumlah kolom pada matriks pertama sama dengan jumlah baris pada matriks kedua! Dari sini kita mendapatkan dua kesimpulan sekaligus:

  1. Kami peduli tentang urutan matriks. Misalnya, matriks $A=\left[ 3\times 2 \right]$ dan $B=\left[ 2\times 5 \right]$ konsisten (2 kolom di matriks pertama dan 2 baris di matriks kedua) , tetapi sebaliknya — matriks $B=\left[ 2\times 5 \right]$ dan $A=\left[ 3\times 2 \right]$ tidak lagi konsisten (5 kolom dalam matriks pertama, sebagai itu, bukan 3 baris di baris kedua).
  2. Konsistensi mudah diperiksa jika Anda menuliskan semua dimensi satu demi satu. Menggunakan contoh dari paragraf sebelumnya: "3 2 2 5" - angka yang sama berada di tengah, sehingga matriksnya konsisten. Tapi “2 5 3 2” tidak setuju, karena ada angka yang berbeda di tengah.

Selain itu, kapten tampaknya mengisyaratkan bahwa matriks kuadrat dengan ukuran yang sama $\left[ n\times n \right]$ selalu konsisten.

Dalam matematika, ketika urutan pencacahan objek penting (misalnya, dalam definisi yang dibahas di atas, urutan matriks penting), orang sering berbicara tentang pasangan terurut. Kami bertemu mereka di sekolah: Saya rasa tidak salah jika koordinat $\left(1;0 \right)$ dan $\left(0;1 \right)$ menentukan titik yang berbeda pada bidang.

Jadi: koordinat juga merupakan pasangan terurut, yang terdiri dari angka. Tetapi tidak ada yang mencegah Anda membuat pasangan matriks seperti itu. Maka dapat dikatakan: "Suatu pasangan matriks terurut $\left(A;B \right)$ konsisten jika jumlah kolom pada matriks pertama sama dengan jumlah baris pada matriks kedua. "

Nah, jadi apa?

Definisi perkalian

Pertimbangkan dua matriks yang konsisten: $A=\left[ m\times n \right]$ dan $B=\left[ n\times k \right]$. Dan kami mendefinisikan untuk mereka operasi perkalian.

Definisi. Produk dari dua matriks yang konsisten $A=\left[ m\times n \right]$ dan $B=\left[ n\times k \right]$ adalah matriks baru $C=\left[ m\times k \ kanan] $, elemen yang dihitung sesuai dengan rumus:

\[\begin(align) & ((c)_(i;j))=((a)_(i;1))\cdot ((b)_(1;j))+((a)_ (i;2))\cdot ((b)_(2;j))+\ldots +((a)_(i;n))\cdot ((b)_(n;j))= \\ & =\sum\limits_(t=1)^(n)(((a)_(i;t))\cdot ((b)_(t;j))) \end(align)\]

Produk seperti itu dilambangkan dengan cara standar: $C=A\cdot B$.

Bagi mereka yang melihat definisi ini untuk pertama kalinya, dua pertanyaan segera muncul:

  1. Permainan liar macam apa ini?
  2. Mengapa begitu sulit?

Nah, hal pertama yang pertama. Mari kita mulai dengan pertanyaan pertama. Apa arti semua indeks ini? Dan bagaimana tidak membuat kesalahan saat bekerja dengan matriks nyata?

Pertama-tama, kami perhatikan bahwa garis panjang untuk menghitung $((c)_(i;j))$ (khususkan titik koma di antara indeks agar tidak bingung, tetapi Anda tidak perlu memasukkannya umum - Saya sendiri bosan mengetik rumus dalam definisi) benar-benar bermuara pada aturan sederhana:

  1. Ambil baris $i$-th pada matriks pertama;
  2. Ambil kolom $j$-th dalam matriks kedua;
  3. Kami mendapatkan dua urutan angka. Kami mengalikan elemen dari urutan ini dengan angka yang sama, dan kemudian menambahkan produk yang dihasilkan.

Proses ini mudah dipahami dari gambar:


Skema perkalian dua matriks

Sekali lagi: kita memperbaiki baris $i$ di matriks pertama, kolom $j$ di matriks kedua, mengalikan elemen dengan angka yang sama, dan kemudian menambahkan produk yang dihasilkan - kita mendapatkan $((c)_(ij ))$. Dan untuk semua $1\le i\le m$ dan $1\le j\le k$. Itu. akan ada $m\times k$ "penyimpangan" seperti itu secara total.

Faktanya, kita telah bertemu dengan perkalian matriks dalam kurikulum sekolah, hanya dalam bentuk yang sangat terpotong. Biarkan vektor diberikan:

\[\begin(align) & \vec(a)=\left(((x)_(a));((y)_(a));((z)_(a)) \kanan); \\ & \overrightarrow(b)=\left(((x)_(b));((y)_(b));((z)_(b)) \kanan). \\ \end(sejajarkan)\]

Maka produk skalar mereka akan menjadi jumlah persis dari produk berpasangan:

\[\overrightarrow(a)\times \overrightarrow(b)=((x)_(a))\cdot ((x)_(b))+((y)_(a))\cdot ((y )_(b))+((z)_(a))\cdot ((z)_(b))\]

Faktanya, di tahun-tahun yang jauh itu, ketika pepohonan lebih hijau dan langit lebih cerah, kita cukup mengalikan vektor baris $\overrightarrow(a)$ dengan vektor kolom $\overrightarrow(b)$.

Tidak ada yang berubah hari ini. Hanya saja sekarang ada lebih banyak vektor baris dan kolom ini.

Tapi cukup teori! Mari kita lihat contoh nyata. Dan mari kita mulai dengan kasus paling sederhana - matriks persegi.

Perkalian matriks persegi

Tugas 1. Lakukan perkalian:

\[\left[ \begin(array)(*(35)(r)) 1 & 2 \\ -3 & 4 \\\end(array) \right]\cdot \left[ \begin(array)(* (35)(r)) -2 & 4 \\ 3 & 1 \\\end(array) \kanan]\]

Keputusan. Jadi, kita memiliki dua matriks: $A=\left[ 2\times 2 \right]$ dan $B=\left[ 2\times 2 \right]$. Jelas bahwa mereka konsisten (matriks persegi dengan ukuran yang sama selalu konsisten). Jadi kita melakukan perkalian:

\[\begin(align) & \left[ \begin(array)(*(35)(r)) 1 & 2 \\ -3 & 4 \\\end(array) \right]\cdot \left[ \ mulai(array)(*(35)(r)) -2 & 4 \\ 3 & 1 \\\end(array) \kanan]=\kiri[ \begin(array)(*(35)(r)) 1\cdot \left(-2 \right)+2\cdot 3 & 1\cdot 4+2\cdot 1 \\ -3\cdot \left(-2 \right)+4\cdot 3 & -3\cdot 4+4\cdot 1 \\\end(array) \right]= \\ & =\left[ \begin(array)(*(35)(r)) 4 & 6 \\ 18 & -8 \\\ akhir(array)\kanan]. \end(sejajarkan)\]

Itu saja!

Jawaban: $\left[ \begin(array)(*(35)(r))4 & 6 \\ 18 & -8 \\\end(array) \right]$.

Tugas 2. Lakukan perkalian:

\[\left[ \begin(matrix) 1 & 3 \\ 2 & 6 \\\end(matrix) \right]\cdot \left[ \begin(array)(*(35)(r))9 & 6 \\ -3 & -2 \\\end(array) \kanan]\]

Keputusan. Sekali lagi, matriks yang konsisten, jadi kami melakukan tindakan berikut:\[\]

\[\begin(align) & \left[ \begin(matrix) 1 & 3 \\ 2 & 6 \\\end(matrix) \right]\cdot \left[ \begin(array)(*(35)( r)) 9 & 6 \\ -3 & -2 \\\end(array) \kanan]=\kiri[ \begin(array)(*(35)(r)) 1\cdot 9+3\cdot \ kiri(-3 \kanan) & 1\cdot 6+3\cdot \kiri(-2 \kanan) \\ 2\cdot 9+6\cdot \kiri(-3 \kanan) & 2\cdot 6+6\ cdot \left(-2 \right) \\\end(array) \right]= \\ & =\left[ \begin(matrix) 0 & 0 \\ 0 & 0 \\\end(matrix) \right] . \end(sejajarkan)\]

Seperti yang Anda lihat, hasilnya adalah matriks yang diisi dengan nol

Jawaban: $\left[ \begin(matrix) 0 & 0 \\ 0 & 0 \\\end(matrix) \right]$.

Dari contoh di atas, jelas bahwa perkalian matriks bukanlah operasi yang rumit. Setidaknya untuk 2 kali 2 matriks persegi.

Dalam proses perhitungan, kami menyusun matriks perantara, di mana kami secara langsung melukis angka-angka apa yang termasuk dalam sel tertentu. Inilah tepatnya yang harus dilakukan ketika memecahkan masalah nyata.

Sifat dasar produk matriks

Pendeknya. perkalian matriks:

  1. Non-komutatif: $A\cdot B\ne B\cdot A$ secara umum. Tentu saja ada matriks khusus yang persamaannya $A\cdot B=B\cdot A$ (misalnya, jika $B=E$ adalah matriks identitas), tetapi dalam sebagian besar kasus ini tidak berfungsi ;
  2. Asosiatif: $\left(A\cdot B \right)\cdot C=A\cdot \left(B\cdot C \right)$. Tidak ada pilihan di sini: matriks yang berdekatan dapat dikalikan tanpa mengkhawatirkan apa yang ada di kiri dan kanan dari dua matriks ini.
  3. Secara distributif: $A\cdot \left(B+C \right)=A\cdot B+A\cdot C$ dan $\left(A+B \right)\cdot C=A\cdot C+B\cdot C $

Dan sekarang - semuanya sama, tetapi lebih detail.

Perkalian matriks sangat mirip dengan perkalian bilangan klasik. Tapi ada perbedaan, yang paling penting adalah itu perkalian matriks, secara umum, tidak komutatif.

Perhatikan kembali matriks dari Soal 1. Kita telah mengetahui perkalian langsungnya:

\[\left[ \begin(array)(*(35)(r)) 1 & 2 \\ -3 & 4 \\\end(array) \right]\cdot \left[ \begin(array)(* (35)(r)) -2 & 4 \\ 3 & 1 \\\end(array) \kanan]=\kiri[ \begin(array)(*(35)(r))4 & 6 \\ 18 & -8 \\\end(array) \kanan]\]

Tetapi jika kita menukar matriks, kita mendapatkan hasil yang sama sekali berbeda:

\[\left[ \begin(array)(*(35)(r)) -2 & 4 \\ 3 & 1 \\\end(array) \right]\cdot \left[ \begin(array)(* (35)(r)) 1 & 2 \\ -3 & 4 \\\end(array) \kanan]=\kiri[ \begin(matrix) -14 & 4 \\ 0 & 10 \\\end(matrix) )\Baik]\]

Ternyata $A\cdot B\ne B\cdot A$. Juga, operasi perkalian hanya didefinisikan untuk matriks yang konsisten $A=\left[ m\times n \right]$ dan $B=\left[ n\times k \right]$, tetapi tidak ada yang menjamin bahwa mereka akan tetap konsisten, jika mereka ditukar. Misalnya, matriks $\left[ 2\times 3 \right]$ dan $\left[ 3\times 5 \right]$ cukup konsisten dalam urutan ini, tetapi matriks yang sama $\left[ 3\times 5 \ kanan] $ dan $\left[ 2\times 3 \right]$ ditulis dalam urutan terbalik tidak lagi cocok. Kesedihan :(

Di antara matriks persegi dengan ukuran tertentu $n$, akan selalu ada matriks yang memberikan hasil yang sama baik ketika dikalikan secara langsung maupun dalam urutan terbalik. Bagaimana menggambarkan semua matriks tersebut (dan berapa banyak dari mereka secara umum) adalah topik untuk pelajaran terpisah. Hari ini kita tidak akan membicarakannya. :)

Namun, perkalian matriks adalah asosiatif:

\[\kiri(A\cdot B \kanan)\cdot C=A\cdot \kiri(B\cdot C \kanan)\]

Karena itu, ketika Anda perlu mengalikan beberapa matriks sekaligus, sama sekali tidak perlu melakukannya sebelumnya: sangat mungkin bahwa beberapa matriks yang berdekatan, ketika dikalikan, memberikan hasil yang menarik. Misalnya, matriks nol, seperti pada Soal 2 yang dibahas di atas.

Dalam masalah nyata, paling sering kita harus mengalikan matriks kuadrat dengan ukuran $\left[ n\times n \right]$. Himpunan semua matriks tersebut dilambangkan dengan $((M)^(n))$ (yaitu, entri $A=\left[ n\times n \right]$ dan \ berarti hal yang sama), dan akan pasti mengandung matriks $E$, yang disebut matriks identitas.

Definisi. Matriks identitas berukuran $n$ adalah matriks $E$ sedemikian rupa sehingga untuk sembarang matriks persegi $A=\left[ n\times n \right]$ persamaannya berlaku:

Matriks seperti itu selalu terlihat sama: ada unit pada diagonal utamanya, dan nol di semua sel lainnya.

\[\begin(align) & A\cdot \left(B+C \right)=A\cdot B+A\cdot C; \\ & \left(A+B \right)\cdot C=A\cdot C+B\cdot C. \\ \end(align)\]

Dengan kata lain, jika Anda perlu mengalikan satu matriks dengan jumlah dua matriks lainnya, Anda dapat mengalikannya dengan masing-masing "dua lainnya" ini, lalu menjumlahkan hasilnya. Dalam praktiknya, Anda biasanya harus melakukan operasi terbalik: kami melihat matriks yang sama, mengeluarkannya dari braket, melakukan penjumlahan, dan dengan demikian menyederhanakan hidup kami. :)

Perhatikan bahwa untuk menggambarkan distributivitas, kita harus menulis dua rumus: di mana jumlah ada di faktor kedua dan di mana jumlah ada di faktor pertama. Ini justru karena fakta bahwa perkalian matriks adalah non-komutatif (dan secara umum, dalam aljabar non-komutatif ada banyak jenis lelucon yang bahkan tidak terlintas dalam pikiran ketika bekerja dengan bilangan biasa). Dan jika, misalnya, Anda perlu menuliskan properti ini selama ujian, maka pastikan untuk menulis kedua rumus, jika tidak, guru mungkin akan sedikit marah.

Oke, ini semua adalah dongeng tentang matriks persegi. Bagaimana dengan persegi panjang?

Kasus matriks persegi panjang

Tapi tidak ada - semuanya sama dengan yang persegi.

Tugas 3. Lakukan perkalian:

\[\kiri[ \begin(matrix) \begin(matrix) 5 \\ 2 \\ 3 \\\end(matrix) & \begin(matrix) 4 \\ 5 \\ 1 \\\end(matrix) \ \\end(matrix) \right]\cdot \left[ \begin(array)(*(35)(r)) -2 & 5 \\ 3 & 4 \\\end(array) \right]\]

Keputusan. Kami memiliki dua matriks: $A=\left[ 3\times 2 \right]$ dan $B=\left[ 2\times 2 \right]$. Mari kita menulis angka yang menunjukkan ukuran berturut-turut:

Seperti yang Anda lihat, dua angka di tengahnya sama. Ini berarti bahwa matriks konsisten, dan dapat dikalikan. Dan pada output kita mendapatkan matriks $C=\left[ 3\times 2 \right]$:

\[\begin(align) & \left[ \begin(matrix) \begin(matrix) 5 \\ 2 \\ 3 \\\end(matrix) & \begin(matrix) 4 \\ 5 \\ 1 \\ \end(matriks) \\\end(matriks) \kanan]\cdot \kiri[ \begin(array)(*(35)(r)) -2 & 5 \\ 3 & 4 \\\end(array) \kanan]=\kiri[ \begin(array)(*(35)(r)) 5\cdot \left(-2 \right)+4\cdot 3 & 5\cdot 5+4\cdot 4 \\ 2 \cdot \left(-2 \right)+5\cdot 3 & 2\cdot 5+5\cdot 4 \\ 3\cdot \left(-2 \right)+1\cdot 3 & 3\cdot 5+1 \cdot 4 \\\end(array) \right]= \\ & =\left[ \begin(array)(*(35)(r)) 2 & 41 \\ 11 & 30 \\ -3 & 19 \ \\end(array)\kanan]. \end(sejajarkan)\]

Semuanya jelas: matriks terakhir memiliki 3 baris dan 2 kolom. Cukup $=\left[ 3\times 2 \right]$.

Jawaban: $\left[ \begin(array)(*(35)(r)) \begin(array)(*(35)(r)) 2 \\ 11 \\ -3 \\\end(array) & \begin(matrix) 41 \\ 30 \\ 19 \\\end(matrix) \\\end(array) \right]$.

Sekarang pertimbangkan salah satu tugas pelatihan terbaik bagi mereka yang baru mulai bekerja dengan matriks. Di dalamnya, Anda tidak hanya perlu mengalikan dua tablet, tetapi pertama-tama untuk menentukan: apakah perkalian seperti itu diperbolehkan?

Soal 4. Temukan semua hasil kali matriks berpasangan yang mungkin:

\\]; $B=\kiri[ \begin(matrix) \begin(matrix) 0 \\ 2 \\ 0 \\ 4 \\\end(matrix) & \begin(matrix) 1 \\ 0 \\ 3 \\ 0 \ \\akhir(matriks) \\\akhir(matriks) \kanan]$; $C=\left[ \begin(matrix)0 & 1 \\ 1 & 0 \\\end(matrix) \right]$.

Keputusan. Pertama, mari kita tuliskan dimensi matriks:

\;\ B=\kiri[ 4\kali 2 \kanan];\ C=\kiri[ 2\kali 2 \kanan]\]

Kami mendapatkan bahwa matriks $A$ hanya dapat dicocokkan dengan matriks $B$, karena jumlah kolom dalam $A$ adalah 4, dan hanya $B$ yang memiliki jumlah baris ini. Oleh karena itu, kita dapat menemukan produk:

\\cdot \left[ \begin(array)(*(35)(r)) 0 & 1 \\ 2 & 0 \\ 0 & 3 \\ 4 & 0 \\\end(array) \right]=\ kiri[ \begin(array)(*(35)(r))-10 & 7 \\ 10 & 7 \\\end(array) \kanan]\]

Saya menyarankan agar pembaca melakukan langkah-langkah perantara sendiri. Saya hanya akan mencatat bahwa lebih baik menentukan ukuran matriks yang dihasilkan terlebih dahulu, bahkan sebelum perhitungan apa pun:

\\cdot \kiri[ 4\kali 2 \kanan]=\kiri[ 2\kali 2 \kanan]\]

Dengan kata lain, kami hanya menghapus koefisien "transisi" yang memastikan konsistensi matriks.

Apa pilihan lain yang mungkin? Sangat mungkin untuk menemukan $B\cdot A$, karena $B=\left[ 4\times 2 \right]$, $A=\left[ 2\times 4 \right]$, jadi pasangan terurut $\ left(B ;A \right)$ konsisten, dan dimensi produknya adalah:

\\cdot \kiri[ 2\kali 4 \kanan]=\kiri[ 4\kali 4 \kanan]\]

Singkatnya, outputnya adalah matriks $\left[ 4\times 4 \right]$, yang koefisiennya mudah dihitung:

\\cdot \left[ \begin(array)(*(35)(r)) 1 & -1 & 2 & -2 \\ 1 & 1 & 2 & 2 \\\end(array) \right]=\ kiri[ \begin(array)(*(35)(r))1 & 1 & 2 & 2 \\ 2 & -2 & 4 & -4 \\ 3 & 3 & 6 & 6 \\ 4 & -4 & 8 & -8 \\\end(array) \kanan]\]

Jelas, Anda juga dapat mencocokkan $C\cdot A$ dan $B\cdot C$, dan hanya itu. Karena itu, kami cukup menulis produk yang dihasilkan:

Itu mudah.:)

Jawaban: $AB=\left[ \begin(array)(*(35)(r)) -10 & 7 \\ 10 & 7 \\\end(array) \right]$; $BA=\kiri[ \begin(array)(*(35)(r)) 1 & 1 & 2 & 2 \\ 2 & -2 & 4 & -4 \\ 3 & 3 & 6 & 6 \\ 4 & -4 & 8 & -8 \\\end(array) \kanan]$; $CA=\kiri[ \begin(array)(*(35)(r)) 1 & 1 & 2 & 2 \\ 1 & -1 & 2 & -2 \\\end(array) \right]$; $BC=\kiri[ \begin(array)(*(35)(r))1 & 0 \\ 0 & 2 \\ 3 & 0 \\ 0 & 4 \\\end(array) \right]$.

Secara umum, saya sangat merekomendasikan melakukan tugas ini sendiri. Dan tugas serupa lainnya yaitu di pekerjaan rumah. Pemikiran yang tampaknya sederhana ini akan membantu Anda mengerjakan semua langkah kunci dalam perkalian matriks.

Tapi cerita tidak berakhir di situ. Mari kita beralih ke kasus perkalian khusus. :)

Vektor baris dan vektor kolom

Salah satu operasi matriks yang paling umum adalah perkalian dengan matriks yang memiliki satu baris atau satu kolom.

Definisi. Vektor kolom adalah matriks $\left[ m\times 1 \right]$, mis. terdiri dari beberapa baris dan hanya satu kolom.

Vektor baris adalah matriks dengan ukuran $\left[ 1\times n \right]$, mis. terdiri dari satu baris dan beberapa kolom.

Sebenarnya, kita sudah pernah bertemu dengan objek-objek ini. Misalnya, vektor tiga dimensi biasa dari stereometri $\overrightarrow(a)=\left(x;y;z \right)$ tidak lain adalah vektor baris. Dari sudut pandang teoretis, hampir tidak ada perbedaan antara baris dan kolom. Anda perlu berhati-hati hanya ketika berkoordinasi dengan matriks pengali di sekitarnya.

Tugas 5. Kalikan:

\[\kiri[ \begin(array)(*(35)(r)) 2 & -1 & 3 \\ 4 & 2 & 0 \\ -1 & 1 & 1 \\\end(array) \kanan] \cdot \left[ \begin(array)(*(35)(r)) 1 \\ 2 \\ -1 \\\end(array) \right]\]

Keputusan. Kami memiliki produk matriks yang konsisten: $\left[ 3\times 3 \right]\cdot \left[ 3\times 1 \right]=\left[ 3\times 1 \right]$. Temukan bagian ini:

\[\kiri[ \begin(array)(*(35)(r)) 2 & -1 & 3 \\ 4 & 2 & 0 \\ -1 & 1 & 1 \\\end(array) \kanan] \cdot \left[ \begin(array)(*(35)(r)) 1 \\ 2 \\ -1 \\\end(array) \right]=\left[ \begin(array)(*(35 )(r)) 2\cdot 1+\left(-1 \right)\cdot 2+3\cdot \left(-1 \right) \\ 4\cdot 1+2\cdot 2+0\cdot 2 \ \ -1\cdot 1+1\cdot 2+1\cdot \left(-1 \right) \\\end(array) \right]=\left[ \begin(array)(*(35)(r) ) -3 \\ 8 \\ 0 \\\end(array) \kanan]\]

Jawaban: $\left[ \begin(array)(*(35)(r))-3 \\ 8 \\ 0 \\\end(array) \right]$.

Tugas 6. Lakukan perkalian:

\[\left[ \begin(array)(*(35)(r)) 1 & 2 & -3 \\\end(array) \right]\cdot \left[ \begin(array)(*(35) (r)) 3 & 1 & -1 \\ 4 & -1 & 3 \\ 2 & 6 & 0 \\\end(array) \kanan]\]

Keputusan. Sekali lagi semuanya konsisten: $\left[ 1\times 3 \right]\cdot \left[ 3\times 3 \right]=\left[ 1\times 3 \right]$. Kami mempertimbangkan pekerjaan:

\[\left[ \begin(array)(*(35)(r)) 1 & 2 & -3 \\\end(array) \right]\cdot \left[ \begin(array)(*(35) (r)) 3 & 1 & -1 \\ 4 & -1 & 3 \\ 2 & 6 & 0 \\\end(array) \kanan]=\kiri[ \begin(array)(*(35)( r))5 & -19 & 5 \\\end(array) \kanan]\]

Jawaban: $\left[ \begin(matrix) 5 & -19 & 5 \\\end(matrix) \right]$.

Seperti yang Anda lihat, ketika mengalikan vektor baris dan vektor kolom dengan matriks persegi, hasilnya selalu berupa baris atau kolom dengan ukuran yang sama. Fakta ini memiliki banyak aplikasi - mulai dari menyelesaikan persamaan linier hingga semua jenis transformasi koordinat (yang akhirnya juga direduksi menjadi sistem persamaan, tetapi mari kita tidak membicarakan hal-hal yang menyedihkan).

Saya pikir semuanya sudah jelas di sini. Mari kita beralih ke bagian terakhir dari pelajaran hari ini.

Eksponensial matriks

Di antara semua operasi perkalian, eksponensial patut mendapat perhatian khusus - ini adalah saat kita mengalikan objek yang sama dengan dirinya sendiri beberapa kali. Matriks tidak terkecuali, mereka juga dapat dinaikkan ke berbagai kekuatan.

Pekerjaan seperti itu selalu terkoordinasi:

\\cdot \kiri[ n\kali n \kanan]=\kiri[ n\kali n \kanan]\]

Dan mereka ditunjuk dengan cara yang sama seperti derajat biasa:

\[\begin(align) & A\cdot A=((A)^(2)); \\ & A\cdot A\cdot A=((A)^(3)); \\ & \underbrace(A\cdot A\cdot \ldots \cdot A)_(n)=((A)^(n)). \\ \end(sejajarkan)\]

Sekilas, semuanya sederhana. Mari kita lihat bagaimana tampilannya dalam praktik:

Tugas 7. Naikkan matriks ke daya yang ditentukan:

$((\left[ \begin(matrix) 1 & 1 \\ 0 & 1 \\\end(matrix) \right])^(3))$

Keputusan. Oke, mari kita membangun. Mari kita kuadratkan dulu:

\[\begin(align) & ((\left[ \begin(matrix) 1 & 1 \\ 0 & 1 \\\end(matrix) \right])^(2))=\left[ \begin(matrix) ) 1 & 1 \\ 0 & 1 \\\end(matriks) \kanan]\cdot \kiri[ \begin(matriks) 1 & 1 \\ 0 & 1 \\\end(matriks) \kanan]= \\ & =\kiri[ \begin(array)(*(35)(r)) 1\cdot 1+1\cdot 0 & 1\cdot 1+1\cdot 1 \\ 0\cdot 1+1\cdot 0 & 0\cdot 1+1\cdot 1 \\\end(array) \right]= \\ & =\left[ \begin(array)(*(35)(r)) 1 & 2 \\ 0 & 1 \ \\end(array) \kanan] \end(align)\]

\[\begin(align) & ((\left[ \begin(matrix) 1 & 1 \\ 0 & 1 \\\end(matrix) \right])^(3))=((\left[ \begin (matriks) 1 & 1 \\ 0 & 1 \\\end(matriks) \kanan])^(3))\cdot \kiri[ \begin(matriks) 1 & 1 \\ 0 & 1 \\\end( matriks) \kanan]= \\ & =\kiri[ \begin(array)(*(35)(r)) 1 & 2 \\ 0 & 1 \\\end(array) \right]\cdot \left[ \begin(matrix) 1 & 1 \\ 0 & 1 \\\end(matrix) \right]= \\ & =\left[ \begin(array)(*(35)(r)) 1 & 3 \\ 0 & 1 \\\end(array) \kanan] \end(align)\]

Itu saja.:)

Jawaban: $\left[ \begin(matrix)1 & 3 \\ 0 & 1 \\\end(matrix) \right]$.

Soal 8. Naikkan matriks ke daya yang ditentukan:

\[((\left[ \begin(matrix) 1 & 1 \\ 0 & 1 \\\end(matrix) \kanan])^(10))\]

Keputusan. Hanya saja, jangan menangis sekarang tentang fakta bahwa "gelarnya terlalu tinggi", "dunia ini tidak adil" dan "guru benar-benar kehilangan bank mereka". Sebenarnya, semuanya mudah:

\[\begin(align) & ((\left[ \begin(matrix) 1 & 1 \\ 0 & 1 \\\end(matrix) \right])^(10))=((\left[ \begin (matriks) 1 & 1 \\ 0 & 1 \\\end(matriks) \kanan])^(3))\cdot ((\left[ \begin(matrix) 1 & 1 \\ 0 & 1 \\\ akhir(matriks) \kanan])^(3))\cdot ((\kiri[ \begin(matriks) 1 & 1 \\ 0 & 1 \\\akhir(matriks) \kanan])^(3))\ cdot \left[ \begin(matrix) 1 & 1 \\ 0 & 1 \\\end(matrix) \right]= \\ & =\left(\left[ \begin(matrix) 1 & 3 \\ 0 & 1 \\\akhir(matriks) \kanan]\cdot \kiri[ \mulai(matriks) 1 & 3 \\ 0 & 1 \\\akhir(matriks) \kanan] \kanan)\cdot \kiri(\kiri[ \begin(matrix) 1 & 3 \\ 0 & 1 \\\end(matrix) \right]\cdot \left[ \begin(matrix) 1 & 1 \\ 0 & 1 \\\end(matrix) \right ] \kanan)= \\ & =\kiri[ \begin(matrix) 1 & 6 \\ 0 & 1 \\\end(matrix) \right]\cdot \left[ \begin(matrix) 1 & 4 \\ 0 & 1 \\\end(matrix) \right]= \\ & =\left[ \begin(matrix) 1 & 10 \\ 0 & 1 \\\end(matrix) \right] \end(align)\ ]

Perhatikan bahwa pada baris kedua kita menggunakan perkalian asosiatif. Sebenarnya, kami menggunakannya di tugas sebelumnya, tetapi itu tersirat.

Jawaban: $\left[ \begin(matrix) 1 & 10 \\ 0 & 1 \\\end(matrix) \right]$.

Seperti yang Anda lihat, tidak ada yang rumit dalam menaikkan matriks ke pangkat. Contoh terakhir dapat diringkas:

\[((\left[ \begin(matrix) 1 & 1 \\ 0 & 1 \\\end(matrix) \right])^(n))=\left[ \begin(array)(*(35) (r)) 1 & n \\ 0 & 1 \\\end(array) \kanan]\]

Fakta ini mudah dibuktikan melalui induksi matematika atau perkalian langsung. Namun, jauh dari selalu mungkin untuk menangkap pola seperti itu saat menaikkan ke kekuatan. Oleh karena itu, berhati-hatilah: seringkali lebih mudah dan lebih cepat untuk mengalikan beberapa matriks "kosong" daripada mencari beberapa pola di sana.

Secara umum, jangan mencari makna yang lebih tinggi di mana tidak ada. Terakhir, mari kita pertimbangkan eksponensial dari matriks yang lebih besar - sebanyak $\left[ 3\times 3 \right]$.

Soal 9. Naikkan matriks ke daya yang ditentukan:

\[((\kiri[ \begin(matriks) 0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \\\end(matriks) \kanan])^(3))\]

Keputusan. Mari kita tidak mencari pola. Kami bekerja "melalui":

\[((\kiri[ \begin(matriks) 0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \\\end(matriks) \kanan])^(3))=(( \left[ \begin(matrix) 0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \\\end(matrix) \right])^(2))\cdot \left[ \begin (matriks)0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \\\end(matriks) \kanan]\]

Mari kita mulai dengan mengkuadratkan matriks ini:

\[\begin(align) & ((\left[ \begin(matrix) 0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \\\end(matrix) \right])^( 2))=\left[ \begin(matrix) 0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \\\end(matrix) \right]\cdot \left[ \begin(matrix) ) 0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \\\end(matriks) \kanan]= \\ & =\kiri[ \begin(array)(*(35)(r )) 2 & 1 & 1 \\ 1 & 2 & 1 \\ 1 & 1 & 2 \\\end(array) \kanan] \end(align)\]

Sekarang mari kita kubus:

\[\begin(align) & ((\left[ \begin(matrix) 0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \\\end(matrix) \right])^( 3))=\kiri[ \begin(array)(*(35)(r)) 2 & 1 & 1 \\ 1 & 2 & 1 \\ 1 & 1 & 2 \\\end(array) \kanan] \cdot \left[ \begin(matrix) 0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \\\end(matrix) \right]= \\ & =\left[ \begin( array)(*(35)(r)) 2 & 3 & 3 \\ 3 & 2 & 3 \\ 3 & 3 & 2 \\\end(array) \kanan] \end(align)\]

Itu saja. Masalah terpecahkan.

Jawaban: $\left[ \begin(matrix) 2 & 3 & 3 \\ 3 & 2 & 3 \\ 3 & 3 & 2 \\\end(matrix) \right]$.

Seperti yang Anda lihat, jumlah perhitungan menjadi lebih besar, tetapi artinya tidak berubah sama sekali. :)

Pelajaran ini bisa berakhir. Lain kali kita akan mempertimbangkan operasi kebalikannya: kita akan mencari pengganda asli menggunakan produk yang ada.

Seperti yang mungkin sudah Anda duga, kita akan berbicara tentang matriks terbalik dan metode untuk menemukannya.

Kuliah 6. Algoritma numerik paralel untuk memecahkan masalah khas matematika komputasi: perkalian matriks.

Perkalian matriks dengan vektor. Mencapai kecepatan tertinggi mungkin. Penggunaan paralelisme tingkat menengah. Organisasi komputasi paralel untuk p = n. Penggunaan prosesor yang terbatas. perkalian matriks. Analisis makrooperasional algoritma pemecahan masalah. Organisasi paralelisme berdasarkan berbagi data.

Perkalian matriks dengan vektor

Masalah mengalikan matriks dengan vektor didefinisikan oleh hubungan

Jadi, memperoleh vektor yang dihasilkan melibatkan pengulangan jenis operasi yang sama untuk mengalikan baris matriks dan vektor . Memperoleh setiap operasi tersebut mencakup perkalian elemen demi elemen dari elemen baris matriks dan vektor dan penjumlahan selanjutnya dari produk yang dihasilkan. Jumlah total operasi skalar yang diperlukan diperkirakan dengan nilai

Sebagai berikut dari tindakan yang dilakukan saat mengalikan matriks dan vektor, metode paralel untuk menyelesaikan masalah dapat diperoleh berdasarkan algoritma penjumlahan paralel (lihat paragraf 4.1). Pada bagian ini, analisis metode paralelisasi akan dilengkapi dengan pertimbangan organisasi komputasi paralel tergantung pada jumlah prosesor yang tersedia untuk digunakan. Selain itu, dengan menggunakan contoh masalah mengalikan matriks dengan vektor, perhatian akan diarahkan pada kebutuhan untuk memilih topologi yang paling tepat dari sistem komputasi (saluran komunikasi yang ada antara prosesor) untuk mengurangi biaya untuk mengatur interaksi antarprosesor. .

Mencapai kinerja secepat mungkin ()

Mari kita lakukan analisis ketergantungan informasi dalam algoritma perkalian matriks-vektor untuk memilih kemungkinan cara paralelisasi. Seperti yang Anda lihat, operasi perkalian baris individual matriks dengan vektor yang dilakukan selama perhitungan adalah independen dan dapat dilakukan secara paralel;



Mengalikan setiap baris dengan sebuah vektor melibatkan perkalian elemen-bijaksana independen dan juga dapat dilakukan secara paralel;

Penjumlahan produk yang dihasilkan dalam setiap operasi perkalian baris matriks dengan vektor dapat dilakukan menggunakan salah satu varian algoritma penjumlahan yang dipertimbangkan sebelumnya (algoritma serial, skema kaskade konvensional dan modifikasi).

Dengan demikian, jumlah prosesor maksimum yang dibutuhkan ditentukan oleh nilai

Penggunaan sejumlah prosesor tersebut dapat direpresentasikan sebagai berikut. Set prosesor dibagi menjadi beberapa kelompok

,

masing-masing mewakili satu set prosesor untuk melakukan operasi mengalikan satu baris matriks dengan vektor. Pada awal perhitungan, setiap prosesor grup menerima elemen baris matriks dan elemen vektor yang sesuai . Selanjutnya, setiap prosesor melakukan operasi perkalian. Selanjutnya dilakukan perhitungan sesuai dengan skema penjumlahan kaskade. Untuk ilustrasi pada gambar. 6.1 menunjukkan skema komputasi untuk prosesor kelompok dengan dimensi matriks.

Beras. 6.1. Skema komputasi untuk mengalikan baris matriks dengan vektor

Waktu eksekusi algoritma paralel saat menggunakan prosesor ditentukan oleh waktu eksekusi operasi perkalian paralel dan waktu eksekusi skema kaskade

Akibatnya, indikator kinerja algoritme ditentukan oleh hubungan berikut:

Untuk masalah perkalian matriks dengan vektor, topologi yang paling cocok adalah struktur yang menyediakan transfer data cepat (jalur satuan panjang) dalam skema penjumlahan kaskade (lihat Gambar 4.5). Topologi semacam itu adalah struktur dengan sistem koneksi yang lengkap ( grafik lengkap) dan hypercube. Topologi lain menghasilkan peningkatan waktu komunikasi karena jalur data yang lebih panjang. Jadi, dengan urutan linier prosesor dengan sistem koneksi hanya dengan tetangga terdekat di sebelah kiri dan di sebelah kanan ( penggaris atau cincin) untuk skema kaskade, panjang jalur transmisi dari setiap jumlah parsial yang diterima pada iterasi , , sama dengan . Jika kita menerima bahwa transmisi data sepanjang jalur panjang dalam topologi dengan struktur linier memerlukan pelaksanaan operasi transmisi data, jumlah total operasi paralel (panjang total jalur) transmisi data ditentukan oleh nilai

(tidak termasuk transfer data untuk prosesor bootstrap).

Aplikasi sistem komputasi dengan topologi persegi panjang kisi dua dimensi ukuran mengarah pada interpretasi sederhana dan visual dari perhitungan yang dilakukan (struktur jaringan sesuai dengan struktur data yang diproses). Untuk topologi seperti itu, paling bijaksana untuk menempatkan baris matriks di sepanjang garis horizontal kisi; dalam hal ini, elemen vektor harus dikirim sepanjang vertikal sistem komputasi. Eksekusi perhitungan dengan pengaturan data ini dapat dilakukan secara paralel di sepanjang garis kisi; hasilnya, jumlah total transfer data sama dengan hasil untuk penggaris().

Tindakan komunikasi yang dilakukan dalam memecahkan masalah adalah mentransfer data antar pasangan prosesor MCS. Analisis rinci tentang durasi pelaksanaan operasi tersebut dilakukan dalam paragraf 3.3.

4. Rekomendasi untuk implementasi algoritma paralel. Saat menerapkan algoritme paralel, disarankan untuk memilih tahap awal pemuatan prosesor yang digunakan dengan data awal. Inisialisasi semacam itu paling sederhana disediakan untuk topologi sistem komputasi dengan topologi dalam bentuk grafik lengkap(pemuatan disediakan dengan operasi transfer data paralel tunggal). Saat mengatur satu set prosesor dalam bentuk hypercube Mungkin berguna untuk memiliki kontrol dua tingkat dari proses bootstrap, di mana prosesor kontrol pusat mendistribusikan baris matriks dan vektor ke prosesor kontrol dari kelompok prosesor , , yang, pada gilirannya, mendistribusikan elemen matriks dan baris vektor ke prosesor eksekutif. Untuk topologi dalam bentuk penguasa atau cincin operasi transfer data sekuensial diperlukan dengan jumlah data yang ditransfer secara berurutan menurun dari ke elemen.

Menggunakan Paralelisme Tingkat Menengah()

1. Pilihan metode komputasi paralel. Dengan penurunan jumlah prosesor yang tersedia yang digunakan (), skema penjumlahan kaskade yang biasa saat melakukan operasi mengalikan baris matriks dengan vektor menjadi tidak dapat diterapkan. Untuk kesederhanaan penyajian materi, kami mengasumsikan dan menggunakan skema kaskade yang dimodifikasi. Beban awal setiap prosesor dalam hal ini meningkat dan prosesor dimuat ( ) oleh bagian dari baris matriks dan vektor . Waktu eksekusi operasi perkalian matriks dengan vektor dapat diperkirakan sebagai nilai

Saat menggunakan jumlah prosesor yang diperlukan untuk mengimplementasikan skema kaskade yang dimodifikasi, mis. pada , ekspresi ini memberikan perkiraan waktu eksekusi (pada ).

Dengan jumlah prosesor , ketika waktu eksekusi algoritma diperkirakan sebagai , skema baru untuk eksekusi paralel perhitungan dapat diusulkan, di mana untuk setiap iterasi dari penjumlahan kaskade digunakan set prosesor yang tidak tumpang tindih. Dengan pendekatan ini, jumlah prosesor yang tersedia cukup untuk mengimplementasikan hanya satu operasi perkalian baris matriks dan vektor. Selain itu, saat melakukan iterasi berikutnya dari penjumlahan kaskade, prosesor yang bertanggung jawab atas eksekusi semua iterasi sebelumnya bebas. Namun, kelemahan dari pendekatan yang diusulkan ini dapat diubah menjadi keuntungan dengan menggunakan prosesor yang menganggur untuk memproses baris matriks berikutnya. Akibatnya, skema berikut dapat dibentuk: konveyor melakukan perkalian matriks dan vektor:

Kumpulan prosesor dibagi menjadi kelompok prosesor yang tidak tumpang tindih

,

grup , , terdiri dari prosesor dan digunakan untuk mengulangi algoritma kaskade (grup digunakan untuk mengimplementasikan perkalian elemen-bijaksana); jumlah total prosesor;

Inisialisasi perhitungan terdiri dari pemuatan elemen demi elemen dari prosesor grup dengan nilai 1 dari baris matriks dan vektor ; setelah bootstrap, operasi paralel dari perkalian elemen-bijaksana dan implementasi selanjutnya dari rangkaian penjumlahan kaskade konvensional dilakukan;

Saat melakukan perhitungan, setiap kali setelah selesainya operasi perkalian elemen, pemroses grup dimuat dengan elemen baris berikutnya dari matriks dan proses perhitungan dimulai untuk data yang baru dimuat.

Sebagai hasil dari penerapan algoritme yang dijelaskan, sejumlah prosesor mengimplementasikan pipa untuk melakukan operasi mengalikan baris matriks dengan vektor. Pada saluran seperti itu, beberapa baris individu dari matriks dapat secara bersamaan berada pada tahap pemrosesan yang berbeda. Jadi, misalnya, setelah perkalian elemen dari elemen baris pertama dan vektor, pemroses grup akan melakukan iterasi pertama dari algoritma kaskade untuk baris pertama matriks, dan pemroses grup akan melakukan perkalian elemen dari nilai-nilai baris kedua matriks, dll. Untuk ilustrasi pada gambar. 6.2 menunjukkan situasi proses komputasi setelah 2 iterasi pipa di .

Beras. 6.2. Keadaan pipa untuk operasi mengalikan baris matriks dengan vektor setelah melakukan 2 iterasi

2. Evaluasi indikator kinerja algoritma. Perkalian baris pertama dengan vektor sesuai dengan skema kaskade akan selesai, seperti biasa, setelah eksekusi () operasi paralel. Untuk baris lainnya, sesuai dengan skema pipa organisasi perhitungan, hasil perkalian dari setiap baris berturut-turut akan muncul setelah selesainya setiap iterasi berikutnya dari pipa. Akibatnya, total waktu eksekusi operasi perkalian matriks-vektor dapat dinyatakan sebagai:

Perkiraan ini sedikit lebih lama dari waktu eksekusi algoritma paralel yang dijelaskan dalam paragraf sebelumnya (), namun, metode yang baru diusulkan membutuhkan lebih sedikit data untuk ditransmisikan (vektor dikirim hanya sekali). Selain itu, penggunaan skema saluran mengarah ke tampilan beberapa hasil perhitungan sebelumnya (yang dapat berguna dalam sejumlah situasi pemrosesan data).

Akibatnya, indikator kinerja algoritma ditentukan oleh hubungan berikut:

3. Pilihan topologi sistem komputer. Topologi bijaksana dari sistem komputasi sepenuhnya ditentukan oleh skema komputasi - ini adalah lengkap pohon biner tinggi . Jumlah transfer data dengan topologi jaringan seperti itu ditentukan oleh jumlah total iterasi yang dilakukan oleh pipa, mis.

Inisialisasi perhitungan dimulai dari daun pohon, hasil penjumlahan diakumulasikan di root processor.

Analisis kompleksitas tindakan komunikasi yang dilakukan untuk sistem komputer dengan topologi komunikasi antarprosesor lainnya seharusnya dilakukan sebagai tugas independen (lihat juga Bagian 3.4).

Organisasi komputasi paralel dengan

1. Pilihan metode komputasi paralel. Saat menggunakan prosesor untuk mengalikan matriks dengan vektor, algoritma perkalian baris demi baris paralel yang telah dibahas dalam manual dapat digunakan, di mana baris matriks didistribusikan baris demi baris di antara prosesor dan setiap prosesor mengimplementasikan operasi mengalikan setiap baris individu dari matriks dengan vektor . Cara lain yang mungkin untuk mengatur komputasi paralel adalah dengan membangun skema pipa untuk operasi mengalikan baris matriks dengan vektor(perkalian titik dari vektor) dengan mengatur semua prosesor yang tersedia dalam urutan linier ( penguasa).

Skema perhitungan tersebut dapat didefinisikan sebagai berikut. Mari kita nyatakan set prosesor sebagai urutan linier (lihat Gambar 4.7):

setiap prosesor , , digunakan untuk mengalikan elemen kolom matriks dan elemen vektor . Eksekusi perhitungan pada setiap prosesor , , terdiri dari:

Elemen berikutnya dari kolom matriks diminta;

Elemen dan dikalikan;

Hasil perhitungan prosesor sebelumnya diminta;

Nilai ditambahkan;

Hasilnya dikirim ke prosesor berikutnya.

Beras. 6.3. Keadaan pipa linier untuk operasi perkalian baris matriks dengan vektor setelah melakukan dua iterasi

Saat menginisialisasi skema yang dijelaskan, perlu untuk melakukan sejumlah tindakan tambahan:

Selama iterasi pertama, setiap prosesor meminta tambahan elemen dari vector ;

Untuk menyinkronkan perhitungan (selama eksekusi iterasi berikutnya dari rangkaian, hasil perhitungan prosesor sebelumnya diminta) pada tahap inisialisasi, prosesor , , mengeksekusi () loop tunggu.

Selain itu, untuk keseragaman skema yang dijelaskan untuk prosesor pertama , yang tidak memiliki prosesor sebelumnya, disarankan untuk memperkenalkan operasi penambahan kosong ( ).

Untuk ilustrasi pada gambar. 6.3 menunjukkan status proses komputasi setelah iterasi kedua dari pipeline pada .

2. Evaluasi indikator kinerja algoritma. Perkalian baris pertama dengan vektor sesuai dengan skema pipa yang dijelaskan akan selesai setelah eksekusi () operasi paralel. Hasil perkalian dari baris berikut akan terjadi setelah selesainya setiap iterasi berikutnya dari pipeline (ingat, iterasi setiap prosesor mencakup eksekusi operasi perkalian dan penjumlahan). Akibatnya, total waktu eksekusi operasi perkalian matriks-vektor dapat dinyatakan sebagai:

Perkiraan ini juga lebih besar dari waktu eksekusi minimum yang mungkin dari algoritma paralel untuk . Kegunaan menggunakan skema komputasi pipa adalah, seperti disebutkan dalam paragraf sebelumnya, dalam mengurangi jumlah data yang dikirimkan dan dalam penampilan awal bagian dari hasil perhitungan.

Indikator kinerja skema komputasi ini ditentukan oleh hubungan:

, ,

3. Pilihan topologi sistem komputer. Topologi yang diperlukan dari sistem komputasi untuk implementasi algoritma yang dijelaskan ditentukan secara unik oleh skema komputasi yang diusulkan - ini adalah rangkaian prosesor yang dipesan secara linier ( penggaris).

Menggunakan prosesor yang terbatas ()

1. Pilihan metode komputasi paralel. Ketika jumlah prosesor dikurangi menjadi suatu nilai, skema komputasi paralel untuk perkalian matriks-vektor dapat diperoleh sebagai hasil dari mengadaptasi algoritma perkalian baris-demi-baris. Dalam kasus ini, skema kaskade untuk menjumlahkan hasil perkalian elemen menurun dan operasi perkalian baris matriks dengan vektor dilakukan sepenuhnya pada prosesor tunggal. Skema komputasi yang diperoleh dengan pendekatan ini dapat ditentukan sebagai berikut:

Baris vektor dan matriks dikirim ke masing-masing prosesor yang tersedia;

Operasi perkalian baris matriks dengan vektor dilakukan dengan menggunakan algoritma sekuensial biasa.

Perlu dicatat bahwa ukuran matriks tidak boleh kelipatan dari jumlah prosesor, dan baris matriks tidak dapat dibagi rata di antara prosesor. Dalam situasi ini, dimungkinkan untuk menyimpang dari persyaratan keseragaman beban prosesor dan, untuk mendapatkan skema komputasi yang lebih sederhana, menerima aturan bahwa data ditempatkan pada prosesor hanya baris demi baris (yaitu, elemen dari satu baris matriks tidak dapat dibagi antara beberapa prosesor). Jumlah baris yang berbeda menghasilkan beban komputasi yang berbeda pada prosesor; dengan demikian, penyelesaian perhitungan (total durasi penyelesaian masalah) akan ditentukan oleh waktu pengoperasian prosesor yang paling banyak dimuat (dalam hal ini, beberapa prosesor mungkin menganggur karena habisnya bagian perhitungan mereka). Pemuatan prosesor yang tidak merata mengurangi efisiensi penggunaan MCS dan, sebagai hasil dari mempertimbangkan contoh ini, kita dapat menyimpulkan bahwa masalah keseimbangan

3. Pilihan topologi sistem komputer. Sesuai dengan sifat interaksi antarprosesor yang dilakukan dalam skema komputasi yang diusulkan, organisasi prosesor dalam bentuk bintang(lihat gambar 1.1). Sebuah prosesor kontrol dari topologi semacam itu dapat digunakan untuk memuat prosesor komputasi dengan data awal dan untuk menerima hasil perhitungan yang dilakukan.

perkalian matriks

Masalah mengalikan matriks dengan matriks didefinisikan oleh relasi

.

(untuk penyederhanaan, kita akan mengasumsikan bahwa matriks yang dikalikan dan adalah persegi dan memiliki orde ).

Analisis kemungkinan cara pelaksanaan paralel tugas ini dapat dilakukan dengan analogi dengan pertimbangan masalah perkalian matriks dengan vektor. Meninggalkan analisis semacam itu untuk studi independen, kami akan menunjukkan, dengan menggunakan contoh masalah perkalian matriks, penggunaan beberapa pendekatan umum yang memungkinkan kami untuk membentuk metode paralel untuk memecahkan masalah yang kompleks.

Definisi 1

Hasil kali matriks (C=AB) adalah operasi hanya untuk matriks A dan B yang konsisten, di mana jumlah kolom matriks A sama dengan jumlah baris matriks B:

C m × n = A m × p × B p × n

Contoh 1

Data matriks:

  • A = a (i j) dari dimensi m × n;
  • B = b (i j) p × n

Matriks C , yang elemen-elemennya c i j dihitung dengan rumus berikut:

c i j = a i 1 × b 1 j + a i 2 × b 2 j + . . . + a i p × b p j , i = 1 , . . . m , j = 1 , . . . m

Contoh 2

Mari kita hitung hasil kali AB=BA:

A = 1 2 1 0 1 2 , B = 1 0 0 1 1 1

Solusi menggunakan aturan perkalian matriks:

A 2 × 3 × B ⏟ 3 × 2 = 1 2 1 0 1 2 × 1 0 0 1 1 1 = 1 × 1 + 2 × 0 + 1 × 1 1 × 0 + 2 × 1 + 1 × 1 0 × 1 + 1 × 0 + 2 × 1 0 × 0 + 1 × 1 + 2 × 1 = = 2 3 2 3 2 × 2

B 3 × 2 × A 2 × 3 = 1 0 0 1 1 1 × 1 2 1 0 1 2 = 1 × 1 + 0 × 0 1 × 2 + 0 × 1 1 × 1 + 0 × 2 0 × 1 + 1 × 0 0 × 2 + 1 × 1 0 × 1 + 1 × 2 1 × 1 + 1 × 0 1 × 2 + 1 × 1 1 × 1 + 1 × 2 = 1 2 1 0 1 2 1 3 3 3 × 3

Produk A B dan B A ditemukan, tetapi matriks-matriks tersebut memiliki ukuran yang berbeda: A B tidak sama dengan B A.

Sifat-sifat perkalian matriks

Sifat perkalian matriks:

  • (A B) C = A (B C) - asosiatif perkalian matriks;
  • A (B + C) \u003d A B + A C - perkalian distributif;
  • (A + B) C \u003d A C + B C - distribusi perkalian;
  • (A B) = (λ A) B
Contoh 1

Periksa properti #1: (A B) C = A (B C) :

(A × B) × A = 1 2 3 4 × 5 6 7 8 × 1 0 0 2 = 19 22 43 50 × 1 0 0 2 = 19 44 43 100,

A (B × C) = 1 2 3 4 × 5 6 7 8 1 0 0 2 = 1 2 3 4 × 5 12 7 16 = 19 44 43 100 .

Contoh 2

Kami memeriksa properti No. 2: A (B + C) \u003d A B + A C:

A × (B + C) = 1 2 3 4 × 5 6 7 8 + 1 0 0 2 = 1 2 3 4 × 6 6 7 10 = 20 26 46 58,

A B + A C \u003d 1 2 3 4 × 5 6 7 8 + 1 2 3 4 × 1 0 0 2 \u003d 19 22 43 50 + 1 4 3 8 \u003d 20 26 46 58 .

Hasil kali tiga matriks

Hasil kali tiga matriks A B C dihitung dengan 2 cara:

  • cari A B dan kalikan dengan C: (A B) C;
  • atau cari dulu B C, lalu kalikan A (B C) .
Contoh 3

Kalikan matriks dengan 2 cara:

4 3 7 5 × - 28 93 38 - 126 × 7 3 2 1

Algoritma tindakan:

  • menemukan produk dari 2 matriks;
  • kemudian cari lagi hasil kali 2 matriks.

satu). A B \u003d 4 3 7 5 × - 28 93 38 - 126 \u003d 4 (- 28) + 3 × 38 4 × 93 + 3 (- 126) 7 (- 28) + 5 × 38 7 × 93 + 5 (- 126 ) = 2 - 6 - 6 21

2). A B C = (A B) C = 2 - 6 - 6 21 7 3 2 1 = 2 × 7 - 6 × 2 2 × 3 - 6 × 1 - 6 × 7 + 21 × 2 - 6 × 3 + 21 × 1 = 2 0 0 3 .

Kami menggunakan rumus A B C \u003d (A B) C:

satu). B C = - 28 93 38 - 126 7 3 2 1 = - 28 × 7 + 93 × 2 - 28 × 3 + 93 × 1 38 × 7 - 126 × 2 38 × 3 - 126 × 1 = - 10 9 14 - 12

2). A B C \u003d (A B) C \u003d 7 3 2 1 - 10 9 14 - 12 \u003d 4 (- 10) + 3 × 14 4 × 9 + 3 (- 12) 7 (- 10) + 5 × 14 7 × 9 + 5 (- 12) = 2 0 0 3

Jawaban: 4 3 7 5 - 28 93 38 - 126 7 3 2 1 = 2 0 0 3

Mengalikan Matriks dengan Angka

Definisi 2

Produk matriks A dengan angka k adalah matriks B \u003d A k dengan ukuran yang sama, yang diperoleh dari aslinya dengan mengalikan dengan jumlah tertentu dari semua elemennya:

b i , j = k × a i , j

Sifat perkalian matriks dengan bilangan:

  • 1 × A = A
  • 0 × A = matriks nol
  • k(A + B) = kA + kB
  • (k + n) A = k A + n A
  • (k×n)×A = k(n×A)
Contoh 4

Temukan produk dari matriks A \u003d 4 2 9 0 dengan 5.

5 A = 5 4 2 9 0 5 × 4 5 × 2 5 × 9 5 × 0 = 20 10 45 0

Perkalian matriks dengan vektor

Definisi 3

Untuk menemukan produk dari matriks dan vektor, Anda perlu mengalikan sesuai dengan aturan baris-demi-kolom:

  • jika Anda mengalikan matriks dengan vektor kolom, jumlah kolom dalam matriks harus sama dengan jumlah baris dalam vektor kolom;
  • hasil perkalian vektor kolom hanya vektor kolom:

A B = a 11 a 12 a 1 n a 21 a 22 a 2 n ⋯ ⋯ ⋯ a m 1 a m 2 ⋯ a m n b 1 b 2 b 1 n = a 11 × b 1 + a 12 × b 2 + + a 1 n × b n a 21 × b 1 + a 22 × b 2 + + a 2 n × b n ⋯ ⋯ a m 1 × b 1 + a m 2 × b 2 + + a m n × b n = c 1 c 2 c 1 m

  • jika Anda mengalikan matriks dengan vektor baris, maka matriks yang akan dikalikan harus secara eksklusif vektor kolom, dan jumlah kolom harus sesuai dengan jumlah kolom dalam vektor baris:

A B = a a a b b ⋯ b = a 1 × b 1 a 1 × b 2 a 1 × b n a 2 × b 1 a 2 × b 2 a 2 × b n ⋯ ⋯ ⋯ a n × b 1 a n × b 2 ⋯ a n × b n = c 11 c 12 c 1 n c 21 c 22 c 2 n ⋯ ⋯ c n 1 c n 2 c n n

Contoh 5

Tentukan hasil kali matriks A dan vektor kolom B:

A B \u003d 2 4 0 - 2 1 3 - 1 0 1 1 2 - 1 \u003d 2 × 1 + 4 × 2 + 0 × (- 1) - 2 × 1 + 1 × 2 + 3 × (- 1) - 1 × 1 + 0 × 2 + 1 × (- 1) = 2 + 8 + 0 - 2 + 2 - 3 - 1 + 0 - 1 = 10 - 3 - 2

Contoh 6

Tentukan hasil kali matriks A dan vektor baris B:

A \u003d 3 2 0 - 1, B \u003d - 1 1 0 2

A B = 3 2 0 1 × - 1 1 0 2 = 3 × (- 1) 3 × 1 3 × 0 3 × 2 2 × (- 1) 2 × 1 2 × 0 2 × 2 0 × (- 1) 0 × 1 0 × 0 0 × 2 1 × (- 1) 1 × 1 1 × 0 1 × 2 = - 3 3 0 6 - 2 2 0 4 0 0 0 0 - 1 1 0 2

Jawaban: A B \u003d - 3 3 0 6 - 2 2 0 4 0 0 0 0 - 1 1 0 2

Jika Anda melihat kesalahan dalam teks, harap sorot dan tekan Ctrl+Enter


Setiap vektor dapat dilihat sebagai matriks satu kolom atau satu baris. Matriks satu kolom akan disebut vektor kolom, dan matriks satu baris akan disebut vektor baris.

Jika A adalah matriks berukuran m*n, maka vektor kolom b berukuran n, dan vektor baris b berukuran m.

Jadi, untuk mengalikan matriks dengan vektor, vektor harus diperlakukan sebagai vektor kolom. Ketika mengalikan vektor dengan matriks, itu harus diperlakukan sebagai vektor baris.

perkalian matriks

ke vektor kompleks

Kami mendapatkan hasilnya

Seperti yang Anda lihat, dengan dimensi vektor tidak berubah, kita dapat memiliki dua solusi.

Saya ingin menarik perhatian Anda pada fakta bahwa matriks dalam versi pertama dan kedua, meskipun nilainya sama, sangat berbeda (mereka memiliki dimensi yang berbeda)

Dalam kasus pertama, vektor dianggap sebagai kolom dan kemudian diperlukan perkalian matriks dengan vektor, dan dalam kasus kedua kami memiliki vektor baris dan kemudian kami memiliki hasil kali vektor dan matriks.

Bot ini juga mengalikan vektor dan matriks yang memiliki nilai kompleks. Berdasarkan kalkulator yang lebih lengkap Perkalian Matriks dengan Nilai Kompleks Online

Sifat-sifat perkalian matriks-vektor

Matriks

kolom vektor

vektor baris

Nomor sewenang-wenang

1. Hasil kali matriks dengan jumlah vektor-vektor kolom sama dengan jumlah perkalian matriks dengan masing-masing vektor

2. Hasil kali jumlah vektor baris dengan matriks sama dengan jumlah hasil kali vektor dengan matriks

3. Faktor persekutuan dari suatu vektor dapat dikeluarkan dari perkalian suatu matriks dengan suatu vektor / suatu vektor dengan suatu matriks

4. Perkalian vektor baris dengan perkalian matriks dan vektor kolom sama dengan perkalian vektor baris dengan matriks dan vektor kolom.