Матрицаны векторға көбейту алгоритмі. Матрицаны көбейту: мысалдар, әрекеттер алгоритмі, туынды қасиеттері

MatLab жүйесі жай ғана матрицалар мен векторларға математикалық амалдарды орындайды. Алдымен матрицалар мен векторларды қосу және көбейтудің қарапайым амалдарын қарастырайық. Екі вектор берілсін

a = ; % жол векторы
b = ; % баған векторы

онда осы екі вектордың көбейтіндісін былай жазуға болады

c = a*b; %c=1+2+3+4+5=16
d = b*a; %d - 5x5 элементтердің матрицасы

Векторлардағы операцияларға сәйкес жол векторын баған векторына көбейткенде сан шығады, ал баған векторын жол векторына көбейткенде екі өлшемді матрица шығады, ол жоғарыда келтірілген мысалдағы есептеулердің нәтижесі болып табылады, яғни.

Екі векторды қосу және азайту былай жазылады

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

Қосу және алу амалдарын екі баған векторы немесе екі жол векторы арасында орындауға болатынын ескеріңіз. Әйтпесе, MatLab қате туралы хабарды шығарады, себебі әртүрлі типтегі векторларды қосу мүмкін емес. Бұл барлық заңсыз арифметикалық операцияларға қатысты: егер оларды есептеу мүмкін болмаса, MatLab жүйесі қате туралы хабарлайды және бағдарлама сәйкес жолда аяқталады.

Сол сияқты матрицалар арасында көбейту және қосу амалдары орындалады:

A = ;
B = бір(3);
C=A+B; Бірдей өлшемдегі екі матрицаны % қосу
D=A+5; матрица мен санды % қосу
E=A*B; А матрицасын В-ға % көбейту
F=B*A; B матрицасын А-ға % көбейту
G=5*A; матрицаны санға % көбейту

Кері матрицаны есептеу, сондай-ақ матрицалар мен векторларды ауыстыру операциялары келесі түрде жазылады:

a = ; % жол векторы
b = a'; % баған векторы арқылы құрылған
жол векторының % транспозициясы a.
A = ; % матрица 3x3 элементтері
B = a*A; %b= - жол векторы
C=A*b; % C = - баған векторы
D = a*A*a'; % D = 45 – сан, А матрицасының қосындысы
E = A'; % E – транспозицияланған А матрицасы
F = inv(A); % F – кері матрицасы А
G = A^-1; % G – кері матрицасы А

Жоғарыда келтірілген мысалдан матрицалар мен векторларды ауыстыру операциясы вектордың немесе матрицаның атынан кейін қойылатын ‘ (апостроф) белгісімен белгіленетінін көруге болады. Кері матрицаны есептеуді inv() функциясын шақыру немесе матрицаны -1 дәрежесіне көтеру арқылы жасауға болады. Нәтиже екі жағдайда да бірдей болады және әртүрлі алгоритмдерді жүзеге асыру кезінде пайдалану ыңғайлылығы үшін екі есептеу әдісі жасалады.

Егер есептеулер барысында вектордың немесе матрицалық элементтің элементтерін элементке көбейту, бөлу немесе көтеру қажет болса, онда ол үшін келесі операторлар қолданылады:

.* - элементтік көбейту;
./ және .\ - элементтік бөлімдер;
.^ - элементтік дәреже көрсеткіші.

Келесі мысалда осы операторлардың жұмысын қарастырыңыз.

a = ; % жол векторы
b = ; % жол векторы
c = a.*b; %c=
A = бірлік(3); % Бірлерден тұратын 3x3 матрица
B = ; % матрица 3x3
C = A.*B; % матрицасы 3x3, тұрады
D = A./B; % матрицасы 3x3, тұрады
E = A.\B; % матрицасы 3x3, тұрады
F = A.^2; А матрицасы элементтерінің % квадраты

Бұл бөлімді аяқтау үшін векторлармен және матрицалармен жұмыс істеу кезінде пайдалы болатын бірнеше функцияларды қарастырыңыз.

Векторлық элементтің максималды мәнін табу үшін элементтің табылған максималды мәнін және оның орнын (индекс) қайтаратын max() стандартты функциясы қолданылады:

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

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

Жоғарыдағы мысал max() функциясын шақырудың екі түрлі әдісін көрсетеді. Бірінші жағдайда элементтің ең үлкен мәні де, оның вектордағы индексі де анықталады, ал екіншісінде элементтің ең үлкен мәні ғана анықталады.

Матрицалар жағдайында бұл функция төмендегі мысалда көрсетілгендей бағандардағы максималды мәндерді анықтайды:

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

max() функциясының толық синтаксисін MatLab пәрмен терезесінде пәрменді теру арқылы табуға болады.

Көмектесіңдер<название функции>

min() функциясы дәл осылай жұмыс істейді, ол вектордың немесе матрица элементінің ең аз мәнін және оның индексін анықтайды.

Матрицалармен және векторлармен жұмыс істеуге арналған тағы бір пайдалы функция - бұл вектор элементтерінің немесе матрица бағандарының мәндерінің қосындысын есептейтін sum() функциясы:

a = ;
s = қосынды(a); %s = 3+5+4+2+1=15
A = ;
S1 = қосынды(A); %S1=
S2 = қосынды(қосынды(А)); % S2=39

S2 қосындысын есептеу кезінде А матрицасының элементтерінің мәндерінің қосындысы алдымен бағандар бойынша, содан кейін жолдар бойынша есептеледі. Нәтижесінде S2 айнымалысы А матрицасының барлық элементтерінің мәндерінің қосындысын қамтиды.

Вектор немесе матрица элементтерінің мәндерін өсу немесе кему ретімен сұрыптау үшін sort() функциясын келесідей пайдаланыңыз:

a = ;

b1 = сұрыптау(а); %b1=
b2 = сұрыптау(a, 'төмендету'); %b2=
b3 = сұрыптау(a, 'өсу'); %b3=

