การคูณเวกเตอร์ของเมทริกซ์ การคูณเมทริกซ์: ตัวอย่าง อัลกอริทึมของการกระทำ คุณสมบัติของผลิตภัณฑ์ ผลคูณของเมทริกซ์สามตัว

คำจำกัดความ 1

ผลคูณของเมทริกซ์ (C=AB) เป็นการดำเนินการสำหรับเมทริกซ์ที่สอดคล้องกัน A และ B เท่านั้น ซึ่งจำนวนคอลัมน์ของเมทริกซ์ A เท่ากับจำนวนแถวของเมทริกซ์ B:

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

ตัวอย่าง 1

ข้อมูลเมทริกซ์:

  • A = a (i j) ขนาด m × n;
  • B = b (i j) p × n

เมทริกซ์ C ซึ่งมีองค์ประกอบ c i j คำนวณโดยสูตรต่อไปนี้:

c i j = a i 1 × b 1 j + a i 2 × b 2 j + . . . + a i p × b p j , ผม = 1 , . . . ม , เจ = 1 , . . . ม

ตัวอย่าง 2

ลองคำนวณผลิตภัณฑ์ AB=BA:

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

วิธีแก้ปัญหาโดยใช้กฎการคูณเมทริกซ์:

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

พบผลิตภัณฑ์ A B และ B A แต่เป็นเมทริกซ์ที่มีขนาดต่างกัน: A B ไม่เท่ากับ B A

คุณสมบัติของการคูณเมทริกซ์

คุณสมบัติการคูณเมทริกซ์:

  • (A B) C = A (BC) - การเชื่อมโยงของการคูณเมทริกซ์;
  • A (B + C) \u003d A B + A C - การคูณแบบกระจาย;
  • (A + B) C \u003d A C + B C - การกระจายของการคูณ;
  • λ (A B) = (λ A) B
ตัวอย่าง 1

ตรวจสอบคุณสมบัติ #1: (A B) C = A (BC) :

(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 .

ตัวอย่าง 2

เราตรวจสอบคุณสมบัติหมายเลข 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 .

ผลคูณของเมทริกซ์สามตัว

ผลคูณของเมทริกซ์สาม A B C คำนวณได้ 2 วิธี:

  • หา AB และคูณด้วย C: (AB) C;
  • หรือหา B C ​​ก่อน แล้วคูณ A (BC)
ตัวอย่างที่ 3

คูณเมทริกซ์ใน 2 วิธี:

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

อัลกอริทึมการดำเนินการ:

  • หาผลคูณของเมทริกซ์ 2 ตัว;
  • แล้วหาผลคูณของเมทริกซ์ 2 ตัวอีกครั้ง

หนึ่ง). 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 .

เราใช้สูตร A B C \u003d (AB) C:

หนึ่ง). BC = - 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

คำตอบ: 4 3 7 5 - 28 93 38 - 126 7 3 2 1 = 2 0 0 3

การคูณเมทริกซ์ด้วยตัวเลข

คำจำกัดความ 2

ผลคูณของเมทริกซ์ A ด้วยจำนวน k คือเมทริกซ์ B \u003d A k ที่มีขนาดเท่ากันซึ่งได้มาจากต้นฉบับโดยการคูณด้วยจำนวนที่กำหนดขององค์ประกอบทั้งหมด:

ข ผม , เจ = k × ผม , j

คุณสมบัติของการคูณเมทริกซ์ด้วยตัวเลข:

  • 1 × A = A
  • 0 × A = เมทริกซ์ศูนย์
  • k(A + B) = kA + kB
  • (k + n) A = k A + n A
  • (k×n)×A = k(n×A)
ตัวอย่างที่ 4

ค้นหาผลคูณของเมทริกซ์ A \u003d 4 2 9 0 คูณ 5

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

การคูณเมทริกซ์ด้วยเวกเตอร์

คำจำกัดความ 3

ในการหาผลคูณของเมทริกซ์และเวกเตอร์ คุณต้องคูณตามกฎแบบแถวต่อคอลัมน์:

  • หากคุณคูณเมทริกซ์ด้วยเวกเตอร์คอลัมน์ จำนวนคอลัมน์ในเมทริกซ์ต้องตรงกับจำนวนแถวในเวกเตอร์คอลัมน์
  • ผลลัพธ์ของการคูณเวกเตอร์คอลัมน์เป็นเพียงเวกเตอร์คอลัมน์:

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 นาที

  • หากคุณคูณเมทริกซ์ด้วยเวกเตอร์แถว เมทริกซ์ที่จะคูณจะต้องเป็นเวกเตอร์คอลัมน์เท่านั้น และจำนวนคอลัมน์ต้องตรงกับจำนวนคอลัมน์ในเวกเตอร์แถว:

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 ⋯ ก n × ข น = c 11 c 12 ⋯ c 1 n c 21 c 22 ⋯ c 2 n ⋯ ⋯ ⋯ ⋯ ...

ตัวอย่างที่ 5

ค้นหาผลคูณของเมทริกซ์ A และเวกเตอร์คอลัมน์ 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

ตัวอย่างที่ 6

ค้นหาผลคูณของเมทริกซ์ A และเวกเตอร์แถว 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

คำตอบ: A B \u003d - 3 3 0 6 - 2 2 0 4 0 0 0 0 - 1 1 0 2

หากคุณสังเกตเห็นข้อผิดพลาดในข้อความ โปรดไฮไลต์แล้วกด Ctrl+Enter

ระบบ MatLab ดำเนินการทางคณิตศาสตร์กับเมทริกซ์และเวกเตอร์ อันดับแรก พิจารณาการดำเนินการอย่างง่ายของการบวกและการคูณเมทริกซ์และเวกเตอร์ ให้เวกเตอร์สองตัว

ก = ; % แถวเวกเตอร์
ข = ; % เวกเตอร์คอลัมน์

แล้วการคูณของเวกเตอร์สองตัวนี้สามารถเขียนเป็น

c = a*b; %c=1+2+3+4+5=16
d = b*a; %d - เมทริกซ์ขององค์ประกอบ 5x5

ตามการดำเนินการกับเวกเตอร์ การคูณเวกเตอร์แถวด้วยเวกเตอร์คอลัมน์จะให้ตัวเลข และการคูณเวกเตอร์คอลัมน์ด้วยเวกเตอร์แถวจะให้เมทริกซ์สองมิติ ซึ่งเป็นผลมาจากการคำนวณในตัวอย่างข้างต้น กล่าวคือ

การบวกและการลบของเวกเตอร์สองตัวเขียนเป็น

a1 = ;
a2 = ;
ค = a1+a2; % ค = ;
ค = a2-a1; % ค = ;

โปรดทราบว่าการบวกและการลบสามารถทำได้ระหว่างเวกเตอร์คอลัมน์สองรายการหรือเวกเตอร์สองแถว มิฉะนั้น MatLab จะออกข้อความแสดงข้อผิดพลาดเพราะ ไม่สามารถเพิ่มเวกเตอร์ประเภทต่าง ๆ ได้ กรณีนี้เกิดขึ้นกับการคำนวณทางคณิตศาสตร์ที่ผิดกฎหมายทั้งหมด: หากคำนวณไม่ได้ ระบบ MatLab จะรายงานข้อผิดพลาดและโปรแกรมจะสิ้นสุดในบรรทัดที่เกี่ยวข้อง

ในทำนองเดียวกัน การดำเนินการของการคูณและการบวกระหว่างเมทริกซ์จะดำเนินการ:

เอ = ;
B = คน (3);
C=A+B; % การบวกเมทริกซ์สองตัวที่มีขนาดเท่ากัน
ดี=เอ+5; % การบวกเมทริกซ์และตัวเลข
E=A*B; % การคูณเมทริกซ์ A โดย B
F=B*A; % การคูณเมทริกซ์ B โดย A
G=5*A; % การคูณเมทริกซ์ด้วยตัวเลข

การดำเนินการคำนวณเมทริกซ์ผกผัน เช่นเดียวกับทรานสโพสเมทริกซ์และเวกเตอร์ เขียนได้ดังนี้:

ก = ; % แถวเวกเตอร์
ข = เอ'; % เวกเตอร์คอลัมน์ที่เกิดขึ้นโดย
% ทรานสโพสของเวกเตอร์แถว a
เอ = ; % เมทริกซ์ 3x3 องค์ประกอบ
B = a*A; %b= - เวกเตอร์แถว
C=A*b; % C = - เวกเตอร์คอลัมน์
D = a*A*a'; % D = 45 – จำนวน, ผลรวมของเมทริกซ์ A
อี = เอ'; % E คือเมทริกซ์ทรานสโพส A
F = inv(A); % F - เมทริกซ์ผกผัน A
G = A^-1; % G - เมทริกซ์ผกผัน A

จากตัวอย่างข้างต้น จะเห็นได้ว่าการดำเนินการย้ายเมทริกซ์และเวกเตอร์แสดงด้วยสัญลักษณ์ ' (อะพอสทรอฟี) ซึ่งอยู่หลังชื่อของเวกเตอร์หรือเมทริกซ์ การคำนวณเมทริกซ์ผกผันสามารถทำได้โดยการเรียกใช้ฟังก์ชัน inv() หรือโดยการเพิ่มเมทริกซ์เป็นกำลัง -1 ผลลัพธ์ในทั้งสองกรณีจะเหมือนกันและมีวิธีการคำนวณสองวิธีเพื่อความสะดวกในการใช้งานเมื่อใช้อัลกอริธึมต่างๆ

หากในระหว่างการคำนวณ จำเป็นต้องคูณ หาร หรือเพิ่มองค์ประกอบของเวกเตอร์หรือองค์ประกอบเมทริกซ์ตามองค์ประกอบ ตัวดำเนินการต่อไปนี้จะใช้สำหรับสิ่งนี้:

.* - การคูณตามองค์ประกอบ;
./ และ .\ - การแบ่งองค์ประกอบ;
.^ - การยกกำลังตามองค์ประกอบ

พิจารณาการทำงานของตัวดำเนินการเหล่านี้ในตัวอย่างต่อไปนี้

ก = ; % แถวเวกเตอร์
ข = ; % แถวเวกเตอร์
c = ก.*ข; %c=
A = คน (3); % เมทริกซ์ 3x3 ประกอบด้วยตัว
ข = ; % เมทริกซ์ 3x3
C = A.*B; % เมทริกซ์ 3x3 ประกอบด้วย
D = A./B; % เมทริกซ์ 3x3 ประกอบด้วย
E = A.\B; % เมทริกซ์ 3x3 ประกอบด้วย
F = A.^2; % กำลังสองขององค์ประกอบเมทริกซ์ A

