兩個向量相乘是個什麼含義呢?
兩個向量相乘,結果是個標量呢?還是個向量呢?如果是向量,方向是指向哪兒的呢?
從第二個問題我們能看出一些端倪,這並不是乙個很簡單的問題。但是如果僅僅是要使用向量之間的乘法,不去太過在意做法**的話,就能很輕易地講完。(關於做法**,大家可以在學會矩陣以及理解矩陣與空間轉換關係之後去看下3blue1brown線性代數系列第7、第8集)
對於3d空間而言,我們會有兩種向量相乘的做法:
其中點乘的做法對任意維度都適用,但叉乘僅適用與3d或7d的情況。如果你對7d的叉乘感興趣,請自行閱讀《cross products of vectors in higher dimensional euclidean spaces》(麥子我沒接觸過)
今天我們先來講講點乘。
點乘的結果會是乙個標量,同時可以看成乙個向量在另乙個向量方向上的投影長度與另乙個向量長度相乘。聽起來拗口啊,但是看到數學表示式應該就很清楚了。
其中 是兩個向量之間的夾角,因此
就是向量
在向量
方向上的投影長度,之後這個長度再與
進行最平常的相乘。同理,也可以認為
是 在
方向上的投影長度。
如果 ,
,那麼我們還可以用如下方法進行點乘計算:
,值得一提的是,為什麼這兩種表達方式是向等的呢?這裡給大家看個三角形應該可以簡要說明下這個問題。
如圖所示,這個三角形由三個向量包圍而成,
, 以及
,餘弦定理(不記得這個定理了,可以看看文章最下面)告訴我們
, 愛xr的麥子:回歸本源系列1.1-向量簡介zhuanlan.zhihu.com
由此我們就有了
最後就是我們想要的點乘公式了:
希望你也能看出來,整個證明流程實際上並不只限於3d。
(*) 如上一講提到過的,在計算機中常把向量之間的操作直接看成矩陣操作。熟悉矩陣的朋友應該一眼就看出來,這個點乘可以被看成
這樣的矩陣操作。(不熟悉的朋友也沒事,快講到了)
點乘也具有一些很重要但是不難想到的性質,可以自己去思考下為啥它們是對的
留意下第四點,它直接**於乙個向量自己在自己方向的投影自然還是它自己。同時也說明
和點乘的大小也反應了兩個向量有多「平行」。
兩個向量越「平行「,絕對值越大;反之,兩個向量越「垂直」,絕對值越小。
這也是為什麼點乘在物理裡也是無處不在,最直接的例子就是初中物理裡強調過的
平行於物體移動方向的力做功:雖然那個時候還沒講點乘,但是也能看出這個概念並不是很遙遠。
關於點乘最後講兩個點。如果你就是想知道乙個向量在另乙個向量方向的投影向量,怎麼辦?相信你能很自然地告訴我,
在 方向上的投影就是
,同時
垂直於
方向的向量
就可以用
和 的差值來得到
,沒看出來的小夥伴最好自己畫畫圖看看。
(*) 最後,關於投影向量可以用矩陣一步到位地求出來,有興趣的小夥伴可以自己試一試
。繼續補下python那class
這次可以試下向量點乘的性質了。class vector_3d(object):
def __init__(self, x, y, z, iftransposed=false):
# 預設是豎向量
super(vector_3d, self).__init__()
self.x = x
self.y = y
self.z = z
self.iftransposed = iftransposed
# ......
def dot(self, another_vector):
assert type(another_vector) is vector_3d
assert another_vector.iftransposed == false
return self.x * another_vector.x +
self.y * another_vector.y +
self.z * another_vector.z
def proj(self, project_to):
assert type(project_to) is vector_3d
return self.dot(project_to)/abs(project_to) * project_to.unit()
def perp(self, perpendicular_to):
assert type(perpendicular_to) is vector_3d
return self - self.proj(perpendicular_to)
好了,點乘的介紹就到這裡了,明天將會繼續更新叉乘,有興趣的小夥伴可以點個收藏。
這裡就是再補充下餘弦定理,
,嘛,這個證明還是很簡單的了,任意一三角形,三邊分別為
, 和
,角 是
、 兩邊的夾角。如圖做垂線:
右側的小三角形做勾股定理
於是就有了我們的餘弦定理了。
點乘 線性代數 線性代數 1 3C 矩陣
我們在前面費了好大得勁,從線性組合和空間兩個角度,描述了線性變換。你可能要問,為什麼向量在原來的空間,用i 和j 活的挺好,為什麼要費這麼大的勁換乙個基向量組,把整個空間全都換一遍呢?這全部的一切,都是為了引出整個線性代數學科中概念的核心 矩陣。我們前面講過線性變換,像乙個黑盒子,或者乙個函式 如果...
《吳恩達機器學習》3 線性代數回顧
二 矩陣和向量運算 三 矩陣運算特性 四 逆矩陣和轉置 總結線性代數的知識在機器學習中是非常重要的,幾乎所有的運算都是基於矩陣 matrix 向量 vector 的運算,因此打好線性代數的基礎 不求精通,只要基本的運算既可 是學習好machine learning的關鍵。1 張量 張量 tensor...
點乘 線性代數 線性代數複習(一)方程組的幾何解釋
這裡是jerry,第一次寫理科學習的感悟,感覺非常有趣 原以為我最多寫寫政治課的報告 本章難度極低,但卻是理解線性代數最基礎的內容,希望高中小朋友 曾經的我 也能從中獲益。不多說,進入正題。以方程組 首先化為矩陣形式 row picture 這是兩條直線相交的形式 column picture 這是...