матрицалар үшін

A = ;
B1 = сұрыптау(A); %B1=
B2 = сұрыптау(A, «төмендеу»); %B2=

Көптеген практикалық есептерде көбінесе векторда немесе матрицада белгілі бір элементті табу талап етіледі. Мұны стандартты find() функциясы арқылы жасауға болады, ол дәлел ретінде талап етілетін элементтер табылған шартты қабылдайды, мысалы:

a = ;
b1 = табу(a == 2); %b1 = 4 - 2-элемент индексі
b2 = табу(a ~= 2); % b2 = - 2 жоқ индекстер
b3 = табу(a > 3); %b3=

Жоғарыдағы мысалда ‘==’ символы теңдікті тексеруді білдіреді, ал ‘~=’ символы а векторының элементтерінің мәндерінің теңсіздігін тексеруді жүзеге асырады. Бұл операторлар туралы қосымша мәліметтер шартты операторлар бөлімінде сипатталады.

Векторлармен және матрицалармен жұмыс істеуге арналған тағы бір пайдалы функция келесідей жұмыс істейтін орташа арифметикалық мәнді есептеуге арналған mean() функциясы болып табылады:

a = ;
m = орташа(a); %m = 3
A = ;
M1 = орташа(A); %M1=
M2 = орташа(орташа(A)); % M2 = 4,333

Анықтама 1

Матрицалардың көбейтіндісі (C=AB) тек А матрицасының бағандарының саны В матрицасының жолдарының санына тең болатын дәйекті А және В матрицаларына арналған операция:

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

1-мысал

Матрицалық деректер:

  • m × n өлшемдерінің A = a (i j);
  • 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 , i = 1 , . . . m , j = 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 (B C) - матрицаны көбейтудің ассоциативтілігі;
  • 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 (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 .

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 матрицасының көбейтіндісі екі жолмен есептеледі:

  • A B табу және С көбейту: (A B) C;
  • немесе алдымен B C табыңыз, содан кейін A (B C) көбейтіңіз.
3-мысал

Матрицаларды екі жолмен көбейтіңіз:

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

Әрекет алгоритмі:

  • 2 матрицаның көбейтіндісін табу;
  • содан кейін қайтадан 2 матрицаның көбейтіндісін табыңыз.

1). 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 (A B) C формуласын қолданамыз:

1). 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

Жауабы: 4 3 7 5 - 28 93 38 - 126 7 3 2 1 = 2 0 0 3

Матрицаны санға көбейту

Анықтама 2

А матрицасының k санына көбейтіндісі бірдей өлшемдегі B \u003d A k матрицасы болып табылады, ол түпнұсқадан оның барлық элементтерінің берілген санына көбейту арқылы алынады:

b i , j = k × a i , j