เพื่อสรุปส่วนนี้ ให้พิจารณาฟังก์ชันบางอย่างที่เป็นประโยชน์เมื่อทำงานกับเวกเตอร์และเมทริกซ์

ในการค้นหาค่าสูงสุดขององค์ประกอบเวกเตอร์ จะใช้ฟังก์ชันมาตรฐาน max() ซึ่งคืนค่าสูงสุดที่พบขององค์ประกอบและตำแหน่งขององค์ประกอบ (ดัชนี):

ก = ;
= สูงสุด (a); % v = 6, ผม = 2;

v = สูงสุด (a); %v = 6;

ตัวอย่างนี้แสดงสอง วิธีทางที่แตกต่างเรียกใช้ฟังก์ชัน max() ในกรณีแรก จะกำหนดทั้งค่าสูงสุดขององค์ประกอบและดัชนีในเวกเตอร์ และในกรณีที่สอง จะกำหนดเฉพาะค่าสูงสุดขององค์ประกอบเท่านั้น

ในกรณีของเมทริกซ์ ฟังก์ชันนี้จะกำหนดค่าสูงสุดในคอลัมน์ ดังที่แสดงในตัวอย่างด้านล่าง:

เอ = ;
= สูงสุด (A); % V=, ฉัน=
วี = สูงสุด (A); %V=

ไวยากรณ์เต็มรูปแบบของฟังก์ชัน max() สามารถพบได้โดยการพิมพ์คำสั่งในหน้าต่างคำสั่ง MatLab

ช่วย<название функции>

ฟังก์ชัน min() ทำงานในลักษณะเดียวกัน ซึ่งจะกำหนดค่าต่ำสุดขององค์ประกอบเวกเตอร์หรือเมทริกซ์และดัชนี

ฟังก์ชันที่มีประโยชน์อีกอย่างหนึ่งสำหรับการทำงานกับเมทริกซ์และเวกเตอร์คือฟังก์ชัน sum() ซึ่งคำนวณผลรวมของค่าขององค์ประกอบของเวกเตอร์หรือคอลัมน์ของเมทริกซ์:

ก = ;
s = ผลรวม (a); %s = 3+5+4+2+1=15
เอ = ;
S1 = ผลรวม (A); %S1=
S2 = ผลรวม (ผลรวม (A)); % S2=39

เมื่อคำนวณผลรวม S2 ผลรวมของค่าองค์ประกอบของเมทริกซ์ A จะถูกคำนวณโดยคอลัมน์ก่อนแล้วจึงค่อยคำนวณเป็นแถว เป็นผลให้ตัวแปร S2 มีผลรวมของค่าขององค์ประกอบทั้งหมดของเมทริกซ์ A

ในการจัดเรียงค่าขององค์ประกอบของเวกเตอร์หรือเมทริกซ์ในลำดับจากน้อยไปมากหรือจากมากไปน้อย ให้ใช้ฟังก์ชัน sort() ดังนี้:

ก = ;

b1 = เรียงลำดับ (a); %b1=
b2 = เรียงลำดับ (a, 'ลง'); %b2=
b3 = เรียงลำดับ (a, 'ขึ้น'); %b3=

สำหรับเมทริกซ์

เอ = ;
B1 = เรียงลำดับ (A); %B1=
B2 = เรียงลำดับ (A, 'ลง'); %B2=

ในปัญหาในทางปฏิบัติหลายอย่าง มักจำเป็นต้องค้นหาองค์ประกอบเฉพาะในเวกเตอร์หรือเมทริกซ์ สิ่งนี้สามารถทำได้โดยใช้ฟังก์ชัน find() มาตรฐาน ซึ่งใช้เป็นอาร์กิวเมนต์เงื่อนไขตามที่พบองค์ประกอบที่ต้องการ ตัวอย่างเช่น:

ก = ;
b1 = ค้นหา(a == 2); %b1 = 4 - ดัชนีองค์ประกอบ 2
b2 = ค้นหา (a ~= 2); % b2 = - ดัชนีที่ไม่มี 2
b3 = ค้นหา (a > 3); %b3=

ในตัวอย่างข้างต้น สัญลักษณ์ '==' หมายถึงการตรวจสอบความเท่าเทียมกัน และสัญลักษณ์ '~=' จะทำการตรวจสอบความไม่เท่าเทียมกันของค่าขององค์ประกอบของเวกเตอร์ a รายละเอียดเพิ่มเติมเกี่ยวกับโอเปอเรเตอร์เหล่านี้จะอธิบายไว้ในส่วนเกี่ยวกับโอเปอเรเตอร์แบบมีเงื่อนไข

ฟังก์ชันที่มีประโยชน์อีกอย่างหนึ่งสำหรับการทำงานกับเวกเตอร์และเมทริกซ์คือฟังก์ชัน mean() สำหรับการคำนวณค่าเฉลี่ยเลขคณิต ซึ่งทำงานดังนี้:

ก = ;
m = ค่าเฉลี่ย (a); %m = 3
เอ = ;
M1 = ค่าเฉลี่ย (A); %M1=
M2 = ค่าเฉลี่ย (ค่าเฉลี่ย (A)); % M2 = 4.333

ในบทเรียนที่แล้ว เราวิเคราะห์กฎสำหรับการบวกและลบเมทริกซ์ นี่เป็นการดำเนินการง่ายๆ ที่นักเรียนส่วนใหญ่เข้าใจได้ทันที

อย่างไรก็ตามคุณชื่นชมยินดีในช่วงต้น ของแจกหมดแล้ว - มาต่อกันที่การคูณกัน ฉันจะเตือนคุณทันที: การคูณเมทริกซ์สองตัวไม่ใช่การคูณตัวเลขในเซลล์ที่มีพิกัดเดียวกัน อย่างที่คุณคิด ทุกอย่างสนุกมากขึ้นที่นี่ และคุณต้องเริ่มต้นด้วยคำจำกัดความเบื้องต้น

เมทริกซ์ที่สม่ำเสมอ

ลักษณะที่สำคัญที่สุดอย่างหนึ่งของเมทริกซ์คือขนาดของมัน เราได้พูดถึงเรื่องนี้เป็นร้อยครั้งแล้ว: $A=\left[ m\times n \right]$ หมายความว่าเมทริกซ์มี $m$ แถวและ $n$ คอลัมน์พอดี เราได้พูดคุยกันแล้วว่าจะไม่สับสนระหว่างแถวกับคอลัมน์ ตอนนี้มีอย่างอื่นที่สำคัญ

คำนิยาม. เมทริกซ์ในรูปแบบ $A=\left[ m\times n \right]$ and $B=\left[ n\times k \right]$ ซึ่งจำนวนคอลัมน์ในเมทริกซ์แรกจะเท่ากับ จำนวนแถวในวินาทีเรียกว่าสม่ำเสมอ

อีกครั้ง: จำนวนคอลัมน์ในเมทริกซ์แรกเท่ากับจำนวนแถวในวินาที! จากนี้เราได้ข้อสรุปสองประการพร้อมกัน:

  1. เราสนใจลำดับของเมทริกซ์ ตัวอย่างเช่น เมทริกซ์ $A=\left[ 3\times 2 \right]$ และ $B=\left[ 2\times 5 \right]$ มีความสอดคล้องกัน (2 คอลัมน์ในเมทริกซ์แรกและ 2 แถวในวินาที) แต่ในทางกลับกัน เมทริกซ์ $B=\left[ 2\times 5 \right]$ and $A=\left[ 3\times 2 \right]$ ไม่สอดคล้องกันอีกต่อไป (5 คอลัมน์ในเมทริกซ์แรกคือ มันไม่ใช่ 3 แถวในวินาที )
  2. ความสม่ำเสมอนั้นง่ายต่อการตรวจสอบว่าคุณเขียนมิติข้อมูลทั้งหมดทีละส่วนหรือไม่ ใช้ตัวอย่างจากย่อหน้าก่อนหน้า: "3 2 2 5" - ตัวเลขเดียวกันอยู่ตรงกลาง ดังนั้นเมทริกซ์จึงสอดคล้องกัน แต่ไม่ตกลง "2 5 3 2" เพราะมีตัวเลขอยู่ตรงกลางต่างกัน

นอกจากนี้ ดูเหมือนว่ากัปตันจะพูดเป็นนัยว่าเมทริกซ์กำลังสองที่มีขนาดเท่ากัน $\left[ n\times n \right]$ จะสอดคล้องกันเสมอ

ในวิชาคณิตศาสตร์ เมื่อลำดับการแจงนับของวัตถุมีความสำคัญ (เช่น ในคำจำกัดความที่กล่าวข้างต้น ลำดับของเมทริกซ์มีความสำคัญ) เรามักพูดถึงคู่ที่มีลำดับ เราพบพวกเขาที่โรงเรียน: ฉันคิดว่าไม่ใช่เรื่องง่ายที่พิกัด $\left(1;0 \right)$ และ $\left(0;1 \right)$ กำหนดจุดต่างๆ บนเครื่องบิน

ดังนั้น: พิกัดยังเป็นคู่ที่เรียงลำดับซึ่งประกอบขึ้นจากตัวเลข แต่ไม่มีอะไรขัดขวางไม่ให้คุณสร้างเมทริกซ์คู่นี้ จากนั้นจะเป็นไปได้ที่จะพูดว่า: "คู่เมทริกซ์ที่สั่งซื้อ $\left(A;B \right)$ จะสอดคล้องกันหากจำนวนคอลัมน์ในเมทริกซ์แรกเท่ากับจำนวนแถวในวินาที "

แล้วไงต่อ?

ความหมายของการคูณ

พิจารณาเมทริกซ์ที่สอดคล้องกันสองตัว: $A=\left[ m\times n \right]$ and $B=\left[ n\times k \right]$ และเรากำหนดการดำเนินการของการคูณสำหรับพวกเขา

คำนิยาม. ผลคูณของเมทริกซ์ที่สอดคล้องกันสองตัว $A=\left[ m\times n \right]$ และ $B=\left[ n\times k \right]$ เป็นเมทริกซ์ใหม่ $C=\left[ m\times k \ ขวา] $ องค์ประกอบที่คำนวณตามสูตร:

\[\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)\]

ผลิตภัณฑ์ดังกล่าวแสดงด้วยวิธีมาตรฐาน: $C=A\cdot B$

