כפל מטריצות

במתמטיקה, במיוחד באלגברה ליניארית, כפל מטריצות הוא פעולה בינארית שמייצרת מטריצה משתי מטריצות. כדי שהכפל יהיה מוגדר, מספר העמודות במטריצה הראשונה חייב להיות שווה למספר השורות במטריצה השנייה. במטריצה המתקבלת, המכונה מטריצת המכפלה, מספר השורות שווה לזה של המטריצה הראשונה, ומספר העמודות שווה לזה של המטריצה השנייה. כפל מטריצות תואר לראשונה על ידי המתמטיקאי הצרפתי ז'אק פיליפ מארי בינט בשנת 1812, כדי לייצג הרכבה של העתקות ליניאריות המיוצגות על ידי מטריצות. כפל מטריצה הוא אפוא כלי בסיסי של אלגברה ליניארית, וככזה יש לו יישומים רבים בתחומים רבים של מתמטיקה, כמו גם במתמטיקה שימושית, סטטיסטיקה, פיזיקה, הנדסה וכלכלה. חישוב כפל מטריצות הוא פעולה מרכזית בכל היישומים החישוביים של אלגברה ליניארית. באלגברה ליניארית, כפל של מטריצות מוגדר כך שמכפלת המטריצות המייצגות של שתי העתקות ליניאריות היא המטריצה המייצגת את הרכבת ההעתקות. המכפלה של מטריצות היא אסוציאטיבית ודיסטריביוטיבית ביחס לחיבור, אבל אינה קומוטטיבית (כלומר, לא בהכרח מתקיים A B = B A {\displaystyle AB=BA} ). המכפלה של מטריצה A {\displaystyle A} במטריצה B {\displaystyle B} מוגדרת רק כאשר מספר העמודות של A {\displaystyle A} שווה למספר השורות של B {\displaystyle B} , ואז מספר השורות במכפלה A B {\displaystyle AB} שווה למספר השורות של A {\displaystyle A} , ומספר העמודות שווה למספר העמודות של B {\displaystyle B} . תהיינה A = ( a i j ) {\displaystyle A=(a_{ij})} מטריצה בגודל n × m {\displaystyle n\times m} ו- B = ( b i j ) {\displaystyle B=(b_{ij})} מטריצה בגודל m × p {\displaystyle m\times p} . לפי ההגדרה, מכפלתן היא מטריצה AB בגודל n × p {\displaystyle n\times p} , שאבריה מוגדרים לפי הנוסחה ( A B ) i j = ∑ k = 1 m A i k B k j {\displaystyle (AB)_{ij}=\sum _{k=1}^{m}A_{ik}B_{kj}} . האיבר בשורה i {\displaystyle i} ובעמודה j {\displaystyle j} של המכפלה AB מתקבל מהכפלת השורה ה- i {\displaystyle i} במטריצה הראשונה בעמודה ה- j {\displaystyle j} במטריצה השנייה. מספר האיברים הן בשורה והן בעמודה זהה - m {\displaystyle m} ; אחרת הכפל אינו מוגדר. כלומר, דרוש שמספר העמודות במטריצה הראשונה יהיה שווה למספר השורות במטריצה השנייה - מספר העמודות במטריצה השנייה קובע כמה איברים יהיו בכל שורה שלה, ואילו מספר השורות במטריצה הראשונה קובע כמה איברים יהיו בכל עמודה שלה. כאן פעולת הכפל של הווקטורים דומה למכפלה סקלרית רכיב רכיב: כופלים כל זוג איברים בעלי אותו מספר, וסוכמים את כל המכפלות. התמונה מראה כפל של מטריצה A מסדר 4 × 2 {\displaystyle 4\times 2} במטריצה B מסדר 2 × 3 {\displaystyle 2\times 3} : המטריצה המתקבלת היא מסדר 4 × 3 {\displaystyle 4\times 3} . בתמונה מראים כיצד מחושב האיבר ( A B ) 12 {\displaystyle (AB)_{12}} במטריצה: השורה הראשונה במטריצה A {\displaystyle A} מוכפלת בעמודה השנייה במטריצה B {\displaystyle B} . ( 1 0 − 1 3 ) × ( 3 1 2 1 ) {\displaystyle {\begin{pmatrix}1&0\\-1&3\end{pmatrix}}\times {\begin{pmatrix}3&1\\2&1\\\end{pmatrix}}} = ( ( 1 × 3 + 0 × 2 ) ( 1 × 1 + 0 × 1 ) ( − 1 × 3 + 3 × 2 ) ( − 1 × 1 + 3 × 1 ) ) = ( 3 1 3 2 ) {\displaystyle ={\begin{pmatrix}(1\times 3+0\times 2)&(1\times 1+0\times 1)\\(-1\times 3+3\times 2)&(-1\times 1+3\times 1)\end{pmatrix}}={\begin{pmatrix}3&1\\3&2\end{pmatrix}}} כפל מטריצות אינו קומוטטיבי כלומר A B {\displaystyle AB} אינו בהכרח שווה ל- B A {\displaystyle BA} : ( 1 2 0 4 3 − 1 ) ( 5 1 2 3 3 4 ) = ( 9 7 23 9 ) {\displaystyle {\begin{pmatrix}1&2&0\\4&3&-1\\\end{pmatrix}}{\begin{pmatrix}5&1\\2&3\\3&4\\\end{pmatrix}}={\begin{pmatrix}9&7\\23&9\\\end{pmatrix}}} בעוד ש ( 5 1 2 3 3 4 ) ( 1 2 0 4 3 − 1 ) = ( 9 13 − 1 14 13 − 3 19 18 − 4 ) {\displaystyle {\begin{pmatrix}5&1\\2&3\\3&4\\\end{pmatrix}}{\begin{pmatrix}1&2&0\\4&3&-1\\\end{pmatrix}}={\begin{pmatrix}9&13&-1\\14&13&-3\\19&18&-4\\\end{pmatrix}}} לשתי מטריצות יש תפקיד מיוחד ביחס לכפל: מטריצת האפס (שכל רכיביה אפסים) היא נייטרלית ביחס לחיבור (כלומר, A + 0 = 0 + A = A {\displaystyle A+0=0+A=A} ), ותוצאת הכפל במטריצת האפס היא תמיד אפס ( 0 ⋅ A = A ⋅ 0 = 0 {\displaystyle 0\cdot A=A\cdot 0=0} ). מטריצת היחידה I {\displaystyle I} , שהיא מטריצה ריבועית, שרכיבי האלכסון שלה הם 1 ושאר הרכיבים אפס, היא נייטרלית ביחס לכפל (כלומר, A ⋅ I = I ⋅ A = A {\displaystyle A\cdot I=I\cdot A=A} ). אוסף המטריצות הריבועיות מעל שדה, עם פעולת החיבור הרגילה והכפל שהוגדר כאן, הוא חוג פשוט. הכפלת שתי מטריצות ריבועיות בגודל n על n על פי ההגדרה דורש סיבוכיות של סדר גודל n בשלישית פעולות. ב-1969 הראה וולקר שטראסן כי ניתן להכפיל מטריצות באופן יעיל יותר ("אלגוריתם שטראסן") של n log 2 ⁡ 7 {\displaystyle n^{\log _{2}7}} (בערך 2.807). שיפורים נוספים הורידו את החזקה ל-2.376 (על ידי דון קופרסמיט ושמואל וינוגרד, 1987), ואז ל-2.373 (2010). זו הסיבוכיות הטובה ביותר הידועה, אם כי הקבועים העצומים הופכים את האלגוריתם הזה לתאורטי בלבד. אף על פי שנראה כי הגדרתו של הכפל בלתי אינטואיטיבית, ניתן לראות במספר דוגמאות את יעילותו: כאשר מייצגים טרנספורמציות ליניאריות באמצעות מטריצות, הטרנספורמציה המתקבלת מהרכבת אחת הטרנספורמציות על השנייה מיוצגת באמצעות מטריצה שהיא מכפלת המטריצות המייצגות של הטרנספורמציות המורכבות. בייצוג טרנספורמציה ליניארית על ידי מטריצה, הפעלת הטרנספורמציה על וקטור שקולה להכפלת וקטור הקוארדינטות שלו במטריצה. הדטרמיננטה של מכפלה של שתי מטריצות שווה למכפלה של שתי הדטרמיננטות שלהן. מכפלה טנזורית או "מכפלת קרונקר" של מטריצות A ∈ F m × n {\displaystyle A\in F^{m\times n}} ו- B ∈ F k × ℓ {\displaystyle B\in F^{k\times \ell }} היא מטריצה A ⊗ B ∈ F m k × n ℓ {\displaystyle A\otimes B\in F^{mk\times n\ell }} , המורכבת מהכפלת הרכיבים של A במטריצה B, במתכונת A ⊗ B = ( a 11 B a 12 B ⋯ a 1 n B ⋮ ⋮ ⋱ ⋮ a m 1 B a m 2 B ⋯ a m n B ) {\displaystyle A\otimes B={\begin{pmatrix}a_{11}B&a_{12}B&\cdots &a_{1n}B\\\vdots &\vdots &\ddots &\vdots \\a_{m1}B&a_{m2}B&\cdots &a_{mn}B\end{pmatrix}}} . לדוגמה: ( 1 2 3 1 ) ⊗ ( 0 3 2 1 ) = ( 1 × 0 1 × 3 2 × 0 2 × 3 1 × 2 1 × 1 2 × 2 2 × 1 3 × 0 3 × 3 1 × 0 1 × 3 3 × 2 3 × 1 1 × 2 1 × 1 ) = ( 0 3 0 6 2 1 4 2 0 9 0 3 6 3 2 1 ) {\displaystyle {\begin{pmatrix}1&2\\3&1\\\end{pmatrix}}\otimes {\begin{pmatrix}0&3\\2&1\\\end{pmatrix}}={\begin{pmatrix}1\times 0&1\times 3&2\times 0&2\times 3\\1\times 2&1\times 1&2\times 2&2\times 1\\3\times 0&3\times 3&1\times 0&1\times 3\\3\times 2&3\times 1&1\times 2&1\times 1\\\end{pmatrix}}={\begin{pmatrix}0&3&0&6\\2&1&4&2\\0&9&0&3\\6&3&2&1\end{pmatrix}}} . פעולה זו אינה קומוטטיבית, אבל היא מקיימת ( A ⊗ B ) ( A ′ ⊗ B ′ ) = A A ′ ⊗ B B ′ {\displaystyle (A\otimes B)(A'\otimes B')=AA'\otimes BB'} . מכפלה איבר איבר של מטריצות מכונה "מכפלת אדמר" (Hadamard). באופן פורמלי היא מוגדרת כך: אם A = ( a i j ) {\displaystyle A=(a_{ij})} , B = ( b i j ) {\displaystyle B=(b_{ij})} הן שתי מטריצות בגודל n × m {\displaystyle n\times m} , אז מכפלת הדמר שלהן מוגדרת כך: ( A ⊙ B ) i j =   ( A ∘ B ) i j = ( a i j ⋅ b i j ) {\displaystyle (A\odot B)_{ij}=\ (A\circ B)_{ij}=(a_{ij}\cdot b_{ij})} . עבור מטריצות שאינן מאותו גודל המכפלה אינה מוגדרת. דוגמה: ( 1 3 2 1 0 0 1 2 2 ) ⊙ ( 0 0 2 7 5 0 2 1 1 ) = ( 1 × 0 3 × 0 2 × 2 1 × 7 0 × 5 0 × 0 1 × 2 2 × 1 2 × 1 ) = ( 0 0 4 7 0 0 2 2 2 ) {\displaystyle {\begin{pmatrix}1&3&2\\1&0&0\\1&2&2\end{pmatrix}}\odot {\begin{pmatrix}0&0&2\\7&5&0\\2&1&1\end{pmatrix}}={\begin{pmatrix}1\times 0&3\times 0&2\times 2\\1\times 7&0\times 5&0\times 0\\1\times 2&2\times 1&2\times 1\end{pmatrix}}={\begin{pmatrix}0&0&4\\7&0&0\\2&2&2\end{pmatrix}}} כפל זה הוא מטריצה חלקית של כפל קרונקר שהודגם למעלה. תכונותיה של מכפלה זו נחקרות במסגרת תורת המטריצות, אך היא אינה שימושית במיוחד בתחומים אחרים. מדיה וקבצים בנושא כפל מטריצות בוויקישיתוף מחשבון כפל מטריצות כפל מטריצות, באתר MathWorld (באנגלית) Why do we multiply matrices the way we do??, סרטון בערוץ "Michael Penn", באתר יוטיוב (אורך: 16:26) http://theory.stanford.edu/~virgi/matrixmult-f.pdf שני הסימונים, ⊙ {\displaystyle \odot } ו- ∘ {\displaystyle \circ } , מקובלים עבור מכפלת אמדר.