Матрицаны санға көбейтудің қасиеттері:

  • 1 × A = A
  • 0 × A = нөлдік матрица
  • k(A + B) = kA + кБ
  • (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 + a 11 × b 2 1 + a + a 2 b 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 = ⋯ 1 c2 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 ⋯ a n × b2 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

5-мысал

А матрицасы мен В бағанының векторының көбейтіндісін табыңыз:

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 \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 пернелерін басыңыз


Әрбір векторды бір бағанды ​​немесе бір жолды матрица ретінде қарауға болады. Бір бағаналы матрица баған векторы, ал бір жолды матрица жол векторы деп аталады.

Егер А m*n өлшемді матрица болса, онда b бағанының векторының өлшемі n, ал b жолының векторының өлшемі m болады.

Осылайша, матрицаны векторға көбейту үшін векторды баған векторы ретінде қарастыру керек. Векторды матрицаға көбейткенде, оны жол векторы ретінде қарастыру керек.

көбейту матрицасы

комплекс векторына

Біз нәтиже аламыз

Көріп отырғаныңыздай, вектордың өлшемі өзгермегенде, бізде екі шешім болуы мүмкін.

Бірінші және екінші нұсқалардағы матрица бірдей мәндерге қарамастан, мүлдем басқа (олардың өлшемдері әртүрлі) екеніне назар аударғым келеді.

Бірінші жағдайда вектор баған ретінде қарастырылады, содан кейін ол қажет матрицаны векторға көбейту, ал екінші жағдайда бізде жол векторы бар, содан кейін бізде бар вектор мен матрицаның көбейтіндісі.

Бұл бот сонымен қатар күрделі мәндері бар векторлар мен матрицаларды көбейтеді. Толық калькулятор негізінде күрделі мәндері бар матрицаларды онлайн көбейту

Матрицалық-векторлық көбейтудің қасиеттері

Матрица

Векторлық баған

Жол векторы

Ерікті сан

1. Матрицаның баған векторларының қосындысына көбейтіндісі матрицаның векторлардың әрқайсысына көбейтінділерінің қосындысына тең.

2. Матрица бойынша жол векторларының қосындысының көбейтіндісі векторлардың матрица бойынша көбейтінділерінің қосындысына тең.

3. Вектордың ортақ коэффициентін матрицаның векторы бойынша көбейтіндіден / векторды матрица арқылы шығаруға болады.

4. Жол векторының матрица мен баған векторының көбейтіндісіне көбейтіндісі жол векторының матрица мен баған векторының көбейтіндісіне эквивалентті.

Дәріс 6. Есептеу математикасының типтік есептерін шешудің параллельді сандық алгоритмдері: матрицалық көбейту.

Матрицаны векторға көбейту. Мүмкін болатын ең жоғары жылдамдыққа қол жеткізіңіз. Орта деңгейлі параллелизмді қолдану. p = n үшін параллельді есептеулерді ұйымдастыру. Процессорлардың шектеулі жиынтығын пайдалану. Матрицаны көбейту. Есептерді шешу алгоритмдерін макрооперациялық талдау. Мәліметтерді ортақ пайдалану негізінде параллелизмді ұйымдастыру.

Матрицаны векторға көбейту

Матрицаны векторға көбейту мәселесі қатынастар арқылы анықталады

Осылайша, алынған векторды алу матрица мен вектордың жолдарын көбейту үшін бірдей типті операцияларды қайталауды қамтиды. Әрбір осындай операцияны алу матрица мен вектор жолының элементтерін элемент бойынша көбейтуді және алынған туындылардың кейінгі қосындысын қамтиды. Қажетті скаляр операциялардың жалпы саны мән бойынша бағаланады

Матрица мен векторды көбейту кезінде орындалатын әрекеттерден келесідей, параллельді қосу алгоритмдері негізінде есепті шешудің параллельді әдістерін алуға болады (4.1-тармақты қараңыз). Бұл бөлімде параллельдеу әдістерінің талдауы қолдануға болатын процессорлар санына байланысты параллельді есептеулерді ұйымдастыруды қарастыру арқылы толықтырылады. Сонымен қатар, матрицаны векторға көбейту есебінің мысалын пайдалана отырып, процессор аралық өзара әрекеттесуді ұйымдастыруға шығындарды азайту үшін есептеу жүйесінің ең қолайлы топологиясын (процессорлар арасындағы бар байланыс арналарын) таңдау қажеттілігіне назар аударылады.

Ең жылдам өнімділікке қол жеткізу ()

Параллельдеудің мүмкін жолдарын таңдау үшін матрица-векторды көбейту алгоритмінде ақпараттық тәуелділіктерді талдауды орындайық. Көріп отырғаныңыздай, есептеулер кезінде орындалатын матрицаның жеке жолдарын векторға көбейту амалдары тәуелсіз және параллель орындалады;



Әрбір жолды векторға көбейту тәуелсіз элементтерді көбейтуді қамтиды және оны параллельде де орындауға болады;

Матрицаның жолын векторға көбейтудің әрбір операциясында алынған туындылардың қосындысын қосу алгоритмінің бұрын қарастырылған нұсқаларының бірін (сериялық алгоритм, кәдімгі және модификацияланған каскадты схемалар) пайдалана отырып орындауға болады.

Осылайша, процессорлардың ең көп қажетті саны мәнмен анықталады

Процессорлардың мұндай санын пайдалануды келесідей көрсетуге болады. Процессорлар жиынтығы топтарға бөлінеді

,

олардың әрқайсысы матрицаның бір жолын векторға көбейту операциясын орындауға арналған процессорлар жиынын білдіреді. Есептеулердің басында топтың әрбір процессоры матрица жолының элементін және вектордың сәйкес элементін алады. Әрі қарай әрбір процессор көбейту операциясын орындайды. Одан кейін каскадты жинақтау схемасы бойынша есептеулер орындалады. Суретте көрсетілген. 6.1 матрица өлшемі бар топтың процессорлары үшін есептеу схемасын көрсетеді.

Күріш. 6.1. Матрица жолын векторға көбейтудің есептеу схемасы

Процессорларды пайдалану кезінде параллельді алгоритмнің орындалу уақыты параллельді көбейту операциясының орындалу уақытымен және каскадты схеманың орындалу уақытымен анықталады.

Нәтижесінде алгоритмнің өнімділік көрсеткіштері келесі қатынастармен анықталады:

, ,

Матрицаны векторға көбейтудің қарастырылған мәселесі үшін ең қолайлы топологиялар каскадты жинақтау схемасында деректерді жылдам беруді (бірлік ұзындығының жолдары) қамтамасыз ететін құрылымдар болып табылады (4.5-суретті қараңыз). Мұндай топологиялар байланыстардың толық жүйесі бар құрылым ( толық график) Және гиперкуб. Басқа топологиялар деректер жолдарының ұзағырақ болуына байланысты байланыс уақытын арттырады. Сонымен, сол және оң жақтағы жақын көршілерімен ғана байланыстар жүйесі бар процессорлардың сызықтық тәртібімен ( сызғышнемесе сақина) каскадты схема үшін итерациядағы әрбір алынған ішінара қосындының берілу жолының ұзындығы , , тең. Сызықтық құрылымы бар топологиялардағы мәліметтерді ұзындық жолымен тасымалдау мәліметтерді тасымалдау операцияларын орындауды қажет ететінін қабылдасақ, деректерді берудің параллельді операцияларының жалпы саны (жолдардың жалпы ұзындығы) мәнмен анықталады.

(жүктеу процессорлары үшін деректерді тасымалдауды қоспағанда).

Тікбұрышты топологиясы бар есептеу жүйесін қолдану екі өлшемді торөлшем орындалған есептеулерді қарапайым және көрнекі түсіндіруге әкеледі (желі құрылымы өңделген деректер құрылымына сәйкес келеді). Мұндай топология үшін матрицаның жолдарын тордың көлденең сызықтары бойымен орналастыру өте орынды; бұл жағдайда вектордың элементтері есептеу жүйесінің вертикальдары бойынша жіберілуі керек. Мәліметтердің бұл орналасуымен есептеулерді орындау тордың сызықтары бойынша параллель жүргізілуі мүмкін; нәтижесінде деректерді тасымалдаудың жалпы саны Ruler() үшін нәтижелермен бірдей болады.

Мәселені шешуде орындалатын байланыс әрекеттері MCS процессорларының жұптары арасында деректерді тасымалдау болып табылады. Мұндай операцияларды орындау ұзақтығының егжей-тегжейлі талдауы 3.3-тармақта жүзеге асырылады.

4. Параллельді алгоритмді жүзеге асыру бойынша ұсыныстар. Параллельді алгоритмді енгізу кезінде пайдаланылған процессорларды бастапқы деректермен жүктеудің бастапқы кезеңін бөліп алған жөн. Мұндай инициализация пішіндегі топологиясы бар есептеу жүйесінің топологиясы үшін қарапайым түрде қарастырылған толық график(жүктеу бір параллельді деректерді беру операциясымен қамтамасыз етіледі). Пішінде процессорлар жиынтығын ұйымдастыру кезінде гиперкубОрталық басқару процессоры матрицалық және векторлық жолдарды процессорлар топтарының басқару процессорларына тарататын, өз кезегінде матрица мен вектордың элементтерін тарататын жүктеу процесін екі деңгейлі басқару пайдалы болуы мүмкін. атқарушы процессорларға жолдар. Пішіндегі топологиялар үшін билеушілернемесе сақиналарэлементтерден тасымалданатын деректер санының дәйекті азаюымен дәйекті деректерді беру операциялары қажет.

Орта деңгей параллелизмін пайдалану()

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=\left[ m\times n \right]$ матрицада дәл $m$ жолдары мен $n$ бағандары бар екенін білдіреді. Біз жолдарды бағандармен қалай шатастырмау керектігін талқыладық. Енді басқа нәрсе маңызды.

Анықтама. $A=\left[ m\times n \right]$ және $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]$ және $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]$ және $B=\left[ n\times k \right]$. Ал біз олар үшін көбейту амалын анықтаймыз.