สำหรับผู้ที่เห็นคำจำกัดความนี้เป็นครั้งแรก มีคำถามสองข้อเกิดขึ้นทันที:

  1. นี่มันเกมเถื่อนอะไรกัน?
  2. ทำไมมันจึงเป็นเรื่องยาก?

อย่างแรกเลย มาเริ่มกันที่คำถามแรก ดัชนีทั้งหมดนี้หมายความว่าอย่างไร และจะไม่ทำผิดพลาดเมื่อทำงานกับเมทริกซ์จริงได้อย่างไร?

ก่อนอื่น เราสังเกตว่าเส้นยาวสำหรับการคำนวณ $((c)_(i;j))$ (ใส่เครื่องหมายอัฒภาคระหว่างดัชนีโดยเฉพาะเพื่อไม่ให้สับสน แต่คุณไม่จำเป็นต้องใส่เข้าไป ทั่วไป - ตัวฉันเองเบื่อที่จะพิมพ์สูตรในคำจำกัดความ) เดือดลงไปเป็นกฎง่ายๆ:

  1. ใช้แถวที่ $i$-th ในเมทริกซ์แรก
  2. ใช้คอลัมน์ $j$-th ในเมทริกซ์ที่สอง
  3. เราได้ตัวเลขสองลำดับ เราคูณองค์ประกอบของลำดับเหล่านี้ด้วยตัวเลขเดียวกัน แล้วบวกผลลัพธ์ที่ได้

กระบวนการนี้เข้าใจง่ายจากภาพ:


แบบแผนสำหรับการคูณเมทริกซ์สองตัว

อีกครั้ง: เราแก้ไขแถว $i$ ในเมทริกซ์แรก คอลัมน์ $j$ ในเมทริกซ์ที่สอง คูณองค์ประกอบด้วยตัวเลขเดียวกัน แล้วบวกผลลัพธ์ที่ได้ - เราได้ $((c)_(ij) ))$. ดังนั้นสำหรับ $1\le i\le m$ และ $1\le j\le k$ ทั้งหมด เหล่านั้น. จะมี $m\times k$ "วิปริต" ดังกล่าวทั้งหมด

อันที่จริง เราได้พบกับการคูณเมทริกซ์ในหลักสูตรของโรงเรียนแล้ว ในรูปแบบที่ถูกตัดทอนอย่างมากเท่านั้น ให้เวกเตอร์ได้รับ:

\[\begin(จัดตำแหน่ง) & \vec(a)=\left(((x)_(a));((y)_(a));((z)_(a)) \right); \\ & \overrightarrow(b)=\left(((x)_(b));((y)_(b));((z)_(b)) \right). \\ \end(จัดตำแหน่ง)\]

จากนั้นผลคูณสเกลาร์จะเป็นผลรวมของผลิตภัณฑ์ที่เป็นคู่พอดี:

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

โดยพื้นฐานแล้วในสิ่งเหล่านั้น ปีที่ห่างไกลเมื่อต้นไม้เขียวขึ้นและท้องฟ้าสว่างขึ้น เราก็คูณเวกเตอร์แถว $\overrightarrow(a)$ ด้วยเวกเตอร์คอลัมน์ $\overrightarrow(b)$

วันนี้ไม่มีอะไรเปลี่ยนแปลง แค่ตอนนี้มีเวกเตอร์แถวและคอลัมน์เหล่านี้มากขึ้น

แต่พอทฤษฏี! มาดูกันเลย ตัวอย่างจริง. เริ่มจากกรณีที่ง่ายที่สุด - เมทริกซ์กำลังสอง

การคูณเมทริกซ์กำลังสอง

ภารกิจที่ 1 ทำการคูณ:

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

วิธีการแก้. ดังนั้น เรามีเมทริกซ์สองตัว: $A=\left[ 2\times 2 \right]$ and $B=\left[ 2\times 2 \right]$. เป็นที่ชัดเจนว่าพวกมันสอดคล้องกัน (เมทริกซ์กำลังสองที่มีขนาดเท่ากันจะสอดคล้องกันเสมอ) ดังนั้นเราจึงทำการคูณ:

\[\begin(align) & \left[ \begin(array)(*(35)(r)) 1 & 2 \\ -3 & 4 \\\end(array) \right]\cdot \left[ \ Begin(array)(*(35)(r)) -2 & 4 \\ 3 & 1 \\\end(array) \right]=\left[ \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 \\\ end(array)\right]. \end(จัดตำแหน่ง)\]

นั่นคือทั้งหมด!

คำตอบ: $\left[ \begin(array)(*(35)(r))4 & 6 \\ 18 & -8 \\\end(array) \right]$.

ภารกิจที่ 2 ทำการคูณ:

\[\left[ \begin(matrix) 1 & 3 \\ 2 & 6 \\\end(matrix) \right]\cdot \left[ \begin(array)(*(35)(r))9 & 6 \\ -3 & -2 \\\end(อาร์เรย์) \right]\]

วิธีการแก้. อีกครั้ง เมทริกซ์ที่สอดคล้องกัน ดังนั้นเราจึงดำเนินการดังต่อไปนี้:\[\]

\[\begin(จัดตำแหน่ง) & \left[ \begin(matrix) 1 & 3 \\ 2 & 6 \\\end(matrix) \right]\cdot \left[ \begin(array)(*(35)( r)) 9 & 6 \\ -3 & -2 \\\end(array) \right]=\left[ \begin(array)(*(35)(r)) 1\cdot 9+3\cdot \ ซ้าย(-3 \right) & 1\cdot 6+3\cdot \left(-2 \right) \\ 2\cdot 9+6\cdot \left(-3 \right) & 2\cdot 6+6\ cdot \left(-2 \right) \\\end(array) \right]= \\ & =\left[ \begin(matrix) 0 & 0 \\ 0 & 0 \\\end(matrix) \right] . \end(จัดตำแหน่ง)\]

อย่างที่คุณเห็น ผลลัพธ์คือเมทริกซ์ที่เต็มไปด้วยศูนย์

คำตอบ: $\left[ \begin(matrix) 0 & 0 \\ 0 & 0 \\\end(matrix) \right]$.

จากตัวอย่างข้างต้น เห็นได้ชัดว่าการคูณเมทริกซ์ไม่ใช่การดำเนินการที่ซับซ้อน อย่างน้อยสำหรับเมทริกซ์ตาราง 2 คูณ 2

ในกระบวนการคำนวณ เราได้รวบรวมเมทริกซ์ระดับกลาง โดยเราจะลงสีว่าตัวเลขใดรวมอยู่ในเซลล์ใดเซลล์หนึ่งโดยตรง นี่คือสิ่งที่ควรทำเมื่อแก้ปัญหาจริง

คุณสมบัติพื้นฐานของผลิตภัณฑ์เมทริกซ์

โดยสังเขป. การคูณเมทริกซ์:

  1. ไม่สับเปลี่ยน: $A\cdot B\ne B\cdot A$ โดยทั่วไป แน่นอนว่ามีเมทริกซ์พิเศษที่ $A\cdot B=B\cdot A$ เท่ากัน (เช่น ถ้า $B=E$ เป็นเมทริกซ์เอกลักษณ์) แต่ในกรณีส่วนใหญ่ วิธีนี้ใช้ไม่ได้ผล ;
  2. เชื่อมโยง: $\left(A\cdot B \right)\cdot C=A\cdot \left(B\cdot C \right)$. ไม่มีตัวเลือกที่นี่: เมทริกซ์ที่อยู่ติดกันสามารถคูณได้โดยไม่ต้องกังวลเกี่ยวกับสิ่งที่อยู่ทางซ้ายและทางขวาของเมทริกซ์สองตัวนี้
  3. แจกจ่าย: $A\cdot \left(B+C \right)=A\cdot B+A\cdot C$ and $\left(A+B \right)\cdot C=A\cdot C+B\cdot C $

และตอนนี้ - เหมือนกันทั้งหมด แต่ในรายละเอียดเพิ่มเติม

การคูณเมทริกซ์นั้นเหมือนกับการคูณจำนวนแบบคลาสสิก แต่มีข้อแตกต่าง ที่สำคัญที่สุดคือ การคูณเมทริกซ์โดยทั่วไปแล้วไม่ใช่การสับเปลี่ยน.

พิจารณาเมทริกซ์จากปัญหาที่ 1 อีกครั้ง เรารู้ผลิตภัณฑ์โดยตรงของพวกเขาแล้ว:

\[\left[ \begin(array)(*(35)(r)) 1 & 2 \\ -3 & 4 \\\end(array) \right]\cdot \left[ \begin(array)(* (35)(r)) -2 & 4 \\ 3 & 1 \\\end(array) \right]=\left[ \begin(array)(*(35)(r))4 & 6 \\ 18 & -8 \\\end(อาร์เรย์) \right]\]

แต่ถ้าเราสลับเมทริกซ์ เราจะได้ผลลัพธ์ที่ต่างไปจากเดิมอย่างสิ้นเชิง:

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

ปรากฎว่า $A\cdot B\ne B\cdot A$. นอกจากนี้ การคูณถูกกำหนดเฉพาะสำหรับเมทริกซ์ที่สอดคล้องกัน $A=\left[ m\times n \right]$ และ $B=\left[ n\times k \right]$ แต่ไม่มีใครรับประกันว่าจะยังคงอยู่ สม่ำเสมอ หากมีการสลับกัน ตัวอย่างเช่น เมทริกซ์ $\left[ 2\times 3 \right]$ และ $\left[ 3\times 5 \right]$ จะค่อนข้างสอดคล้องกันในลำดับนี้ แต่เมทริกซ์เดียวกัน $\left[ 3\times 5 \ right] $ และ $\left[ 2\times 3 \right]$ เขียนในลำดับที่กลับกันไม่ตรงกันอีกต่อไป ความเศร้า :(

ในบรรดาเมทริกซ์กำลังสองของขนาดที่กำหนด $n$ จะมีเมทริกซ์ที่ให้ผลลัพธ์เหมือนกันทั้งเมื่อคูณโดยตรงและในลำดับที่กลับกัน วิธีอธิบายเมทริกซ์ดังกล่าวทั้งหมด (และจำนวนโดยทั่วไป) เป็นหัวข้อสำหรับบทเรียนแยกต่างหาก วันนี้เราจะไม่พูดถึงมัน :)

อย่างไรก็ตาม การคูณเมทริกซ์เป็นแบบเชื่อมโยง:

\[\left(A\cdot B \right)\cdot C=A\cdot \left(B\cdot C \right)\]

ดังนั้น เมื่อคุณต้องการคูณเมทริกซ์หลายตัวในแถวเดียวในคราวเดียว ไม่จำเป็นต้องทำก่อนเวลาเลย: เป็นไปได้ทีเดียวที่เมทริกซ์ที่อยู่ติดกันบางตัวเมื่อคูณแล้วจะให้ผลลัพธ์ที่น่าสนใจ ตัวอย่างเช่น เมทริกซ์ศูนย์ ดังในปัญหาที่ 2 ที่กล่าวถึงข้างต้น

ในปัญหาจริง ส่วนใหญ่มักจะต้องคูณเมทริกซ์กำลังสองของขนาด $\left[ n\times n \right]$ ชุดของเมทริกซ์ดังกล่าวทั้งหมดแสดงด้วย $((M)^(n))$ (เช่น รายการ $A=\left[ n\times n \right]$ และ \ หมายถึงสิ่งเดียวกัน) และจะ แน่นอนมีเมทริกซ์ $E$ ซึ่งเรียกว่าเมทริกซ์เอกลักษณ์

คำนิยาม. เมทริกซ์เอกลักษณ์ของขนาด $n$ เป็นเมทริกซ์ $E$ ซึ่งสำหรับเมทริกซ์สี่เหลี่ยมใดๆ $A=\left[ n\times n \right]$ จะคงความเสมอภาคไว้:

เมทริกซ์ดังกล่าวจะมีลักษณะเหมือนกันเสมอ: มีหน่วยบนเส้นทแยงมุมหลัก และมีศูนย์ในเซลล์อื่นๆ ทั้งหมด

\[\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)\]

พูดอีกอย่างก็คือ หากคุณต้องการคูณเมทริกซ์หนึ่งตัวด้วยผลรวมของอีกสองตัว คุณสามารถคูณมันด้วย "อีกสอง" แต่ละตัว แล้วบวกผลลัพธ์เข้าด้วยกัน ในทางปฏิบัติ คุณมักจะต้องดำเนินการผกผัน: เราสังเกตเห็นเมทริกซ์เดียวกัน นำออกจากวงเล็บ ทำการบวก และทำให้ชีวิตของเราง่ายขึ้น :)

สังเกตว่าเพื่ออธิบายการกระจาย เราต้องเขียนสูตรสองสูตร: โดยที่ผลรวมอยู่ในตัวประกอบที่สองและโดยที่ผลรวมอยู่ในตัวแรก นี่เป็นเพราะความจริงที่ว่าการคูณเมทริกซ์ไม่ใช่แบบสับเปลี่ยน (และโดยทั่วไปแล้ว ในพีชคณิตที่ไม่สลับสับเปลี่ยน มีเรื่องตลกมากมายที่ไม่เคยนึกถึงเมื่อทำงานกับตัวเลขธรรมดาด้วยซ้ำ) ตัวอย่างเช่น ถ้าคุณจำเป็นต้องจดคุณสมบัตินี้ระหว่างการสอบ อย่าลืมเขียนทั้งสองสูตร ไม่เช่นนั้นครูอาจโกรธเล็กน้อย

โอเค ทั้งหมดนี้เป็นนิทานเกี่ยวกับเมทริกซ์กำลังสอง แล้วสี่เหลี่ยมล่ะ?

กรณีเมทริกซ์สี่เหลี่ยม

แต่ไม่มีอะไร - ทุกอย่างเหมือนกับสี่เหลี่ยมจัตุรัส

ภารกิจที่ 3 ทำการคูณ:

\[\left[ \begin(matrix) \begin(matrix) 5 \\ 2 \\ 3 \\\end(matrix) & \begin(matrix) 4 \\ 5 \\ 1 \\\end(matrix) \ \\end(เมทริกซ์) \right]\cdot \left[ \begin(array)(*(35)(r)) -2 & 5 \\ 3 & 4 \\\end(array) \right]\]

วิธีการแก้. เรามีเมทริกซ์สองตัว: $A=\left[ 3\times 2 \right]$ and $B=\left[ 2\times 2 \right]$. มาเขียนตัวเลขที่ระบุขนาดในแถวกัน:

อย่างที่คุณเห็น ตัวเลขตรงกลางสองตัวนั้นเหมือนกัน ซึ่งหมายความว่าเมทริกซ์มีความสม่ำเสมอและสามารถคูณได้ และที่เอาต์พุตเราได้รับเมทริกซ์ $C=\left[ 3\times 2 \right]$:

\[\begin(จัดตำแหน่ง) & \left[ \begin(matrix) \begin(matrix) 5 \\ 2 \\ 3 \\\end(matrix) & \begin(matrix) 4 \\ 5 \\ 1 \\ \end(เมทริกซ์) \\\end(เมทริกซ์) \right]\cdot \left[ \begin(array)(*(35)(r)) -2 & 5 \\ 3 & 4 \\\end(array) \right]=\left[ \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(อาร์เรย์)\right]. \end(จัดตำแหน่ง)\]

ทุกอย่างชัดเจน: เมทริกซ์สุดท้ายมี 3 แถว 2 คอลัมน์ ค่อนข้าง $=\left[ 3\times 2 \right]$.

คำตอบ: $\left[ \begin(array)(*(35)(r)) \begin(array)(*(35)(r)) 2 \\ 11 \\ -3 \\\end(array) & \begin(เมทริกซ์) 41 \\ 30 \\ 19 \\\end(เมทริกซ์) \\\end(อาร์เรย์) \right]$

ตอนนี้ให้พิจารณางานฝึกอบรมที่ดีที่สุดงานหนึ่งสำหรับผู้ที่เพิ่งเริ่มทำงานกับเมทริกซ์ ในนั้นคุณไม่จำเป็นต้องคูณสองเม็ด แต่ก่อนอื่นให้พิจารณา: การคูณดังกล่าวได้รับอนุญาตหรือไม่?

ปัญหาที่ 4. ค้นหาผลคูณที่เป็นไปได้ทั้งหมดของเมทริกซ์:

\\]; $B=\left[ \begin(matrix) \begin(matrix) 0 \\ 2 \\ 0 \\ 4 \\\end(matrix) & \begin(matrix) 1 \\ 0 \\ 3 \\ 0 \ \\end(เมทริกซ์) \\\end(เมทริกซ์) \right]$; $C=\left[ \begin(matrix)0 & 1 \\ 1 & 0 \\\end(matrix) \right]$.

วิธีการแก้. ขั้นแรก ให้เขียนมิติของเมทริกซ์:

\;\ B=\left[ 4\times 2 \right];\ C=\left[ 2\times 2 \right]\]

เราพบว่าเมทริกซ์ $A$ สามารถจับคู่ได้เฉพาะกับเมทริกซ์ $B$ เนื่องจากจำนวนคอลัมน์ใน $A$ คือ 4 และมีเพียง $B$ เท่านั้นที่มีจำนวนแถวนี้ ดังนั้นเราจึงสามารถค้นหาผลิตภัณฑ์:

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

ฉันแนะนำให้ผู้อ่านทำตามขั้นตอนกลางด้วยตนเอง ฉันจะทราบเพียงว่าเป็นการดีกว่าที่จะกำหนดขนาดของเมทริกซ์ผลลัพธ์ล่วงหน้า แม้กระทั่งก่อนการคำนวณใดๆ:

\\cdot \left[ 4\times 2 \right]=\left[ 2\times 2 \right]\]

กล่าวอีกนัยหนึ่ง เราเพียงแค่ลบสัมประสิทธิ์ "ช่วงเปลี่ยนผ่าน" ที่รับรองความสอดคล้องของเมทริกซ์

มีตัวเลือกอะไรอีกบ้าง? เป็นไปได้อย่างแน่นอนที่จะหา $B\cdot A$ เนื่องจาก $B=\left[ 4\times 2 \right]$, $A=\left[ 2\times 4 \right]$, ดังนั้นคู่คำสั่ง $\ left(B ;A \right)$ มีความสม่ำเสมอ และมิติของผลิตภัณฑ์จะเป็น:

\\cdot \left[ 2\times 4 \right]=\left[ 4\times 4 \right]\]

กล่าวโดยสรุป ผลลัพธ์จะเป็นเมทริกซ์ $\left[ 4\times 4 \right]$ ซึ่งสัมประสิทธิ์คำนวณได้ง่าย:

\\cdot \left[ \begin(array)(*(35)(r)) 1 & -1 & 2 & -2 \\ 1 & 1 & 2 & 2 \\\end(array) \right]=\ ซ้าย[ \begin(array)(*(35)(r))1 & 1 & 2 & 2 \\ 2 & -2 & 4 & -4 \\ 3 & 3 & 6 & 6 \\ 4 & -4 & 8 & -8 \\\end(อาร์เรย์) \right]\]

แน่นอน คุณสามารถจับคู่ $C\cdot A$ และ $B\cdot C$ ได้ เท่านี้ก็เรียบร้อย ดังนั้นเราจึงเขียนผลลัพธ์ที่ได้:

มันง่าย.:)

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

โดยทั่วไปแล้ว ฉันขอแนะนำให้ทำภารกิจนี้ด้วยตัวเอง และอีกงานที่คล้ายกันซึ่งอยู่ใน การบ้าน. ความคิดที่ดูเหมือนง่ายๆ เหล่านี้จะช่วยคุณค้นหาขั้นตอนสำคัญทั้งหมดในการคูณเมทริกซ์

แต่เรื่องราวไม่ได้จบเพียงแค่นั้น มาดูกรณีพิเศษของการคูณกัน :)

เวกเตอร์แถวและเวกเตอร์คอลัมน์

การดำเนินการเมทริกซ์ทั่วไปอย่างหนึ่งคือการคูณด้วยเมทริกซ์ที่มีหนึ่งแถวหรือหนึ่งคอลัมน์

คำนิยาม. เวกเตอร์คอลัมน์คือเมทริกซ์ $\left[ m\times 1 \right]$ นั่นคือ ประกอบด้วยหลายแถวและคอลัมน์เดียวเท่านั้น

เวกเตอร์แถวเป็นเมทริกซ์ขนาด $\left[ 1\times n \right]$, i.e. ประกอบด้วยหนึ่งแถวและหลายคอลัมน์

