算)
學(xué)會(huì)矩陣的四則運(yùn)算。其中矩陣乘法是最重要也最容易搞混的本章重點(diǎn)講透。17.1 矩陣加減對(duì)應(yīng)元素相加減兩個(gè)尺寸相同的矩陣對(duì)應(yīng)位置的元素相加減[ 1 2 ] [ 5 6 ] [ 15 26 ] [ 6 8 ] [ 3 4 ] [ 7 8 ] [ 37 48 ] [ 10 12 ]規(guī)則同行同列的元素相加。減法同理。17.2 數(shù)乘每個(gè)元素都乘一個(gè)數(shù)一個(gè)標(biāo)量乘矩陣等于矩陣每個(gè)元素都乘這個(gè)標(biāo)量[ 1 2 ] [ 2 4 ] 2 × [ 3 4 ] [ 6 8 ]17.3 轉(zhuǎn)置行列互換轉(zhuǎn)置transpose把矩陣沿對(duì)角線翻轉(zhuǎn)行變列、列變行。[ 1 2 3 ] [ 1 4 ] A [ 4 5 6 ] A? [ 2 5 ] [ 3 6 ]第 i 行變成第 i 列。A 的轉(zhuǎn)置記作 A?或A.transpose()。對(duì)稱矩陣就是轉(zhuǎn)置等于自己的矩陣A? A。17.4 點(diǎn)積內(nèi)積兩個(gè)向量的相似度兩個(gè)同維向量的點(diǎn)積dot product對(duì)應(yīng)分量相乘再求和。(1, 2, 3) · (4, 5, 6) 1×4 2×5 3×6 4 10 18 32點(diǎn)積的意義點(diǎn)積 0兩個(gè)向量垂直正交點(diǎn)積 兩向量長(zhǎng)度乘積則同向點(diǎn)積 0方向大致相反點(diǎn)積是衡量?jī)蓚€(gè)向量有多像的工具在機(jī)器學(xué)習(xí)、物理里無(wú)處不在。17.5 矩陣乘法重點(diǎn)這是最重要的運(yùn)算規(guī)則需要記牢。規(guī)則兩個(gè)矩陣 Am×n和 Bn×p相乘得到 Cm×pA 的列數(shù)必須等于 B 的行數(shù)都是 n結(jié)果 C 的第 i 行第 j 列 A 的第 i 行與B 的第 j 列的點(diǎn)積例子A [ 1 2 ] B [ 5 6 ] [ 3 4 ] [ 7 8 ]A 是 2×2B 是 2×2結(jié)果 C 是 2×2。算 C(0,0)A 第 1 行 (1,2) · B 第 1 列 (5,7) 1×5 2×7 19算 C(0,1)A 第 1 行 (1,2) · B 第 2 列 (6,8) 1×6 2×8 22算 C(1,0)A 第 2 行 (3,4) · B 第 1 列 (5,7) 3×5 4×7 43算 C(1,1)A 第 2 行 (3,4) · B 第 2 列 (6,8) 3×6 4×8 50C [ 19 22 ] [ 43 50 ]矩陣 × 向量向量是只有一列的矩陣所以矩陣乘向量是矩陣乘法的特殊情況[ 1 2 ] [ 1 ] [ 1×1 2×1 ] [ 3 ] [ 3 4 ] × [ 1 ] [ 3×1 4×1 ] [ 7 ]矩陣乘向量 對(duì)向量做一次變換第 21 章會(huì)展開(kāi)這是理解幾何的關(guān)鍵。關(guān)鍵性質(zhì)不滿足交換律矩陣乘法不滿足交換律A×B ≠ B×A大多數(shù)情況下。而且順序影響尺寸2×3 乘 3×4 可以得 2×4但 3×4 乘 2×3 不行列數(shù)不等于行數(shù)。記憶矩陣乘法左矩陣的列 右矩陣的行才能乘結(jié)果尺寸 “左行 × 右列”。17.6 在 Eigen 里做矩陣運(yùn)算#includeEigen/Dense#includeiostreamintmain(){Eigen::Matrix2d A,B;A1,2,3,4;B5,6,7,8;std::coutA B \nAB\n\n;// 對(duì)應(yīng)相加std::cout2 * A \n2*A\n\n;// 數(shù)乘std::coutA * B \nA*B\n\n;// 矩陣乘法std::coutA^T \nA.transpose()\n\n;// 轉(zhuǎn)置Eigen::Vector3du(1,2,3),v(4,5,6);std::cout點(diǎn)積 u.dot(v)\n;// 32return0;}存成ch17.cpp按附錄 C.3 編譯運(yùn)行實(shí)際輸出A B 6 8 10 12 2 * A 2 4 6 8 A * B 19 22 43 50 A^T 1 3 2 4 點(diǎn)積 32A * B得到19 22 / 43 50正好等于你上面手算的結(jié)果——矩陣乘法的算法和代碼是一一對(duì)應(yīng)的。你可以順手加一句std::cout B * A \n;看到B * A是23 34 / 31 46和A * B不同交換律不成立這件事就親眼確認(rèn)了。注意 Eigen 的*A * B是矩陣乘法不是逐元素乘。想逐元素相乘要用.array()第 27 章。這是新手最容易搞錯(cuò)的地方。17.7 小結(jié)加減對(duì)應(yīng)元素相加減尺寸要相同。數(shù)乘每個(gè)元素乘標(biāo)量。轉(zhuǎn)置行列互換。點(diǎn)積對(duì)應(yīng)分量相乘求和。矩陣乘法左矩陣列數(shù) 右矩陣行數(shù)結(jié)果(i,j) 左 i 行點(diǎn)乘右 j 列不滿足交換律。下一章用矩陣表示和解線性方程組——矩陣最重要的應(yīng)用。練習(xí)題計(jì)算兩個(gè) 2×2 矩陣的加減。手算矩陣乘法A[1 2; 3 4]B[5 6; 7 8]求 A×B 和 B×A驗(yàn)證交換律不成立。計(jì)算向量 (1,2,3) 和 (4,5,6) 的點(diǎn)積。求矩陣 [1 2 3; 4 5 6] 的轉(zhuǎn)置。判斷2×3 矩陣能和 3×2 矩陣相乘嗎結(jié)果是多少尺寸