Анықтама. $A=\left[ m\times n \right]$ және $B=\left[ n\times k \right]$ екі сәйкес матрицаның көбейтіндісі жаңа $C=\left[ m\times k \ матрицасы. оң] $, оның элементтері формула бойынша есептеледі:

\[\бастау(туралау) & ((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$-ші жолды алыңыз;
  2. Екінші матрицадағы $j$-th бағанасын алыңыз;
  3. Біз сандардың екі тізбегін аламыз. Осы тізбектердің элементтерін бірдей сандармен көбейтеміз, содан кейін алынған көбейтінділерді қосамыз.

Бұл процесті суреттен түсіну оңай:


Екі матрицаны көбейту схемасы

Тағы да: бірінші матрицадағы $i$ жолын, екінші матрицадағы $j$ бағанын түзетеміз, элементтерді бірдей сандармен көбейтеміз, содан кейін алынған өнімдерді қосамыз - $((c)_(ij) аламыз ))$. Осылайша барлық $1\le i\le m$ және $1\le j\le k$ үшін. Анау. барлығы $m\times k$ осындай "бұзушылықтар" болады.

Шын мәнінде, біз мектеп бағдарламасында матрицалық көбейтуді кездестірдік, тек өте қысқартылған түрде. Векторлар берілсін:

\[\begin(align) & \vec(a)=\left(((x)_(a));((y)_(a));((z)_(a)) \right); \\ & \overrightarrow(b)=\left(((x)_(b));((y)_(b));((z)_(b)) \оң). \\ \соңы(туралау)\]

Сонда олардың скаляр көбейтіндісі дәл жұптық көбейтінділердің қосындысы болады:

\[\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(массив)(*(35)(r)) 1 & 2 \\ -3 & 4 \\\end(массив) \right]\cdot \left[ \begin(массив)(* (35)(r)) -2 & 4 \\ 3 & 1 \\\соңы(массив) \оң жақ]\]

Шешім. Сонымен, бізде екі матрица бар: $A=\left[ 2\times 2 \right]$ және $B=\left[ 2\times 2 \right]$. Олардың сәйкес келетіні анық (бірдей өлшемдегі квадрат матрицалар әрқашан сәйкес келеді). Сонымен, біз көбейтуді жасаймыз:

\[\begin(align) & \left[ \begin(array)(*(35)(r)) 1 & 2 \\ -3 & 4 \\\end(массив) \right]\cdot \left[ \ бастау(массив)(*(35)(r)) -2 & 4 \\ 3 & 1 \\\соңы(массив) \оңға]=\left[ \begin(массив)(*(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(массив) \оңға]= \\ & =\left[ \begin(массив)(*(35)(r)) 4 & 6 \\ 18 & -8 \\\ end(массив)\оңға]. \соңы(туралау)\]

Осымен болды!

Жауап: $\left[ \begin(массив)(*(35)(r))4 & 6 \\ 18 & -8 \\\end(массив) \right]$.

Тапсырма 2. Көбейтуді орындаңыз:

\[\left[ \begin(матрица) 1 & 3 \\ 2 & 6 \\\end(матрица) \right]\cdot \left[ \begin(массив)(*(35)(r))9 & 6 \\ -3 & -2 \\\соңы(массив) \оң жақ]\]

Шешім. Тағы да дәйекті матрицалар, сондықтан біз келесі әрекеттерді орындаймыз:\[\]

\[\begin(align) & \left[ \begin(matrix) 1 & 3 \\ 2 & 6 \\\end(матрица) \right]\cdot \left[ \begin(массив)(*(35)( r)) 9 & 6 \\ -3 & -2 \\\соңы(массив) \оң]=\left[ \begin(массив)(*(35)(r)) 1\cdot 9+3\cdot \ сол(-3 \оң) & 1\cdot 6+3\cdot \left(-2 \оң) \\ 2\cdot 9+6\cdot \left(-3 \оң) & 2\cdot 6+6\ cdot \left(-2 \right) \\\end(массив) \right]= \\ & =\left[ \begin(matrix) 0 & 0 \\ 0 & 0 \\\end(матрица) \right] . \соңы(туралау)\]

Көріп отырғаныңыздай, нәтиже нөлдермен толтырылған матрица

Жауабы: $\left[ \begin(matrix) 0 & 0 \\ 0 & 0 \\\end(матрица) \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 \оң)=A\cdot B+A\cdot C$ және $\left(A+B \оң)\cdot C=A\cdot C+B\cdot C $

Ал қазір - бәрі бірдей, бірақ толығырақ.

Матрицалық көбейту классикалық сандарды көбейту сияқты. Бірақ айырмашылықтар бар, олардың ең бастысы - бұл матрицаны көбейту, жалпы айтқанда, коммутативті емес.

1-есептегі матрицаларды қайта қарастырайық. Біз олардың тікелей көбейтіндісін білеміз:

\[\left[ \begin(массив)(*(35)(r)) 1 & 2 \\ -3 & 4 \\\end(массив) \right]\cdot \left[ \begin(массив)(* (35)(r)) -2 & 4 \\ 3 & 1 \\\соңы(массив) \оң]=\left[ \begin(массив)(*(35)(r))4 және 6 \\ 18 & -8 \\\соңы(массив) \оң жақ]\]

Бірақ матрицаларды ауыстырсақ, мүлде басқа нәтиже аламыз:

\[\left[ \begin(массив)(*(35)(r)) -2 & 4 \\ 3 & 1 \\\end(массив) \right]\cdot \left[ \begin(массив)(* (35)(r)) 1 & 2 \\ -3 & 4 \\\соңы(массив) \оң]=\сол[ \begin(матрица) -14 & 4 \\ 0 & 10 \\\соңы(матрица )\оңға]\]

$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 \ оңға] $ және кері тәртіпте жазылған $\left[ 2\time 3 \right]$ енді сәйкес келмейді. Мұң :(

Берілген $n$ өлшемді квадрат матрицаларының арасында тура және кері ретпен көбейткенде де бірдей нәтиже беретіндер әрқашан болады. Барлық осындай матрицаларды қалай сипаттау керек (және олардың қаншасы жалпы) - бұл жеке сабақтың тақырыбы. Бүгін біз бұл туралы айтпаймыз. :)

Дегенмен, матрицаны көбейту ассоциативті болып табылады:

\[\сол(A\cdot B \оң)\cdot C=A\cdot \сол(B\cdot C \оң)\]

Сондықтан, бірден бірнеше матрицаны қатарынан көбейту қажет болғанда, оны мерзімінен бұрын орындаудың қажеті жоқ: кейбір көрші матрицалар көбейтілгенде қызықты нәтиже беруі әбден мүмкін. Мысалы, жоғарыда қарастырылған 2-есептегідей нөлдік матрица.

Нақты есептерде көбінесе $\left[ n\times n \right]$ өлшемді квадрат матрицаларды көбейту керек. Барлық осындай матрицалардың жиыны $((M)^(n))$ арқылы белгіленеді (яғни, $A=\left[ n\times n \right]$ және \ жазбалары бірдей мағынаны білдіреді) және ол болады міндетті түрде $E$ матрицасын қамтиды, ол сәйкестік матрицасы деп аталады.

Анықтама. $n$ өлшемді сәйкестік матрицасы кез келген $A=\left[ n\times n \right]$ квадрат матрицасы үшін теңдік орындалатындай $E$ матрицасы:

Мұндай матрица әрқашан бірдей көрінеді: оның негізгі диагоналында бірліктер бар, ал қалған барлық ұяшықтарда нөлдер бар.

\[\бастау(туралау) & A\cdot \left(B+C \оң жақ)=A\cdot B+A\cdot C; \\ & \left(A+B \оң)\cdot C=A\cdot C+B\cdot C. \\ \соңы(туралау)\]

Басқаша айтқанда, егер сізге бір матрицаны қалған екеуінің қосындысына көбейту қажет болса, оны осы «басқа екеуінің» әрқайсысына көбейтіп, содан кейін нәтижелерді қосуға болады. Іс жүзінде сіз әдетте кері операцияны орындауыңыз керек: біз бірдей матрицаны байқаймыз, оны жақшадан шығарамыз, қосуды орындаймыз және осылайша өмірімізді жеңілдетеміз. :)

Назар аударыңыз, үлестірімділікті сипаттау үшін екі формуланы жазу керек болды: қосынды екінші факторда және қосынды біріншіде орналасқан жерде. Бұл дәл матрицаны көбейтудің коммутативті емес екендігіне байланысты (және жалпы алғанда, коммутативті емес алгебрада қарапайым сандармен жұмыс істегенде тіпті ойға да келмейтін көптеген әзілдер бар). Ал егер, мысалы, емтихан кезінде осы сипатты жазып алу керек болса, онда екі формуланы да міндетті түрде жазыңыз, әйтпесе мұғалім аздап ашулануы мүмкін.

Жарайды, бұлардың барлығы шаршы матрицалар туралы ертегілер еді. Тіктөртбұрыштар туралы не деуге болады?

Тік бұрышты матрицалардың жағдайы

Бірақ ештеңе - бәрі шаршылармен бірдей.

Тапсырма 3. Көбейтуді орындаңыз:

\[\left[ \begin(матрица) \begin(матрица) 5 \\ 2 \\ 3 \\\end(матрица) & \begin(матрица) 4 \\ 5 \\ 1 \\\end(матрица) \ \\соңы(матрица) \оңға]\cdot \left[ \begin(массив)(*(35)(r)) -2 & 5 \\ 3 & 4 \\\end(массив) \оңға]\]

Шешім. Бізде екі матрица бар: $A=\left[ 3\times 2 \right]$ және $B=\left[ 2\times 2 \right]$. Өлшемдерді көрсететін сандарды қатарға жазайық:

Көріп отырғаныңыздай, орталық екі сан бірдей. Бұл матрицалардың дәйекті екенін білдіреді және оларды көбейтуге болады. Ал шығысында $C=\left[ 3\times 2 \right]$ матрицасын аламыз:

\[\begin(туралау) & \left[ \begin(матрица) \begin(матрица) 5 \\ 2 \\ 3 \\\end(матрица) & \begin(матрица) 4 \\ 5 \\ 1 \\ \end(матрица) \\\end(матрица) \оңға]\cdot \left[ \begin(array)(*(35)(r)) -2 & 5 \\ 3 & 4 \\\end(массив) \right]=\left[ \begin(массив)(*(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(массив) \оңға]= \\ & =\left[ \begin(массив)(*(35)(r)) 2 & 41 \\ 11 & 30 \\ -3 & 19 \ \\соңы(массив)\оңға]. \соңы(туралау)\]

Барлығы түсінікті: соңғы матрицада 3 жол және 2 баған бар. Өте $=\left[ 3\times 2 \right]$.

Жауап: $\left[ \begin(массив)(*(35)(r)) \begin(массив)(*(35)(r)) 2 \\ 11 \\ -3 \\\end(массив) & \begin(матрица) 41 \\ 30 \\ 19 \\\end(матрица) \\\end(массив) \right]$.

Енді матрицалармен жұмыс істей бастағандар үшін ең жақсы оқу тапсырмаларының бірін қарастырыңыз. Онда сіз екі таблетканы көбейтіп қана қоймай, алдымен анықтауыңыз керек: мұндай көбейтуге рұқсат етілген бе?

Есеп 4. Матрицалардың барлық мүмкін болатын жұптық көбейтіндісін табыңыз:

\\]; $B=\left[ \begin(матрица) \begin(матрица) 0 \\ 2 \\ 0 \\ 4 \\\end(матрица) & \begin(матрица) 1 \\ 0 \\ 3 \\ 0 \ \\соңы(матрица) \\\соңы(матрица) \оң жақ]$; $C=\left[ \begin(матрица)0 & 1 \\ 1 & 0 \\\end(матрица) \right]$.

Шешім. Алдымен матрицалардың өлшемдерін жазып алайық:

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

Біз $A$ матрицасын тек $B$ матрицасымен сәйкестендіруге болатынын түсінеміз, өйткені $A$-дағы бағандар саны 4 және тек $B$-да мұндай жолдар бар. Сондықтан біз өнімді таба аламыз:

\\cdot \left[ \begin(массив)(*(35)(r)) 0 & 1 \\ 2 & 0 \\ 0 & 3 \\ 4 & 0 \\\end(массив) \оңға]=\ сол жақ[ \begin(массив)(*(35)(r))-10 & 7 \\ 10 & 7 \\\end(массив) \оңға]\]

Мен оқырманға аралық қадамдарды өз бетімен орындауды ұсынамын. Алынған матрицаның өлшемін кез келген есептеулер алдында алдын ала анықтаған дұрыс екенін атап өткім келеді:

\\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(массив)(*(35)(r)) 1 & -1 & 2 & -2 \\ 1 & 1 & 2 & 2 \\\end(массив) \оң жақ]=\ left[ \begin(array)(*(35)(r))1 & 1 & 2 & 2 \\ 2 & -2 & 4 & -4 \\ 3 & 3 & 6 & 6 \\ 4 & -4 & 8 және -8 \\\соңы(массив) \оң жақ]\]