อันที่จริงเราได้พบกับวัตถุเหล่านี้แล้ว ตัวอย่างเช่น เวกเตอร์สามมิติธรรมดาจาก stereometry $\overrightarrow(a)=\left(x;y;z \right)$ เป็นเวกเตอร์แถวเท่านั้น จากมุมมองทางทฤษฎี แทบไม่มีความแตกต่างระหว่างแถวและคอลัมน์ คุณต้องระวังเฉพาะเมื่อประสานงานกับเมทริกซ์ตัวคูณโดยรอบเท่านั้น

งาน 5. คูณ:

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

วิธีการแก้. เราได้ผลคูณของเมทริกซ์ที่สอดคล้องกัน: $\left[ 3\times 3 \right]\cdot \left[ 3\times 1 \right]=\left[ 3\times 1 \right]$. ค้นหาชิ้นนี้:

\[\left[ \begin(array)(*(35)(r)) 2 & -1 & 3 \\ 4 & 2 & 0 \\ -1 & 1 & 1 \\\end(array) \right] \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(อาร์เรย์) \right]\]

คำตอบ: $\left[ \begin(array)(*(35)(r))-3 \\ 8 \\ 0 \\\end(array) \right]$.

ภารกิจที่ 6 ทำการคูณ:

\[\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(อาร์เรย์) \right]\]

วิธีการแก้. ทุกอย่างสอดคล้องกันอีกครั้ง: $\left[ 1\times 3 \right]\cdot \left[ 3\times 3 \right]=\left[ 1\times 3 \right]$. เราพิจารณาผลงาน:

\[\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) \right]=\left[ \begin(array)(*(35)( r))5 & -19 & 5 \\\end(array) \right]\]

คำตอบ: $\left[ \begin(matrix) 5 & -19 & 5 \\\end(matrix) \right]$.

อย่างที่คุณเห็น เมื่อคูณเวกเตอร์แถวและเวกเตอร์คอลัมน์ด้วยเมทริกซ์สี่เหลี่ยมจัตุรัส ผลลัพธ์จะเป็นแถวหรือคอลัมน์ที่มีขนาดเท่ากันเสมอ ข้อเท็จจริงนี้มีการใช้งานมากมาย ตั้งแต่การแก้สมการเชิงเส้นไปจนถึงการแปลงพิกัดทุกประเภท (ซึ่งท้ายที่สุดก็ลงมาถึงระบบสมการด้วย แต่อย่าพูดถึงเรื่องที่น่าเศร้า)

ฉันคิดว่าทุกอย่างชัดเจนที่นี่ มาต่อกันที่ส่วนสุดท้ายของบทเรียนของวันนี้กัน

การยกกำลังเมทริกซ์

ในบรรดาการดำเนินการคูณทั้งหมด การยกกำลังควรได้รับความสนใจเป็นพิเศษ - นี่คือเมื่อเราคูณวัตถุเดียวกันด้วยตัวมันเองหลายครั้ง เมทริกซ์ก็ไม่มีข้อยกเว้น พวกมันยังสามารถยกให้เป็นพลังต่างๆ ได้อีกด้วย

งานดังกล่าวมีการประสานงานอยู่เสมอ:

\\cdot \left[ n\times n \right]=\left[ n\times n \right]\]

และถูกกำหนดในลักษณะเดียวกับองศาสามัญ:

\[\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(จัดตำแหน่ง)\]

เมื่อมองแวบแรก ทุกอย่างก็เรียบง่าย มาดูกันว่าในทางปฏิบัติมีลักษณะอย่างไร:

ภารกิจที่ 7 เพิ่มเมทริกซ์เป็นกำลังที่ระบุ:

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

วิธีการแก้. ตกลง มาสร้างกัน ลองยกกำลังสองก่อน:

\[\begin(จัดตำแหน่ง) & ((\left[ \begin(matrix) 1 & 1 \\ 0 & 1 \\\end(matrix) \right])^(2))=\left[ \begin(matrix ) 1 & 1 \\ 0 & 1 \\\end(เมทริกซ์) \right]\cdot \left[ \begin(matrix) 1 & 1 \\ 0 & 1 \\\end(เมทริกซ์) \right]= \\ & =\left[ \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) \right] \end(จัดตำแหน่ง)\]

\[\begin(จัดตำแหน่ง) & ((\left[ \begin(matrix) 1 & 1 \\ 0 & 1 \\\end(matrix) \right])^(3))=((\left[ \begin (เมทริกซ์) 1 & 1 \\ 0 & 1 \\\end(เมทริกซ์) \right])^(3))\cdot \left[ \begin(เมทริกซ์) 1 & 1 \\ 0 & 1 \\\end( เมทริกซ์) \right]= \\ & =\left[ \begin(array)(*(35)(r)) 1 & 2 \\ 0 & 1 \\\end(array) \right]\cdot \left[ \begin(เมทริกซ์) 1 & 1 \\ 0 & 1 \\\end(เมทริกซ์) \right]= \\ & =\left[ \begin(array)(*(35)(r)) 1 & 3 \\ 0 & 1 \\\end(array) \right] \end(align)\]

แค่นั้นแหละ. :)

คำตอบ: $\left[ \begin(matrix)1 & 3 \\ 0 & 1 \\\end(matrix) \right]$.

ปัญหาที่ 8 เพิ่มเมทริกซ์เป็นกำลังที่ระบุ:

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

วิธีการแก้. อย่าร้องไห้ตอนนี้เกี่ยวกับความจริงที่ว่า "ปริญญาสูงเกินไป", "โลกไม่ยุติธรรม" และ "ครูได้สูญเสียธนาคารอย่างสมบูรณ์" อันที่จริงทุกอย่างง่าย:

\[\begin(จัดตำแหน่ง) & ((\left[ \begin(matrix) 1 & 1 \\ 0 & 1 \\\end(matrix) \right])^(10))=((\left[ \begin (เมทริกซ์) 1 & 1 \\ 0 & 1 \\\end(เมทริกซ์) \right])^(3))\cdot ((\left[ \begin(matrix) 1 & 1 \\ 0 & 1 \\\ end(matrix) \right])^(3))\cdot ((\left[ \begin(matrix) 1 & 1 \\ 0 & 1 \\\end(matrix) \right])^(3))\ cdot \left[ \begin(matrix) 1 & 1 \\ 0 & 1 \\\end(matrix) \right]= \\ & =\left(\left[ \begin(matrix) 1 & 3 \\ 0 & 1 \\\end(matrix) \right]\cdot \left[ \begin(matrix) 1 & 3 \\ 0 & 1 \\\end(matrix) \right] \right)\cdot \left(\left[ \begin(matrix) 1 & 3 \\ 0 & 1 \\\end(matrix) \right]\cdot \left[ \begin(matrix) 1 & 1 \\ 0 & 1 \\\end(matrix) \right ] \right)= \\ & =\left[ \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)\ ]

โปรดทราบว่าในบรรทัดที่สอง เราใช้การเชื่อมโยงการคูณ อันที่จริง เราใช้ในงานก่อนหน้านี้ แต่มันมีนัย

คำตอบ: $\left[ \begin(matrix) 1 & 10 \\ 0 & 1 \\\end(matrix) \right]$.

อย่างที่คุณเห็น ไม่มีอะไรซับซ้อนในการเพิ่มเมทริกซ์เป็นยกกำลัง ตัวอย่างสุดท้ายสามารถสรุปได้:

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

ข้อเท็จจริงนี้พิสูจน์ได้ง่ายผ่านการอุปนัยทางคณิตศาสตร์หรือการคูณโดยตรง อย่างไรก็ตาม มันเป็นไปไม่ได้เสมอที่จะจับรูปแบบดังกล่าวเมื่อเพิ่มพลัง ดังนั้น พึงระวัง: การคูณเมทริกซ์ "ว่าง" หลายๆ ตัวนั้นง่ายกว่าและเร็วกว่าการมองหารูปแบบบางรูปแบบที่นั่น

โดยทั่วไปแล้ว อย่ามองหาความหมายที่สูงกว่าในที่ที่ไม่มีเลย โดยสรุป พิจารณาการยกกำลังของเมทริกซ์ ขนาดใหญ่ขึ้น- มากเท่ากับ $\left[ 3\times 3 \right]$.

ปัญหาที่ 9 เพิ่มเมทริกซ์เป็นกำลังที่ระบุ:

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

วิธีการแก้. อย่ามองหารูปแบบ เราทำงาน "ผ่าน":

\[((\left[ \begin(matrix) 0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \\\end(matrix) \right])^(3))=(( \left[ \begin(matrix) 0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \\\end(matrix) \right])^(2))\cdot \left[ \begin (เมทริกซ์)0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \\\end(เมทริกซ์) \right]\]

เริ่มจากยกกำลังสองเมทริกซ์นี้:

\[\begin(จัดตำแหน่ง) & ((\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(เมทริกซ์) \right]= \\ & =\left[ \begin(array)(*(35)(r )) 2 & 1 & 1 \\ 1 & 2 & 1 \\ 1 & 1 & 2 \\\end(array) \right] \end(align)\]

ตอนนี้ขอลูกบาศก์มัน:

\[\begin(จัดตำแหน่ง) & ((\left[ \begin(matrix) 0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \\\end(matrix) \right])^( 3))=\left[ \begin(array)(*(35)(r)) 2 & 1 & 1 \\ 1 & 2 & 1 \\ 1 & 1 & 2 \\\end(array) \right] \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) \right] \end(align)\]

นั่นคือทั้งหมดที่ แก้ไขปัญหา.

คำตอบ: $\left[ \begin(matrix) 2 & 3 & 3 \\ 3 & 2 & 3 \\ 3 & 3 & 2 \\\end(matrix) \right]$.

อย่างที่คุณเห็น จำนวนการคำนวณมีมากขึ้น แต่ความหมายไม่เปลี่ยนแปลงเลย :)

บทเรียนนี้สามารถจบได้ ครั้งต่อไป เราจะพิจารณาการดำเนินการผกผัน: เราจะมองหาตัวคูณดั้งเดิมโดยใช้ผลิตภัณฑ์ที่มีอยู่

อย่างที่คุณอาจเดาได้แล้ว เราจะพูดถึงเมทริกซ์ผกผันและวิธีการหามัน

การบรรยาย 6. อัลกอริธึมตัวเลขคู่ขนานสำหรับการแก้ปัญหาทั่วไปของคณิตศาสตร์เชิงคำนวณ: การคูณเมทริกซ์