Әлбетте, сіз $C\cdot A$ және $B\cdot C$-ға сәйкестендіре аласыз, және солай. Сондықтан біз алынған өнімдерді жай ғана жазамыз:

Бұл оңай болды. :)

Жауап: $AB=\left[ \begin(массив)(*(35)(r)) -10 & 7 \\ 10 & 7 \\\end(массив) \right]$; $BA=\left[ \begin(массив)(*(35)(r)) 1 & 1 & 2 & 2 \\ 2 & -2 & 4 & -4 \\ 3 & 3 & 6 & 6 \\ 4 & -4 & 8 & -8 \\\end(массив) \right]$; $CA=\left[ \begin(массив)(*(35)(r)) 1 & 1 & 2 & 2 \\ 1 & -1 & 2 & -2 \\\end(массив) \right]$; $BC=\left[ \begin(массив)(*(35)(r))1 & 0 \\ 0 & 2 \\ 3 & 0 \\ 0 & 4 \\\end(массив) \right]$.

Жалпы, мен бұл тапсырманы өзіңіз орындауды ұсынамын. Үй тапсырмасындағы тағы бір ұқсас тапсырма. Бұл қарапайым болып көрінетін ойлар матрицаны көбейтудің барлық негізгі қадамдарын жасауға көмектеседі.

Бірақ әңгіме мұнымен бітпейді. Көбейтудің ерекше жағдайларына көшейік. :)

Жол және баған векторлары

Ең көп таралған матрицалық амалдардың бірі - бір жолы немесе бір бағанасы бар матрицаға көбейту.

Анықтама. Баған векторы $\left[ m\times 1 \right]$ матрицасы, яғни. бірнеше жолдан және бір ғана бағаннан тұрады.

Жол векторы $\left[ 1\times n \right]$ өлшемді матрица, яғни. бір жолдан және бірнеше бағандардан тұрады.

Негізі бұл нысандармен кездесіп үлгердік. Мысалы, $\overrightarrow(a)=\left(x;y;z \right)$ стереометриясының қарапайым үш өлшемді векторы жол векторынан басқа ештеңе емес. Теориялық тұрғыдан алғанда жолдар мен бағандар арасында айырмашылық жоқтың қасы. Айналадағы көбейткіш матрицалармен үйлестіру кезінде ғана абай болу керек.

5-тапсырма. Көбейту:

\[\left[ \begin(array)(*(35)(r)) 2 & -1 & 3 \\ 4 & 2 & 0 \\ -1 & 1 & 1 \\\end(массив) \right] \cdot \left[ \begin(массив)(*(35)(r)) 1 \\ 2 \\ -1 \\\end(массив) \оңға]\]

Шешім. Бізде тұрақты матрицалардың туындысы бар: $\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(массив) \right] \cdot \left[ \begin(массив)(*(35)(r)) 1 \\ 2 \\ -1 \\\end(массив) \right]=\left[ \begin(массив)(*(35) )(r)) 2\cdot 1+\left(-1 \оң)\cdot 2+3\cdot \left(-1 \оң) \\ 4\cdot 1+2\cdot 2+0\cdot 2 \ \ -1\cdot 1+1\cdot 2+1\cdot \left(-1 \оң) \\\end(массив) \right]=\left[ \begin(массив)(*(35)(r) ) -3 \\ 8 \\ 0 \\\соңы(массив) \оң жақ]\]