การคูณเมทริกซ์ด้วยเวกเตอร์ บรรลุความเร็วสูงสุดที่เป็นไปได้ การใช้ความเท่าเทียมกันระดับกลาง องค์กร การคำนวณแบบขนานสำหรับ p = น. ใช้โปรเซสเซอร์ชุดที่จำกัด การคูณเมทริกซ์ การวิเคราะห์ระดับมหภาคของอัลกอริธึมการแก้ปัญหา การจัดระบบคู่ขนานบนพื้นฐานของการแบ่งปันข้อมูล

การคูณเมทริกซ์ด้วยเวกเตอร์

ปัญหาของการคูณเมทริกซ์ด้วยเวกเตอร์ถูกกำหนดโดยความสัมพันธ์

ดังนั้น การได้เวกเตอร์ผลลัพธ์จึงเกี่ยวข้องกับการดำเนินการประเภทเดียวกันซ้ำเพื่อคูณแถวของเมทริกซ์และเวกเตอร์ การได้รับการดำเนินการดังกล่าวแต่ละครั้งจะรวมถึงการคูณองค์ประกอบต่อองค์ประกอบในแถวของเมทริกซ์และเวกเตอร์ และผลรวมผลลัพธ์ที่ตามมา จำนวนการดำเนินการสเกลาร์ที่ต้องการทั้งหมดถูกประเมินโดยค่า

จากการกระทำที่กระทำเมื่อคูณเมทริกซ์และเวกเตอร์ วิธีการคู่ขนานในการแก้ปัญหาสามารถหาได้จากอัลกอริธึมการรวมคู่ขนาน (ดูย่อหน้าที่ 4.1) ในส่วนนี้ การวิเคราะห์วิธีการขนานจะเสริมด้วยการพิจารณาการจัดระบบการคำนวณแบบขนานโดยขึ้นอยู่กับจำนวนของโปรเซสเซอร์ที่พร้อมใช้งาน นอกจากนี้ การใช้ตัวอย่างปัญหาของการคูณเมทริกซ์ด้วยเวกเตอร์ จะดึงความสนใจไปที่ความจำเป็นในการเลือกโทโพโลยีที่เหมาะสมที่สุดของระบบคอมพิวเตอร์ (ช่องทางการสื่อสารที่มีอยู่ระหว่างโปรเซสเซอร์) เพื่อลดต้นทุนสำหรับการจัดระเบียบปฏิสัมพันธ์ระหว่างโปรเซสเซอร์

บรรลุประสิทธิภาพที่เร็วที่สุด ()

มาทำการวิเคราะห์การพึ่งพาข้อมูลในอัลกอริธึมสำหรับการคูณเมทริกซ์ด้วยเวกเตอร์เพื่อเลือก ทางที่เป็นไปได้การทำให้ขนานกัน อย่างที่คุณเห็น การดำเนินการของการคูณแต่ละแถวของเมทริกซ์ด้วยเวกเตอร์ที่ดำเนินการระหว่างการคำนวณนั้นไม่ขึ้นต่อกันและสามารถดำเนินการแบบคู่ขนานกันได้



การคูณแต่ละแถวด้วยเวกเตอร์เกี่ยวข้องกับการคูณตามองค์ประกอบที่เป็นอิสระและยังสามารถดำเนินการคู่ขนานกันได้