Жауап: $\left[ \begin(массив)(*(35)(r))-3 \\ 8 \\ 0 \\\end(массив) \right]$.

Тапсырма 6. Көбейтуді орындаңыз:

\[\left[ \begin(массив)(*(35)(r)) 1 & 2 & -3 \\\end(массив) \right]\cdot \left[ \begin(массив)(*(35) (r)) 3 & 1 & -1 \\ 4 & -1 & 3 \\ 2 & 6 & 0 \\\соңғы(массив) \оң жақ]\]

Шешім. Тағы да бәрі дәйекті: $\left[ 1\times 3 \right]\cdot \left[ 3\times 3 \right]=\left[ 1\times 3 \right]$. Біз жұмысты қарастырамыз:

\[\left[ \begin(массив)(*(35)(r)) 1 & 2 & -3 \\\end(массив) \right]\cdot \left[ \begin(массив)(*(35) (r)) 3 & 1 & -1 \\ 4 & -1 & 3 \\ 2 & 6 & 0 \\\end(массив) \оңға]=\left[ \begin(массив)(*(35)( r))5 & -19 & 5 \\\соңы(массив) \оң жақ]\]

Жауабы: $\left[ \begin(matrix) 5 & -19 & 5 \\\end(матрица) \right]$.

Көріп отырғаныңыздай, жол векторын және баған векторын шаршы матрицаға көбейткенде, шығыс әрқашан бірдей өлшемдегі жол немесе баған болады. Бұл фактінің көптеген қосымшалары бар - сызықтық теңдеулерді шешуден бастап координаталық түрлендірулердің барлық түрлеріне дейін (олар соңында теңдеулер жүйесіне де келеді, бірақ қайғылы нәрселер туралы айтпай-ақ қояйық).

Менің ойымша, бұл жерде бәрі анық болды. Бүгінгі сабақтың қорытынды бөліміне көшейік.

Матрицалық дәрежеге шығару

Барлық көбейту амалдарының ішінде экспоненциация ерекше назар аударуды қажет етеді - бұл біз бір объектіні өзіне бірнеше рет көбейтеміз. Матрицалар ерекшелік емес, олар әртүрлі дәрежеге дейін көтерілуі мүмкін.

Мұндай жұмыстар әрқашан үйлестіріледі:

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

Және олар қарапайым дәрежелер сияқты тағайындалады:

\[\бастау(туралау) & A\cdot A=((A)^(2)); \\ & A\cdot A\cdot A=((A)^(3)); \\ & \underbrace(A\cdot A\cdot \ldots \cdot A)_(n)=((A)^(n)). \\ \соңы(туралау)\]

Бір қарағанда, бәрі қарапайым. Оның іс жүзінде қалай көрінетінін көрейік:

Тапсырма 7. Матрицаны көрсетілген қуатқа дейін көтеріңіз:

$((\left[ \begin(matrix) 1 & 1 \\ 0 & 1 \\\end(матрица) \right])^(3))$

Шешім. Жарайды, салайық. Алдымен төртбұрыштап алайық:

\[\begin(туралау) & ((\left[ \begin(матрица) 1 & 1 \\ 0 & 1 \\\end(матрица) \оңға])^(2))=\left[ \begin(матрица) ) 1 & 1 \\ 0 & 1 \\\end(матрица) \оң жақ]\cdot \left[ \begin(matrix) 1 & 1 \\ 0 & 1 \\\end(матрица) \оң жақ]= \\ & =\left[ \begin(массив)(*(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(массив) \оң жақ]= \\ & =\left[ \begin(массив)(*(35)(r)) 1 & 2 \\ 0 & 1 \ \\соңы(массив) \оң жақ] \соңы(туралау)\]

\[\begin(туралау) & ((\left[ \begin(матрица) 1 & 1 \\ 0 & 1 \\\end(матрица) \оңға])^(3))=((\left[ \begin) (матрица) 1 & 1 \\ 0 & 1 \\\соңы(матрица) \оң жақ])^(3))\cdot \left[ \begin(матрица) 1 & 1 \\ 0 & 1 \\\end( матрица) \оңға]= \\ & =\left[ \begin(массив)(*(35)(r)) 1 & 2 \\ 0 & 1 \\\end(массив) \оңға]\cdot \left[ \begin(матрица) 1 & 1 \\ 0 & 1 \\\end(матрица) \оңға]= \\ & =\left[ \begin(массив)(*(35)(r)) 1 & 3 \\ 0 және 1 \\\соңы(массив) \оң жақ] \соңы(туралау)\]

Осымен болды.:)

Жауабы: $\left[ \begin(matrix)1 & 3 \\ 0 & 1 \\\end(матрица) \right]$.

Есеп 8. Матрицаны көрсетілген қуатқа дейін көтеріңіз:

\[((\left[ \begin(матрица) 1 & 1 \\ 0 & 1 \\\end(матрица) \оңға])^(10))\]

Шешім. Қазір «дәрежесі тым жоғары», «әлем әділ емес» және «мұғалімдер банктерін мүлде жоғалтты» деп жыламаңыз. Шындығында, бәрі оңай:

\[\begin(туралау) & ((\left[ \begin(матрица) 1 & 1 \\ 0 & 1 \\\end(матрица) \оңға])^(10))=((\left[ \begin) (матрица) 1 & 1 \\ 0 & 1 \\\соңы(матрица) \оң жақ])^(3))\cdot ((\left[ \begin(matrix) 1 & 1 \\ 0 & 1 \\\ end(матрица) \оңға])^(3))\cdot ((\left[ \begin(matrix) 1 & 1 \\ 0 & 1 \\\end(матрица) \оңға])^(3))\ cdot \left[ \begin(матрица) 1 & 1 \\ 0 & 1 \\\end(матрица) \right]= \\ & =\left(\left[ \begin(матрица) 1 & 3 \\ 0 & 1 \\\соңы(матрица) \оңға]\cdot \left[ \begin(матрица) 1 & 3 \\ 0 & 1 \\\end(матрица) \оңға] \оңға)\cdot \left(\left[ \begin(матрица) 1 & 3 \\ 0 & 1 \\\end(матрица) \оңға]\cdot \left[ \begin(матрица) 1 & 1 \\ 0 & 1 \\\end(матрица) \оң ] \right)= \\ & =\left[ \begin(матрица) 1 & 6 \\ 0 & 1 \\\end(матрица) \оң]\cdot \left[ \begin(матрица) 1 & 4 \\ 0 & 1 \\\соңы(матрица) \оңға]= \\ & =\left[ \begin(матрица) 1 & 10 \\ 0 & 1 \\\end(матрица) \оңға] \соңы(туралау)\ ]

Назар аударыңыз, екінші жолда біз көбейтудің ассоциативтілігін қолдандық. Шындығында, біз оны алдыңғы тапсырмада қолдандық, бірақ ол жерде жасырын болды.

Жауабы: $\left[ \begin(matrix) 1 & 10 \\ 0 & 1 \\\end(матрица) \right]$.

Көріп отырғаныңыздай, матрицаны қуатқа көтеруде күрделі ештеңе жоқ. Соңғы мысалды қорытындылауға болады:

\[((\left[ \begin(матрица) 1 & 1 \\ 0 & 1 \\\end(матрица) \оңға])^(n))=\left[ \begin(массив)(*(35) (r)) 1 & n \\ 0 & 1 \\\соңы(массив) \оң жақ]\]

Бұл фактіні математикалық индукция немесе тікелей көбейту арқылы дәлелдеу оңай. Дегенмен, қуатты көтеру кезінде мұндай үлгілерді ұстау әрқашан мүмкін емес. Сондықтан абай болыңыз: онда кейбір үлгілерді іздеуден гөрі бірнеше матрицаларды «бос» көбейту жиі оңай және жылдамырақ.

Жалпы, жоқ жерден жоғары мағынаны іздемеңіз. Соңында, үлкенірек матрицаның экспоненциализациясын қарастырайық - сонша $\left[ 3\times 3 \right]$.

Есеп 9. Матрицаны берілген қуатқа дейін көтеріңіз:

\[((\left[ \begin(матрица) 0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \\\end(матрица) \оң жақ])^(3))\]

Шешім. Үлгілерді іздемейік. Біз «арқылы» жұмыс істейміз:

\[((\left[ \begin(матрица) 0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \\\end(матрица) \оң жақ])^(3))=(( \left[ \begin(матрица) 0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \\\end(матрица) \оңға])^(2))\cdot \left[ \begin (матрица)0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \\\соңы(матрица) \оң жақ]\]

Осы матрицаны квадраттаудан бастайық:

\[\бастау(туралау) & ((\left[ \begin(матрица) 0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \\\end(матрица) \оңға])^( 2))=\left[ \begin(матрица) 0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \\\end(матрица) \оңға]\cdot \left[ \begin(матрица) ) 0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \\\соңы(матрица) \оң]= \\ & =\left[ \begin(массив)(*(35)(r) )) 2 & 1 & 1 \\ 1 & 2 & 1 \\ 1 & 1 & 2 \\\end(массив) \оң жақ] \end(туралау)\]

Енді оны текшелеп алайық:

\[\бастау(туралау) & ((\left[ \begin(матрица) 0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \\\end(матрица) \оңға])^( 3))=\left[ \begin(массив)(*(35)(r)) 2 & 1 & 1 \\ 1 & 2 & 1 \\ 1 & 1 & 2 \\\end(массив) \оңға] \cdot \left[ \begin(матрица) 0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \\\end(матрица) \оңға]= \\ & =\left[ \begin( массив)(*(35)(r)) 2 & 3 & 3 \\ 3 & 2 & 3 \\ 3 & 3 & 2 \\\end(массив) \оң жақ] \end(туралау)\]

Осымен болды. Мәселе шешілді.

Жауабы: $\left[ \begin(матрица) 2 & 3 & 3 \\ 3 & 2 & 3 \\ 3 & 3 & 2 \\\end(матрица) \right]$.

Көріп отырғаныңыздай, есептеулер саны арта түсті, бірақ мағынасы мүлде өзгерген жоқ. :)

Бұл сабақ аяқталуы мүмкін. Келесі жолы біз кері операцияны қарастырамыз: біз бар көбейтіндіні пайдаланып бастапқы көбейткіштерді іздейміз.

Сіз болжағаныңыздай, біз кері матрица және оны табу әдістері туралы айтатын боламыз.



Соңғы бөлім мақалалары:

Араб тіліндегі Құран Кәрім – адамның жаны мен тәнін құтқарушы Құран – араб тіліндегі сүрелер
Араб тіліндегі Құран Кәрім – адамның жаны мен тәнін құтқарушы Құран – араб тіліндегі сүрелер

Ғаламда бар және ондағы болып жатқан барлық нәрсе Құранмен байланысты және онда көрініс табады. Құрансыз адамзатты елестету мүмкін емес және...

Әйел сұлтандығы – Сұлтан экранда да, күнделікті өмірде де еріксіз
Әйел сұлтандығы – Сұлтан экранда да, күнделікті өмірде де еріксіз

Мақалада біз әйелдер сұлтандығына егжей-тегжейлі сипаттама береміз.Оның өкілдері мен олардың билігі туралы, осы кезеңге берілген бағалар туралы ...

Осман империясының билеушілері
Осман империясының билеушілері

Осман империясы құрылғалы бері мемлекетті Османның ер ұрпақтары үздіксіз басқарып келеді. Бірақ әулеттің құнарлылығына қарамастан...