ผลรวมของผลิตภัณฑ์ที่ได้รับในแต่ละการดำเนินการของการคูณแถวของเมทริกซ์ด้วยเวกเตอร์สามารถทำได้โดยใช้หนึ่งในตัวแปรที่พิจารณาก่อนหน้านี้ของอัลกอริธึมการรวม (อัลกอริธึมอนุกรม

ดังนั้น ค่าสูงสุด จำนวนเงินที่ต้องการโปรเซสเซอร์ถูกกำหนดโดยค่า

การใช้โปรเซสเซอร์จำนวนดังกล่าวสามารถแสดงได้ดังนี้ ชุดโปรเซสเซอร์แบ่งออกเป็นกลุ่ม

,

ซึ่งแต่ละอันแสดงถึงชุดของโปรเซสเซอร์สำหรับดำเนินการคูณเมทริกซ์แถวเดียวด้วยเวกเตอร์ ในช่วงเริ่มต้นของการคำนวณ โปรเซสเซอร์แต่ละตัวของกลุ่มจะได้รับองค์ประกอบของแถวของเมทริกซ์และองค์ประกอบที่สอดคล้องกันของเวกเตอร์ ถัดไป โปรเซสเซอร์แต่ละตัวจะดำเนินการคูณ ต่อจากนั้น การคำนวณจะดำเนินการตามแบบแผนรวมการเรียงซ้อน สำหรับภาพประกอบในรูป 6.1 แสดงรูปแบบการคำนวณสำหรับตัวประมวลผลของกลุ่มที่มีมิติของเมทริกซ์

ข้าว. 6.1. รูปแบบการคำนวณสำหรับการคูณแถวเมทริกซ์ด้วยเวกเตอร์

เวลาดำเนินการของอัลกอริธึมแบบขนานเมื่อใช้โปรเซสเซอร์จะถูกกำหนดโดยเวลาดำเนินการของการดำเนินการคูณแบบขนานและเวลาดำเนินการของรูปแบบการเรียงซ้อน

เป็นผลให้ตัวบ่งชี้ประสิทธิภาพของอัลกอริทึมถูกกำหนดโดยความสัมพันธ์ต่อไปนี้:

สำหรับปัญหาที่พิจารณาของการคูณเมทริกซ์ด้วยเวกเตอร์ โทโพโลยีที่เหมาะสมที่สุดคือโครงสร้างที่ให้การถ่ายโอนข้อมูลที่รวดเร็ว (เส้นทางของความยาวหน่วย) ในรูปแบบการรวมแบบเรียงซ้อน (ดูรูปที่ 4.5) โทโพโลยีดังกล่าวเป็นโครงสร้างที่มีระบบการเชื่อมต่อที่สมบูรณ์ ( กราฟที่สมบูรณ์) และ ไฮเปอร์คิวบ์. โทโพโลยีอื่นๆ ส่งผลให้เวลาในการสื่อสารเพิ่มขึ้นเนื่องจากเส้นทางข้อมูลที่ยาวขึ้น ดังนั้นด้วยการสั่งซื้อโปรเซสเซอร์เชิงเส้นตรงที่มีระบบเชื่อมต่อกับเพื่อนบ้านที่ใกล้ที่สุดทางด้านซ้ายและด้านขวาเท่านั้น ( ไม้บรรทัดหรือ แหวน) สำหรับรูปแบบการเรียงซ้อน ความยาวของเส้นทางการส่งสัญญาณของแต่ละผลรวมบางส่วนที่ได้รับในการวนซ้ำ , , เท่ากับ หากเรายอมรับว่าการส่งข้อมูลไปตามเส้นทางของความยาวในโทโพโลยีที่มีโครงสร้างเชิงเส้นจำเป็นต้องมีการดำเนินการส่งข้อมูล จำนวนรวมของการดำเนินการแบบขนาน (ความยาวรวมของเส้นทาง) ของการส่งข้อมูลจะถูกกำหนดโดยค่า

(ไม่รวมการถ่ายโอนข้อมูลสำหรับตัวประมวลผลการบูตสแตรป)

การประยุกต์ใช้ระบบคอมพิวเตอร์ที่มีโทโพโลยีรูปสี่เหลี่ยมผืนผ้า ตาข่ายสองมิติขนาดนำไปสู่การตีความที่ง่ายและเห็นภาพของการคำนวณที่ดำเนินการ (โครงสร้างเครือข่ายสอดคล้องกับโครงสร้างของข้อมูลที่ประมวลผล) สำหรับโทโพโลยีดังกล่าว เป็นการสมควรอย่างยิ่งที่จะวางแถวของเมทริกซ์ตามเส้นแนวนอนของโครงตาข่าย ในกรณีนี้ องค์ประกอบของเวกเตอร์จะต้องส่งไปตามแนวดิ่งของระบบคอมพิวเตอร์ การคำนวณด้วยการจัดเรียงข้อมูลนี้สามารถทำได้แบบขนานตามแนวโครงตาข่าย ดังนั้นจำนวนการถ่ายโอนข้อมูลทั้งหมดจึงเท่ากับผลลัพธ์สำหรับไม้บรรทัด ()

การดำเนินการสื่อสารที่ดำเนินการในการแก้ปัญหาคือการถ่ายโอนข้อมูลระหว่างคู่ของโปรเซสเซอร์ MCS การวิเคราะห์โดยละเอียดเกี่ยวกับระยะเวลาของการดำเนินการดังกล่าวดำเนินการในวรรค 3.3

4. คำแนะนำสำหรับการใช้งานอัลกอริธึมคู่ขนาน. เมื่อใช้อัลกอริธึมคู่ขนาน แนะนำให้แยกออก ระยะแรกในการโหลดโปรเซสเซอร์ที่ใช้แล้วพร้อมข้อมูลเริ่มต้น การเริ่มต้นดังกล่าวมีไว้อย่างเรียบง่ายที่สุดสำหรับโทโพโลยีของระบบคอมพิวเตอร์ที่มีโทโพโลยีในรูปแบบ กราฟที่สมบูรณ์(การโหลดมีการดำเนินการถ่ายโอนข้อมูลแบบขนานเดียว) เมื่อจัดชุดโปรเซสเซอร์ในรูปแบบ ไฮเปอร์คิวบ์อาจเป็นประโยชน์ที่จะมีการควบคุมสองระดับของกระบวนการบูตสแตรป ซึ่งตัวประมวลผลการควบคุมกลางจะกระจายแถวเมทริกซ์และเวกเตอร์ไปยังตัวประมวลผลการควบคุมของกลุ่มโปรเซสเซอร์ ซึ่งในทางกลับกันจะกระจายองค์ประกอบของเมทริกซ์และเวกเตอร์ แถวถึงตัวประมวลผลระดับผู้บริหาร สำหรับโทโพโลยีในรูปแบบ ไม้บรรทัดหรือ แหวนจำเป็นต้องมีการดำเนินการถ่ายโอนข้อมูลตามลำดับโดยมีจำนวนข้อมูลที่ถ่ายโอนจากไปยังองค์ประกอบลดลงตามลำดับ

การใช้ Parallelism ระดับกลาง ()

1. การเลือกวิธีการคำนวณแบบขนาน. ด้วยการลดจำนวนโปรเซสเซอร์ที่ใช้ได้ () รูปแบบการรวมคาสเคดปกติเมื่อดำเนินการคูณแถวเมทริกซ์ด้วยเวกเตอร์จะไม่สามารถใช้ได้ เพื่อความง่ายในการนำเสนอของเนื้อหา เราถือว่าและใช้รูปแบบการเรียงซ้อนที่ปรับเปลี่ยน โหลดเริ่มต้นของโปรเซสเซอร์แต่ละตัวในกรณีนี้เพิ่มขึ้นและโปรเซสเซอร์ถูกโหลด () ตามส่วนของแถวของเมทริกซ์และเวกเตอร์ เวลาดำเนินการของการดำเนินการคูณเมทริกซ์ด้วยเวกเตอร์สามารถประมาณได้เป็นค่า

เมื่อใช้จำนวนโปรเซสเซอร์ที่จำเป็นในการปรับใช้รูปแบบการเรียงซ้อนที่แก้ไข นั่นคือ ที่ , นิพจน์นี้ให้ค่าประมาณของเวลาดำเนินการ (ที่ ).

ด้วยจำนวนโปรเซสเซอร์ เมื่อเวลาดำเนินการของอัลกอริธึมประมาณว่าสามารถเสนอรูปแบบใหม่สำหรับการประมวลผลแบบขนานของการคำนวณซึ่งจะใช้สำหรับการวนซ้ำของผลรวมแบบเรียงต่อกัน ชุดโปรเซสเซอร์ที่ไม่ทับซ้อนกัน. ด้วยวิธีการนี้ จำนวนโปรเซสเซอร์ที่มีอยู่ก็เพียงพอที่จะใช้การดำเนินการเพียงครั้งเดียวในการคูณแถวของเมทริกซ์และเวกเตอร์ นอกจากนี้ เมื่อทำการวนซ้ำถัดไปของการรวมคาสเคด โปรเซสเซอร์ที่รับผิดชอบการดำเนินการของการวนซ้ำก่อนหน้าทั้งหมดนั้นฟรี อย่างไรก็ตาม ข้อเสียของแนวทางที่เสนอนี้สามารถเปลี่ยนเป็นข้อได้เปรียบได้โดยใช้ตัวประมวลผลที่ไม่ได้ใช้งานเพื่อประมวลผลแถวถัดไปของเมทริกซ์ เป็นผลให้สามารถสร้างรูปแบบต่อไปนี้ได้ สายพานลำเลียงทำการคูณเมทริกซ์และเวกเตอร์:

ชุดของโปรเซสเซอร์แบ่งออกเป็นกลุ่มโปรเซสเซอร์ที่ไม่ทับซ้อนกัน

,

กลุ่ม , , ประกอบด้วยตัวประมวลผลและใช้เพื่อวนซ้ำอัลกอริธึมคาสเคด จำนวนโปรเซสเซอร์ทั้งหมด

การเริ่มต้นการคำนวณประกอบด้วยการโหลดตัวประมวลผลของกลุ่มโดยองค์ประกอบต่อองค์ประกอบด้วยค่า 1 ของแถวของเมทริกซ์และเวกเตอร์ ; หลังจากการบูตสแตรป การดำเนินการแบบขนานของการคูณตามองค์ประกอบและการนำวงจรผลบวกคาสเคดแบบธรรมดาไปใช้ในภายหลัง

เมื่อทำการคำนวณ แต่ละครั้งหลังจากการคูณตามองค์ประกอบเสร็จสิ้น ตัวประมวลผลของกลุ่มจะถูกโหลดด้วยองค์ประกอบของแถวถัดไปของเมทริกซ์ และเริ่มกระบวนการคำนวณสำหรับข้อมูลที่โหลดใหม่

อันเป็นผลมาจากการใช้อัลกอริธึมที่อธิบายไว้ โปรเซสเซอร์จำนวนมากใช้ไพพ์ไลน์สำหรับดำเนินการคูณแถวเมทริกซ์ด้วยเวกเตอร์ บนไปป์ไลน์ดังกล่าว เมทริกซ์แต่ละแถวหลายแถวสามารถอยู่ในขั้นตอนต่างๆ ของการประมวลผลพร้อมกันได้ ตัวอย่างเช่น หลังจากการคูณองค์ประกอบของแถวแรกและเวกเตอร์อย่างชาญฉลาด ตัวประมวลผลกลุ่มจะดำเนินการวนซ้ำครั้งแรกของอัลกอริทึมการเรียงซ้อนสำหรับแถวแรกของเมทริกซ์ และตัวประมวลผลกลุ่มจะดำเนินการองค์ประกอบ - การคูณค่าของแถวที่สองของเมทริกซ์อย่างชาญฉลาดเป็นต้น สำหรับภาพประกอบในรูป 6.2 แสดงสถานการณ์ของกระบวนการคำนวณหลังจากการวนซ้ำ 2 ไปป์ไลน์ที่

ข้าว. 6.2. สถานะของไปป์ไลน์สำหรับการดำเนินการคูณแถวของเมทริกซ์ด้วยเวกเตอร์หลังจากดำเนินการซ้ำ 2 ครั้ง

2. การประเมินตัวบ่งชี้ประสิทธิภาพของอัลกอริทึม. การคูณของแถวแรกด้วยเวกเตอร์ตามรูปแบบการเรียงซ้อนจะเสร็จสมบูรณ์ตามปกติหลังจากดำเนินการ () แบบขนาน สำหรับแถวอื่นๆ ตามรูปแบบไปป์ไลน์ขององค์กรการคำนวณ ผลลัพธ์ของการคูณของแต่ละแถวที่ต่อเนื่องกันจะปรากฏขึ้นหลังจากการทำซ้ำของไปป์ไลน์ในแต่ละครั้งเสร็จสิ้น ผลที่ตามมา, เวลารวมการดำเนินการของการคูณเมทริกซ์ด้วยเวกเตอร์สามารถแสดงได้ด้วยค่า

การประมาณนี้นานกว่าเวลาดำเนินการของอัลกอริธึมคู่ขนานที่อธิบายไว้ในย่อหน้าก่อนหน้า () เล็กน้อย อย่างไรก็ตาม วิธีการที่เสนอใหม่ต้องการส่งข้อมูลน้อยลง (เวกเตอร์ถูกส่งเพียงครั้งเดียว) นอกจากนี้ การใช้แบบแผนไปป์ไลน์จะทำให้ผลลัพธ์การคำนวณบางส่วนปรากฏก่อนหน้านี้ (ซึ่งอาจมีประโยชน์ในสถานการณ์การประมวลผลข้อมูลจำนวนหนึ่ง)

เป็นผลให้ตัวบ่งชี้ประสิทธิภาพของอัลกอริทึมถูกกำหนดโดยความสัมพันธ์ต่อไปนี้:

3. การเลือกโทโพโลยีระบบคอมพิวเตอร์. โทโพโลยีที่เหมาะสมของระบบคอมพิวเตอร์ถูกกำหนดโดยรูปแบบการคำนวณอย่างสมบูรณ์ - นี่คือความสมบูรณ์ ต้นไม้ไบนารีความสูง . จำนวนการถ่ายโอนข้อมูลด้วยโทโพโลยีเครือข่ายนั้นพิจารณาจากจำนวนการวนซ้ำทั้งหมดที่ดำเนินการโดยไปป์ไลน์ กล่าวคือ

การเริ่มต้นของการคำนวณเริ่มต้นจากใบของต้นไม้ ผลรวมจะถูกสะสมในตัวประมวลผลราก

การวิเคราะห์ความซับซ้อนของการดำเนินการสื่อสารที่ทำขึ้นสำหรับระบบคอมพิวเตอร์ที่มีโทโพโลยีอื่นๆ ของการสื่อสารระหว่างโปรเซสเซอร์ควรดำเนินการเป็นงานอิสระ (ดูหัวข้อ 3.4)

องค์กรของการคำนวณแบบขนานกับ

1. การเลือกวิธีการคำนวณแบบขนาน. เมื่อใช้ตัวประมวลผลสำหรับการคูณเมทริกซ์ด้วยเวกเตอร์ สามารถใช้อัลกอริธึมการคูณแบบแถวต่อแถวแบบขนานที่กล่าวถึงแล้วในคู่มือได้ ซึ่งแถวของเมทริกซ์จะถูกกระจายทีละแถวระหว่างโปรเซสเซอร์และโปรเซสเซอร์แต่ละตัวดำเนินการ ของการคูณแต่ละแถวของเมทริกซ์ด้วยเวกเตอร์ อีกวิธีที่เป็นไปได้ในการจัดระเบียบการคำนวณแบบขนานคือการสร้าง แบบแผนไปป์ไลน์สำหรับการคูณแถวของเมทริกซ์ด้วยเวกเตอร์(ผลคูณดอทของเวกเตอร์) โดยการจัดเรียงโปรเซสเซอร์ที่มีทั้งหมดตามลำดับเชิงเส้น ( ไม้บรรทัด).

รูปแบบการคำนวณดังกล่าวสามารถกำหนดได้ดังนี้ เรามาแสดงชุดของโปรเซสเซอร์เป็นลำดับเชิงเส้น (ดูรูปที่ 4.7):

โปรเซสเซอร์แต่ละตัว , , ใช้เพื่อคูณองค์ประกอบคอลัมน์เมทริกซ์และองค์ประกอบเวกเตอร์ การดำเนินการคำนวณบนโปรเซสเซอร์แต่ละตัว , , ประกอบด้วยสิ่งต่อไปนี้:

ขอองค์ประกอบถัดไปของคอลัมน์เมทริกซ์

องค์ประกอบและคูณ;

ขอผลการคำนวณของโปรเซสเซอร์ก่อนหน้า

มีค่าเพิ่ม ;

ผลลัพธ์จะถูกส่งไปยังโปรเซสเซอร์ถัดไป

ข้าว. 6.3. สถานะของไปป์ไลน์เชิงเส้นสำหรับการดำเนินการคูณแถวของเมทริกซ์ด้วยเวกเตอร์หลังจากทำการวนซ้ำสองครั้ง

เมื่อเริ่มต้นโครงร่างที่อธิบายไว้ จำเป็นต้องดำเนินการเพิ่มเติมหลายประการ:

ในระหว่างการทำซ้ำครั้งแรก โปรเซสเซอร์แต่ละตัวจะร้องขอองค์ประกอบของเวกเตอร์เพิ่มเติม

ในการซิงโครไนซ์การคำนวณ (ในระหว่างการดำเนินการวนซ้ำครั้งต่อไปของวงจร ผลลัพธ์ของการคำนวณของโปรเซสเซอร์ก่อนหน้าจะถูกร้องขอ) ที่ขั้นตอนการเริ่มต้น โปรเซสเซอร์ , , ดำเนินการ () วนรอบรอ

นอกจากนี้ เพื่อความสม่ำเสมอของรูปแบบที่อธิบายไว้สำหรับโปรเซสเซอร์ตัวแรก ซึ่งไม่มีโปรเซสเซอร์รุ่นก่อน ขอแนะนำให้แนะนำการดำเนินการเพิ่มเติมที่ว่างเปล่า ( ).

สำหรับภาพประกอบในรูป 6.3 แสดงสถานะของกระบวนการคำนวณหลังจากการวนซ้ำครั้งที่สองของไปป์ไลน์ที่

2. การประเมินตัวบ่งชี้ประสิทธิภาพของอัลกอริทึม. การคูณของแถวแรกด้วยเวกเตอร์ตามรูปแบบไปป์ไลน์ที่อธิบายจะเสร็จสมบูรณ์หลังจากดำเนินการ () การดำเนินการแบบขนาน ผลลัพธ์ของการคูณของแถวต่อไปนี้จะเกิดขึ้นหลังจากการวนซ้ำแต่ละครั้งของไปป์ไลน์ (เรียกคืน การวนซ้ำของโปรเซสเซอร์แต่ละตัวรวมถึงการดำเนินการของการคูณและการบวก) เป็นผลให้เวลาดำเนินการทั้งหมดของการดำเนินการคูณเมทริกซ์-เวกเตอร์สามารถแสดงเป็น:

การประมาณนี้ยังมากกว่าเวลาดำเนินการขั้นต่ำที่เป็นไปได้ของอัลกอริธึมคู่ขนานสำหรับ ประโยชน์ของการใช้ไปป์ไลน์การคำนวณตามที่ระบุไว้ในย่อหน้าก่อนหน้า ในการลดปริมาณข้อมูลที่ส่งและในลักษณะที่ปรากฏก่อนหน้าของส่วนหนึ่งของผลการคำนวณ

ตัวชี้วัดประสิทธิภาพของรูปแบบการคำนวณนี้ถูกกำหนดโดยความสัมพันธ์:

, ,

3. การเลือกโทโพโลยีระบบคอมพิวเตอร์. โทโพโลยีที่จำเป็นสำหรับระบบการคำนวณสำหรับการนำอัลกอริธึมที่อธิบายไปใช้นั้นถูกกำหนดโดยรูปแบบการคำนวณที่เสนอ - นี่คือชุดโปรเซสเซอร์ที่เรียงลำดับเชิงเส้น ( ไม้บรรทัด).

การใช้โปรเซสเซอร์จำนวนจำกัด ()

1. การเลือกวิธีการคำนวณแบบขนาน. เมื่อจำนวนตัวประมวลผลลดลงเป็นค่าหนึ่ง สามารถรับรูปแบบการคำนวณแบบขนานสำหรับการคูณเมทริกซ์-เวกเตอร์ได้อันเป็นผลมาจากการปรับอัลกอริธึมการคูณแบบแถวต่อแถว ในกรณีนี้ รูปแบบการเรียงซ้อนสำหรับการสรุปผลลัพธ์ของการคูณตามองค์ประกอบจะเสื่อมลงและการดำเนินการของการคูณแถวเมทริกซ์ด้วยเวกเตอร์นั้นดำเนินการอย่างสมบูรณ์บนตัวประมวลผลเดียว รูปแบบการคำนวณที่ได้รับด้วยวิธีนี้สามารถระบุได้ดังนี้:

แถวเวกเตอร์และเมทริกซ์จะถูกส่งไปยังโปรเซสเซอร์ที่มีอยู่แต่ละตัว

การดำเนินการของการคูณแถวของเมทริกซ์ด้วยเวกเตอร์นั้นดำเนินการโดยใช้อัลกอริธึมตามลำดับปกติ

ควรสังเกตว่าขนาดของเมทริกซ์อาจไม่ใช่จำนวนตัวประมวลผลหลายเท่า และจากนั้น แถวของเมทริกซ์จะไม่สามารถแบ่งเท่าๆ กันระหว่างโปรเซสเซอร์ได้ ในสถานการณ์เหล่านี้ มีความเป็นไปได้ที่จะเบี่ยงเบนไปจากข้อกำหนดของความสม่ำเสมอของโหลดของโปรเซสเซอร์ และเพื่อให้ได้รูปแบบการคำนวณที่ง่ายกว่า ให้ยอมรับกฎที่ว่าข้อมูลถูกวางบนโปรเซสเซอร์ทีละแถวเท่านั้น (เช่น องค์ประกอบของเมทริกซ์หนึ่งแถว ไม่สามารถแชร์ระหว่างโปรเซสเซอร์หลายตัว) จำนวนแถวที่แตกต่างกันส่งผลให้โหลดการคำนวณที่แตกต่างกันบนโปรเซสเซอร์ ดังนั้น ความสมบูรณ์ของการคำนวณ (ระยะเวลาทั้งหมดของการแก้ปัญหางาน) จะถูกกำหนดโดยเวลาการทำงานของโปรเซสเซอร์ที่โหลดมากที่สุด (ในเวลาเดียวกัน โปรเซสเซอร์บางตัวอาจไม่ได้ใช้งานส่วนหนึ่งของเวลาทั้งหมดนี้เนื่องจากการหมดเวลาของส่วนแบ่งของ การคำนวณ) การโหลดโปรเซสเซอร์ที่ไม่สม่ำเสมอจะลดประสิทธิภาพของการใช้ MCS และจากการพิจารณาตัวอย่างนี้ เราสามารถสรุปได้ว่า ปัญหาความสมดุล

3. การเลือกโทโพโลยีระบบคอมพิวเตอร์. ตามลักษณะของการโต้ตอบระหว่างโปรเซสเซอร์ที่ดำเนินการในรูปแบบการคำนวณที่เสนอ การจัดระเบียบของโปรเซสเซอร์ในรูปแบบ ดวงดาว(ดูรูปที่ 1.1) ตัวประมวลผลควบคุมของโทโพโลยีดังกล่าวสามารถใช้เพื่อโหลดตัวประมวลผลการประมวลผลด้วยข้อมูลเริ่มต้นและรับผลลัพธ์ของการคำนวณที่ดำเนินการ

การคูณเมทริกซ์

ปัญหาของการคูณเมทริกซ์ด้วยเมทริกซ์ถูกกำหนดโดยความสัมพันธ์

.

(เพื่อความง่าย เราจะถือว่าเมทริกซ์คูณและกำลังสองและมีลำดับ )

การวิเคราะห์วิธีที่เป็นไปได้ของการดำเนินการแบบขนานของงานนี้สามารถทำได้โดยการเปรียบเทียบกับการพิจารณาปัญหาของการคูณเมทริกซ์ด้วยเวกเตอร์ ออกจากการวิเคราะห์เพื่อการศึกษาอิสระโดยใช้ตัวอย่างของปัญหาการคูณเมทริกซ์การใช้วิธีการทั่วไปหลายอย่างที่ช่วยให้เราสามารถสร้างวิธีการคู่ขนานสำหรับการแก้ปัญหาที่ซับซ้อน


แต่ละเวกเตอร์สามารถดูเป็นเมทริกซ์หนึ่งคอลัมน์หรือหนึ่งแถวได้ เมทริกซ์หนึ่งคอลัมน์จะเรียกว่าเวกเตอร์คอลัมน์ และเมทริกซ์หนึ่งแถวจะเรียกว่าเวกเตอร์แถว

ถ้า A เป็นเมทริกซ์ขนาด m*n แล้วเวกเตอร์คอลัมน์ b จะมีขนาด n และเวกเตอร์แถว b มีขนาด m

ดังนั้น ในการคูณเมทริกซ์ด้วยเวกเตอร์ เราต้องถือว่าเวกเตอร์นั้นเป็นเวกเตอร์คอลัมน์ เมื่อคูณเวกเตอร์ด้วยเมทริกซ์ จะต้องถือเป็นเวกเตอร์แถว

คูณเมทริกซ์

ไปยังเวกเตอร์เชิงซ้อน

ได้ผลลัพธ์

อย่างที่คุณเห็น โดยที่มิติของเวกเตอร์ไม่เปลี่ยนแปลง เราก็มีคำตอบได้สองทาง

ฉันต้องการดึงความสนใจของคุณไปที่ข้อเท็จจริงที่ว่าเมทริกซ์ในเวอร์ชันแรกและเวอร์ชันที่สอง แม้จะมีค่าเท่ากัน แต่ก็แตกต่างกันโดยสิ้นเชิง (มีมิติข้อมูลต่างกัน)

ในกรณีแรกเวกเตอร์ถือเป็นคอลัมน์และจำเป็น คูณเมทริกซ์ด้วยเวกเตอร์และในกรณีที่สอง เรามีเวกเตอร์แถว แล้วเราก็มี ผลคูณของเวกเตอร์และเมทริกซ์

บอทนี้ยังคูณเวกเตอร์และเมทริกซ์ที่มีค่าที่ซับซ้อนอีกด้วย อิงจากเครื่องคิดเลขที่สมบูรณ์ยิ่งขึ้น การคูณเมทริกซ์ด้วยค่าที่ซับซ้อน ​​ออนไลน์

สมบัติของการคูณเมทริกซ์-เวกเตอร์

เมทริกซ์

คอลัมน์เวกเตอร์

เวกเตอร์แถว

หมายเลขโดยพลการ

1. ผลคูณของเมทริกซ์โดยผลรวมของเวกเตอร์คอลัมน์ เท่ากับผลรวมของผลคูณของเมทริกซ์โดยเวกเตอร์แต่ละตัว

2. ผลคูณของผลรวมของเวกเตอร์แถวโดยเมทริกซ์เท่ากับผลรวมของผลคูณของเวกเตอร์โดยเมทริกซ์

3. ปัจจัยร่วมของเวกเตอร์สามารถนำออกจากผลคูณของเมทริกซ์โดยเวกเตอร์ / เวกเตอร์โดยเมทริกซ์

4. ผลคูณของเวกเตอร์แถวโดยผลคูณของเมทริกซ์และเวกเตอร์คอลัมน์ เทียบเท่ากับผลคูณของผลคูณของเวกเตอร์แถวโดยเมทริกซ์และเวกเตอร์คอลัมน์