当前位置: 首页 > news >正文

《机器学习数学基础》补充资料:四元数、点积和叉积

《机器学习数学基础》第1章1.4节介绍了内积、点积的有关概念,特别辨析了内积空间、欧几里得空间;第4章4.1.1节介绍了叉积的有关概念;4.1.2节介绍了张量积(也称外积)的概念。

以上这些内容,在不同资料中,所用术语的含义会有所差别,读者阅读的时候,不妨注意,一般资料中,都是在欧几里得空间探讨有关问题,并且是在三维的欧氏空间中,其实质所指即相同。但是,如果不是在欧氏空间中,各概念、术语则不能混用。

下面从数学史的角度,参考有关文献,阐述 R 3 \mathbb{R}^3 R3 空间中点积和叉积的内容,目的借此深入理解《机器学习数学基础》中有关概念。

再次强调,以下讨论,是在三维欧几里得空间

而对点积和叉积的探讨,不得不从四元数开始。

1. 四元数

1.1 哈密顿

威廉·卢云·哈密顿爵士(英語:Sir William Rowan Hamilton,1805年8月4日-1865年9月2日),爱尔兰数学家、物理学家和天文学家。

“哈密顿”这个名称,在物理学中经常会见到,因为哈密顿在1833年建立了经典力学的重新表述(与之对应的另外一个表述是拉格朗日力学) [ 4 ] ^{[4]} [4] ,并且此成果也被应用在量子力学中。

在数学方面,哈密顿最著名的贡献在于发现了四元数,在如今的计算机图形学、控制理论、信号处理、轨道力学等领域,都有四元数的应用。

此外,哈密顿还是语言天才,参考文献 [5] 中列出了他所懂的语言,抄录如下:

哈密顿还精通多种语言。除了欧洲语言之外,他还懂得波斯语、希腊语、拉丁语、希伯来文、古代巴勒底的巴比伦文、印度梵语、佛教原典所用的巴利语、意大利语、法语、阿拉伯语、孟加拉语、巴基斯坦语、马来语、梵文和中文等。

在这里插入图片描述

哈密顿

1.2 四元数定义

在复数 z = a + b i z=a+bi z=a+bi 中,虚数单位 i 2 = − 1 i^2 = -1 i2=1 ,每个复数都可以视为平面上的一个点。

在三维欧几里得空间中,每个点可以用一个有序数 ( a , b , c ) (a,b,c) (a,b,c) 表示,这些点之间可以进行加法运算,但能不能做乘法运算?这个问题哈密顿也曾思考。据记载 [ 6 ] ^{[6]} [6] ,1843年10月16日,哈密顿与夫人在运河边散步,经过一座桥,突然领悟到了四元数的定义,现在那座桥旁还立有石碑。
在这里插入图片描述

Brougham 桥旁的石碑,这里是哈密顿获得四元素灵感之地

石碑上的内容如下:

Here as he walked by on the 16th of October 1843 Sir William Rowan Hamilton in a flash of genius discovered the fundamental formula for quaternion multiplication
i 2 = j 2 = k 2 = i j k = − 1 i^2 = j^2 = k^2 = ijk = −1 i2=j2=k2=ijk=1
& cut it on a stone of this bridge.

每个四元数(quaternion)都是 1 , i , j , k 1,i,j,k 1,i,j,k 的线性组合,即一个四元数表示为:

a + b i + c j + d k a+bi+cj+dk a+bi+cj+dk

其中, i 2 = j 2 = k 2 = i j k = − 1 i^2=j^2=k^2=ijk=-1 i2=j2=k2=ijk=1 a , b , c , d a,b,c,d a,b,c,d 是实数。

四元数加法,与向量加法类似:

( a 1 + b 1 i + c 1 j + d 1 k ) + ( a 2 + b 2 i + c 2 j + d 2 k ) = ( a 1 + a 2 ) + ( b 1 + b 2 ) i + ( c 1 + c 2 ) j + ( d 1 + d 2 ) k (a_1+b_1i+c_1j+d_1k)+(a_2+b_2i+c_2j+d_2k)=(a_1+a_2)+(b_1+b_2)i+(c_1+c_2)j+(d_1+d_2)k (a1+b1i+c1j+d1k)+(a2+b2i+c2j+d2k)=(a1+a2)+(b1+b2)i+(c1+c2)j+(d1+d2)k

1.3 四元数乘法

根据四元数定义中规定的 i 2 = j 2 = k 2 = i j k = − 1 i^2=j^2=k^2=ijk=-1 i2=j2=k2=ijk=1 ,可以进行虚数单位间的乘法计算,例如:

  • i j k = − 1 ijk = -1 ijk=1 ,右乘 k k k ,得: i j k 2 = i j ( − 1 ) = − i j = − k ijk^2=ij(-1)=-ij=-k ijk2=ij(1)=ij=k ,即 i j = k ij=k ij=k
  • i j k = − 1 ijk = -1 ijk=1 ,左乘 i i i ,得: i 2 j k = ( − 1 ) j k = − j k = − i i^2jk=(-1)jk=-jk=-i i2jk=(1)jk=jk=i ,即 j k = i jk=i jk=i
  • 根据 j k = i jk=i jk=i ,左乘 j j j ,得: j 2 k = j i j^2k=ji j2k=ji ,即 − k = j i -k=ji k=ji

可以得到如下乘法表:

. 1 1 1 i i i j j j k k k
1 1 1 1 1 1 i i i j j j k k k
i i i i i i − 1 -1 1 k k k − j -j j
j j j j j j − k -k k − 1 -1 1 i i i
k k k k k k j j j − i -i i − 1 -1 1

从上表中会发现,四元数的乘法显然不满足交换律,比如 i j = k ij=k ij=k ,而 j i = − k ji=-k ji=k

两个四元数相乘:

( a 1 + b 1 i + c 1 j + d 1 k ) ( a 2 + b 2 i + c 2 j + d 2 k ) = a 1 a 2 + a 1 b 2 i + a 1 c 2 j + a 1 d 2 k + b 1 a 2 i + b 1 b 2 i 2 + b 1 c 2 i j + b 1 d 2 i k + c 1 a 2 + c 1 b 2 j i + c 1 c 2 j 2 + c 1 d 2 j k + d 1 a 2 + d 1 b 2 k i + d 1 c 2 k j + d 1 d 2 k 2 = ( a 1 a 2 − b 1 b 2 − c 1 c 2 − d 1 d 2 ) + ( a 1 b 2 + b 1 a 2 + c 1 d 2 − d 1 c 2 ) i + ( a 1 c 2 − b 1 d 2 + c 1 a 2 + d 1 b 2 ) j + ( a 1 d 2 + b 1 c 2 − c 1 b 2 + d 1 a 2 ) k (1.1) \begin{split} &(a_1+b_1i+c_1j+d_1k)(a_2+b_2i+c_2j+d_2k) \\= &a_1a_2+a_1b_2i+a_1c_2j+a_1d_2k+b_1a_2i+b_1b_2i^2+b_1c_2ij+b_1d_2ik \\& +c_1a_2+c_1b_2ji+c_1c_2j^2+c_1d_2jk+d_1a_2+d_1b_2ki+d_1c_2kj+d_1d_2k^2 \\=&(a_1a_2-b_1b_2-c_1c_2-d_1d_2) \\&+(a_1b_2+b_1a_2+c_1d_2-d_1c_2)i \\&+(a_1c_2-b_1d_2+c_1a_2+d_1b_2)j \\&+(a_1d_2+b_1c_2-c_1b_2+d_1a_2)k \end{split} \tag{1.1} ==(a1+b1i+c1j+d1k)(a2+b2i+c2j+d2k)a1a2+a1b2i+a1c2j+a1d2k+b1a2i+b1b2i2+b1c2ij+b1d2ik+c1a2+c1b2ji+c1c2j2+c1d2jk+d1a2+d1b2ki+d1c2kj+d1d2k2(a1a2b1b2c1c2d1d2)+(a1b2+b1a2+c1d2d1c2)i+(a1c2b1d2+c1a2+d1b2)j+(a1d2+b1c2c1b2+d1a2)k(1.1)

标量与四元数相乘:

α ( a + b i + c j + d k ) = α a + α b i + α c j + α d k \alpha(a+bi+cj+dk)=\alpha a+\alpha bi+\alpha cj+\alpha dk α(a+bi+cj+dk)=αa+αbi+αcj+αdk

四元数的加法运算和标量乘法运算,符合向量空间的加法和乘法封闭,以及向量空间的8条运算法则(参阅《机器学习数学基础》第1章1.2.1节),故四元数的集合可视为一个定义于实数的四维向量空间:

H = { a + b i + c j + d k ∣ a , b , c , d ∈ R , i 2 = j 2 = k 2 = i j k = − 1 } \mathbb{H} = \{a+bi+cj+dk|a,b,c,d\in\mathbb{R},i^2=j^2=k^2=ijk=-1\} H={a+bi+cj+dka,b,c,dR,i2=j2=k2=ijk=1}

此向量空间的基为 { 1 , i , j , k } \{1,i,j,k\} {1,i,j,k}

1.4 共轭和逆

q = a + b i + c j + d k q=a+bi+cj+dk q=a+bi+cj+dk

  • 四元数的共轭定义为: q ∗ = a − b i − c j − d k q^*=a-bi-cj-dk q=abicjdk

  • 绝对值(模,长度,norm): ∣ q ∣ = q q ∗ = q ∗ q = a 2 + b 2 + c 2 + d 2 |q|=\sqrt{qq^*}=\sqrt{q^*q}=\sqrt{a^2+b^2+c^2+d^2} q=qq =qq =a2+b2+c2+d2 (此处使用了 q q ∗ = q ∗ q qq^*=q^*q qq=qq 结论,证明见后续内容 )

  • q 1 , q 2 ∈ H q_1,q_2\in\mathbb{H} q1,q2H ,则 ( q 1 q 2 ) ∗ = q 2 ∗ q 1 ∗ (q_1q_2)^*=q_2^*q_1^* (q1q2)=q2q1 ,且 ∣ q 1 q 2 ∣ = ∣ q 1 ∣ ∣ q 2 ∣ |q_1q_2|=|q_1||q_2| q1q2=q1∣∣q2

    证明

    ∣ q 1 q 2 ∣ 2 = ( q 1 q 2 ) ( q 1 q 2 ) ∗ = q 1 q 2 q 2 ∗ q 1 ∗ = q 1 ∣ q 2 ∣ 2 q 1 ∗ = q 1 q 1 ∗ ∣ q 2 ∣ 2 = ∣ q 1 ∣ 2 ∣ q 2 ∣ 2 \begin{split}|q_1q_2|^2 &= (q_1q_2)(q_1q_2)^*\\ &= q_1q_2q_2^*q_1^*\\&=q_1|q_2|^2q_1^*\\&=q_1q_1^*|q_2|^2\\&=|q_1|^2|q_2|^2\end{split} q1q22=(q1q2)(q1q2)=q1q2q2q1=q1q22q1=q1q1q22=q12q22

  • q ≠ 0 q\ne 0 q=0 ,定义逆元: q − 1 = q ∗ ∣ q ∣ 2 q^{-1}=\frac{q^*}{|q|^2} q1=q2q

    验证

    q − 1 q = q q − 1 = 1 q^{-1}q=qq^{-1}=1 q1q=qq1=1

    ∣ q ∣ = 1 |q|=1 q=1 ,即 q q q 是单位四元数,则 q − 1 = q ∗ q^{-1}=q^* q1=q

1.5 四元数表示:标量-向量

i , j , k \pmb{i,j,k} i,j,k R 3 \mathbb{R}^3 R3 的单位向量(标准正交基),四元数 q = a + b i + c j + d k q=a+bi+cj+dk q=a+bi+cj+dk 可以表示为:

q = a + v q=a+\pmb{v} q=a+v

其中 a ∈ R a\in\mathbb{R} aR v = b i + c j + d k ∈ R 3 \pmb{v} = b\pmb{i}+c\pmb{j}+d\pmb{k}\in\mathbb{R}^3 v=bi+cj+dkR3 ,且 i 2 = j 2 = k 2 = i j k = − 1 \pmb{i}^2=\pmb{j}^2=\pmb{k}^2=\pmb{ijk}=-1 i2=j2=k2=ijk=1

1878年,英国数学家 William Kingdon Clifford [ 7 ] ^{[7]} [7] 使用上述表示方式,计算两个四元数的乘积:

q 1 q 2 = ( a 1 + v 1 ) ( a 2 + v 2 ) = ( a 1 a 2 − v 1 ⋅ v 2 ) + ( a 1 v 2 + a 2 v 1 + v 1 × v 2 ) (1.2) q_1q_2=(a_1+\pmb{v}_1)(a_2+\pmb{v}_2)=(a_1a_2-\pmb{v}_1\cdot\pmb{v}_2)+(a_1\pmb{v}_2+a_2\pmb{v}_1+\pmb{v}_1\times\pmb{v}_2) \tag{1.2} q1q2=(a1+v1)(a2+v2)=(a1a2v1v2)+(a1v2+a2v1+v1×v2)(1.2)

推导

因为:

v 1 ⋅ v 2 = b 1 b 2 + c 1 c 2 + d 1 d 2 \pmb{v}_1\cdot\pmb{v}_2=b_1b_2+c_1c_2+d_1d_2 v1v2=b1b2+c1c2+d1d2

v 1 × v 2 = ∣ i j k b 1 c 1 d 1 b 2 c 2 d 2 ∣ = ( c 1 d 2 − c 2 d 1 ) i + ( d 1 b 2 − d 2 b 1 ) j + ( b 1 c 2 − b 2 c 1 ) k \pmb{v}_1\times\pmb{v}_2=\begin{vmatrix}i&j&k\\b_1&c_1&d_1\\b_2&c_2&d_2\end{vmatrix}=(c_1d_2-c_2d_1)i+(d_1b_2-d_2b_1)j+(b_1c_2-b_2c_1)k v1×v2= ib1b2jc1c2kd1d2 =(c1d2c2d1)i+(d1b2d2b1)j+(b1c2b2c1)k

代入(1.1)式,得:

q 1 q 2 = ( a 1 a 2 − v 1 ⋅ v 2 ) + a 1 ( b 2 i + c 2 j + d 2 k ) + a 2 ( b 1 i + c 1 j + d 1 k ) + ( c 1 d 2 − d 1 c 2 ) i + ( d 1 b 2 − d 2 b 1 ) j + ( b 1 c 2 − b 2 c 1 ) k = ( a 1 a 2 − v 1 ⋅ v 2 ) + ( a 1 v 2 + a 2 v 1 + v 1 × v 2 ) \begin{split}q_1q_2 &= (a_1a_2-\pmb{v}_1\cdot\pmb{v}_2)+a_1(b_2i+c_2j+d_2k)+a_2(b_1i+c_1j+d_1k)\\&\quad+(c_1d_2-d_1c_2)i+(d_1b_2-d_2b_1)j+(b_1c_2-b_2c_1)k\\&=(a_1a_2-\pmb{v}_1\cdot\pmb{v}_2)+(a_1\pmb{v}_2+a_2\pmb{v}_1+\pmb{v}_1\times\pmb{v}_2)\end{split} q1q2=(a1a2v1v2)+a1(b2i+c2j+d2k)+a2(b1i+c1j+d1k)+(c1d2d1c2)i+(d1b2d2b1)j+(b1c2b2c1)k=(a1a2v1v2)+(a1v2+a2v1+v1×v2)

(1.2)式中,即有两个向量的点积和叉积。

很可惜,Clifford提出了点积和叉积之后,未及推广,英年早逝。

1901年,美国物理学家吉布斯(Josiah Willard Gibbs)的学生将他的课堂讲义整理成书,名为《向量分析》(Vector Analysis),通过这个著名的教科书,点积和叉积得以推广。

2. 行列式与叉积

《机器学习数学基础》第4章4.1.1节中定义叉积,使用的是最常规的几何方法,下面根据参考文献 [8],从行列式角度来理解叉积。

A = [ a b c ] \pmb{A}=[\pmb{a}\quad\pmb{b}\quad\pmb{c}] A=[abc] ,有:KaTeX parse error: \tag works only in display equations

又因为:

det ⁡ ( a , b , c ) = ∣ a 1 b 1 c 1 a 2 b 2 c 2 a 3 b 3 c 3 ∣ = c 1 ∣ a 2 b 2 a 3 b 3 ∣ − c 2 ∣ a 1 b 1 a 3 b 3 ∣ + c 3 ∣ a 1 b 1 a 2 b 2 ∣ = c 1 ∣ a 2 a 3 b 2 b 3 ∣ + c 2 ∣ a 3 a 1 b 3 b 1 ∣ + c 3 ∣ a 1 a 2 b 1 b 2 ∣ \begin{split}\det(\pmb{a},\pmb{b},\pmb{c})&=\begin{vmatrix}a_1&b_1&c_1\\a_2&b_2&c_2\\a_3&b_3&c_3\end{vmatrix}\\&=c_1\begin{vmatrix}a_2&b_2\\a_3&b_3\end{vmatrix}-c_2\begin{vmatrix}a_1&b_1\\a_3&b_3\end{vmatrix}+c_3\begin{vmatrix}a_1&b_1\\a_2&b_2\end{vmatrix}\\&=c_1\begin{vmatrix}a_2&a_3\\b_2&b_3\end{vmatrix}+c_2\begin{vmatrix}a_3&a_1\\b_3&b_1\end{vmatrix}+c_3\begin{vmatrix}a_1&a_2\\b_1&b_2\end{vmatrix}\end{split} det(a,b,c)= a1a2a3b1b2b3c1c2c3 =c1 a2a3b2b3 c2 a1a3b1b3 +c3 a1a2b1b2 =c1 a2b2a3b3 +c2 a3b3a1b1 +c3 a1b1a2b2

所以:

a × b = ( ∣ a 2 a 3 b 2 b 3 ∣ , ∣ a 3 a 1 b 3 b 1 ∣ , ∣ a 1 a 2 b 1 b 2 ∣ ) T (2.2) \pmb{a}\times\pmb{b}=\left(\begin{vmatrix}a_2&a_3\\b_2&b_3\end{vmatrix},\begin{vmatrix}a_3&a_1\\b_3&b_1\end{vmatrix},\begin{vmatrix}a_1&a_2\\b_1&b_2\end{vmatrix}\right)^T\tag{2.2} a×b=( a2b2a3b3 , a3b3a1b1 , a1b1a2b2 )T(2.2)

2.1 用行列式证明叉积性质

  • 数量乘法结合律: ( k a ) × b = a × ( k b ) = k ( a × b ) (k\pmb{a})\times\pmb{b}=\pmb{a}\times(k\pmb{b})=k(\pmb{a}\times\pmb{b}) (ka)×b=a×(kb)=k(a×b)

    det ⁡ ( k a , b , c ) = det ⁡ ( a , k b , c ) = k det ⁡ ( a , b , c ) \det(k\pmb{a},\pmb{b},\pmb{c})=\det(\pmb{a},k\pmb{b},\pmb{c})=k\det(\pmb{a},\pmb{b},\pmb{c}) det(ka,b,c)=det(a,kb,c)=kdet(a,b,c)

    根据(2.1)式,得:

    ⟨ ( k a ) × b , c ⟩ = ⟨ a × ( k b ) , c ⟩ = k ⟨ a × b , c ⟩ \langle(k\pmb{a})\times\pmb{b},\pmb{c}\rangle=\langle\pmb{a}\times(k\pmb{b}),\pmb{c}\rangle=k\langle\pmb{a}\times\pmb{b},\pmb{c}\rangle ⟨(ka)×b,c=a×(kb),c=ka×b,c

    c \pmb{c} c 为任一向量

  • 加法分配律: a × ( x + y ) = a × x + a × y , ( x + y ) × b = x × b + y × b \pmb{a}\times(\pmb{x}+\pmb{y})=\pmb{a}\times\pmb{x}+\pmb{a}\times\pmb{y},(\pmb{x}+\pmb{y})\times\pmb{b}=\pmb{x}\times\pmb{b}+\pmb{y}\times\pmb{b} a×(x+y)=a×x+a×y,(x+y)×b=x×b+y×b

    det ⁡ ( a , x + y , c ) = det ⁡ ( a , x , c ) + det ⁡ ( a , y , c ) \det(\pmb{a},\pmb{x}+\pmb{y},\pmb{c})=\det(\pmb{a},\pmb{x},\pmb{c})+\det(\pmb{a},\pmb{y},\pmb{c}) det(a,x+y,c)=det(a,x,c)+det(a,y,c)

    det ⁡ ( x + y , b , c ) = det ⁡ ( x , b , c ) + det ⁡ ( y , b , c ) \det(\pmb{x}+\pmb{y},\pmb{b},\pmb{c})=\det(\pmb{x},\pmb{b},\pmb{c})+\det(\pmb{y},\pmb{b},\pmb{c}) det(x+y,b,c)=det(x,b,c)+det(y,b,c)

    利用前面的性质,得证。

  • 正交: ⟨ a × b , a ⟩ = 0 \langle\pmb{a}\times\pmb{b},\pmb{a}\rangle=0 a×b,a=0 ⟨ a × b , b ⟩ = 0 \langle\pmb{a}\times\pmb{b},\pmb{b}\rangle=0 a×b,b=0 ,即 a × b ⊥ a \pmb{a}\times\pmb{b}\bot\pmb{a} a×ba a × b ⊥ b \pmb{a}\times\pmb{b}\bot\pmb{b} a×bb

    若行列式中有相同的两行,则行列式值等于零。所以:

    ⟨ a × b , a ⟩ = det ⁡ ( a , b , a ) = 0 \langle\pmb{a}\times\pmb{b},\pmb{a}\rangle=\det(\pmb{a},\pmb{b},\pmb{a})=0 a×b,a=det(a,b,a)=0

    ⟨ a × b , b ⟩ = det ⁡ ( a , b , b ) = 0 \langle\pmb{a}\times\pmb{b},\pmb{b}\rangle=\det(\pmb{a},\pmb{b},\pmb{b})=0 a×b,b=det(a,b,b)=0

  • 反对称性: a × b = − b × a \pmb{a}\times\pmb{b}=-\pmb{b}\times\pmb{a} a×b=b×a

    行列式的两行互相交换,行列式值更改符号,所以:

    ⟨ a × b , c ⟩ = det ⁡ ( a , b , c ) = − det ⁡ ( b , a , c ) = − ⟨ b × a , c ⟩ = ⟨ − b × a , c ⟩ \langle\pmb{a}\times\pmb{b},\pmb{c}\rangle=\det(\pmb{a},\pmb{b},\pmb{c})=-\det(\pmb{b},\pmb{a},\pmb{c})=-\langle\pmb{b}\times\pmb{a},\pmb{c}\rangle=\langle-\pmb{b}\times\pmb{a},\pmb{c}\rangle a×b,c=det(a,b,c)=det(b,a,c)=b×a,c=b×a,c

  • 循环不变性: ⟨ a × b , c ⟩ = ⟨ b × c , a ⟩ = ⟨ c × a , b ⟩ \langle\pmb{a}\times\pmb{b},\pmb{c}\rangle=\langle\pmb{b}\times\pmb{c},\pmb{a}\rangle=\langle\pmb{c}\times\pmb{a},\pmb{b}\rangle a×b,c=b×c,a=c×a,b

    行列式,交换两行两次,值不变。所以:

    det ⁡ ( a , b , c ) = det ⁡ ( b , c , a ) = det ⁡ ( c , a , b ) \det(\pmb{a},\pmb{b},\pmb{c})=\det(\pmb{b},\pmb{c},\pmb{a})=\det(\pmb{c},\pmb{a},\pmb{b}) det(a,b,c)=det(b,c,a)=det(c,a,b)

  • 拉格朗日等式: ∥ a × b ∥ 2 = ∥ a ∥ 2 ∥ b ∥ 2 − ⟨ a , b ⟩ 2 \begin{Vmatrix}\pmb{a}\times\pmb{b}\end{Vmatrix}^2=\begin{Vmatrix}\pmb{a}\end{Vmatrix}^2\begin{Vmatrix}\pmb{b}\end{Vmatrix}^2-\langle\pmb{a},\pmb{b}\rangle^2 a×b 2= a 2 b 2a,b2

    p = a × b \pmb{p}=\pmb{a}\times\pmb{b} p=a×b ,使用行列式可乘公式和上面的正交性:

    ⟨ a × b , p ⟩ 2 = ∣ a b p ∣ 2 = ∣ a T b T p T ∣ ∣ a b p ∣ = ∣ ∥ a ∥ 2 ⟨ a , b ⟩ 0 ⟨ b , a ⟩ ∥ b ∥ 2 0 0 0 ∥ p ∥ 2 ∣ = ∥ p ∥ 2 ( ∥ a ∥ 2 ∥ b ∥ 2 − ⟨ a , b ⟩ 2 ) \begin{split}\langle\pmb{a}\times\pmb{b},\pmb{p}\rangle^2 &= |\pmb{a}\quad\pmb{b}\quad\pmb{p}|^2=\begin{vmatrix}\pmb{a}^T\\\pmb{b}^T\\\pmb{p}^T\end{vmatrix}\begin{vmatrix}\pmb{a}&\pmb{b}&\pmb{p}\end{vmatrix}\\ &= \begin{vmatrix}\begin{Vmatrix}\pmb{a}\end{Vmatrix}^2&\langle\pmb{a},\pmb{b}\rangle&0\\\langle\pmb{b},\pmb{a}\rangle&\begin{Vmatrix}\pmb{b}\end{Vmatrix}^2&0\\0&0&\begin{Vmatrix}\pmb{p}\end{Vmatrix}^2\end{vmatrix}\\ &= \begin{Vmatrix}\pmb{p}\end{Vmatrix}^2(\begin{Vmatrix}\pmb{a}\end{Vmatrix}^2\begin{Vmatrix}\pmb{b}\end{Vmatrix}^2-\langle\pmb{a},\pmb{b}\rangle^2)\end{split} a×b,p2=abp2= aTbTpT abp = a 2b,a0a,b b 2000 p 2 = p 2( a 2 b 2a,b2)

    又因为 ⟨ a × b , p ⟩ = ∥ a × b ∥ 2 = ∥ p ∥ 2 \langle\pmb{a}\times\pmb{b},\pmb{p}\rangle=\begin{Vmatrix}\pmb{a}\times\pmb{b}\end{Vmatrix}^2=\begin{Vmatrix}\pmb{p}\end{Vmatrix}^2 a×b,p= a×b 2= p 2

如果,将 ⟨ a , b ⟩ = ∥ a ∥ ∥ b ∥ cos ⁡ θ \langle\pmb{a},\pmb{b}\rangle=\begin{Vmatrix}\pmb{a}\end{Vmatrix}\begin{Vmatrix}\pmb{b}\end{Vmatrix}\cos\theta a,b= a b cosθ 代入拉格朗日等式,可得:

∥ a × b ∥ 2 = ∥ a ∥ 2 ∥ b ∥ 2 ( 1 − cos ⁡ 2 θ ) = ∥ a ∥ 2 ∥ b ∥ 2 sin ⁡ 2 θ \begin{Vmatrix}\pmb{a}\times\pmb{b}\end{Vmatrix}^2=\begin{Vmatrix}\pmb{a}\end{Vmatrix}^2\begin{Vmatrix}\pmb{b}\end{Vmatrix}^2(1-\cos^2\theta)=\begin{Vmatrix}\pmb{a}\end{Vmatrix}^2\begin{Vmatrix}\pmb{b}\end{Vmatrix}^2\sin^2\theta a×b 2= a 2 b 2(1cos2θ)= a 2 b 2sin2θ

即得: ∥ a × b ∥ = ∥ a ∥ ∥ b ∥ ∣ sin ⁡ θ ∣ \begin{Vmatrix}\pmb{a}\times\pmb{b}\end{Vmatrix}=\begin{Vmatrix}\pmb{a}\end{Vmatrix}\begin{Vmatrix}\pmb{b}\end{Vmatrix}|\sin\theta| a×b = a b sinθ

参考文献

[1]. 线代启示录:内积与外积是怎么来的?

[2]. 维基百科:点积

[4]. 维基百科:哈密顿力学

[5]. 维基百科:威廉·哈密顿

[6]. 维基百科:History of quaternions

[7]. 维基百科:William Kingdon Clifford

[8]. 线代启示录:关于外积与行列式的关系

在这里插入图片描述

相关文章:

《机器学习数学基础》补充资料:四元数、点积和叉积

《机器学习数学基础》第1章1.4节介绍了内积、点积的有关概念,特别辨析了内积空间、欧几里得空间;第4章4.1.1节介绍了叉积的有关概念;4.1.2节介绍了张量积(也称外积)的概念。 以上这些内容,在不同资料中&…...

蓝桥杯篇---IAP15F2K61S2矩阵键盘

文章目录 前言简介矩阵键盘的工作原理1.行扫描2.检测列状态3.按键识别 硬件连接1.行线2.列线 矩阵键盘使用步骤1.初始化IO口2.扫描键盘3.消抖处理4.按键识别 示例代码:4x4矩阵键盘扫描示例代码:优化后的矩阵键盘扫描注意事项1.消抖处理2.扫描频率3.IO口配…...

通过小型语言模型尽可能简单地解释 Transformer

介绍 在过去的几年里,我阅读了无数关于 Transformer 网络的文章,观看了许多视频。其中大部分都非常好,但我很难理解 Transformer 架构,而其背后的主要直觉(上下文敏感嵌入)则更容易掌握。在做演讲时&#…...

GcExcel

GcExcel 简述:GcExcel Java 是一款基于 Java 平台,支持批量创建、编辑、打印、导入/导出Excel文件的服务端表格组件,能够高性能处理和高度兼容 Excel。功能特性(图1)文档查询(图2)...

封装红黑树实现map和set

" 喜欢了你十年,却用整个四月,编织了一个不爱你的谎言。 " 目录 1 源码及其框架分析 2 模拟实现map和set 2.1 实现出复用红黑树的框架 2.2 支持iterator迭代器的实现 2.2.1 代码实现和--这两个运算符 2.3 map支持[ ] Hello,大家…...

Redis进阶使用

在日常工作中,使用Redis有什么需要注意的? 设置合适的过期时间。尽量避免大key问题,避免用字符串存储过大的数据;避免集合的数据量太大,要定期清除。 常用的数据结构有哪些?用在什么地方? 按…...

【ISO 14229-1:2023 UDS诊断全量测试用例清单系列:第四节】

ISO 14229-1:2023 UDS诊断服务测试用例全解析(Read DTC Information0x19服务) 作者:车端域控测试工程师 更新日期:2025年2月13日 关键词:UDS诊断协议、0x19服务、DTC信息读取、ISO 14229-1:2023、ECU测试 一、服务功能…...

使用Node.js进行串口通信

目录 一、 安装 serialport 库二.、实现方法1.打开串口并配置参数2. 向串口传递信息3. 接收串口信息4. 处理错误5. 关闭串口6. 使用解析器7. 获取串口列表 三、 完整示例代码 一、 安装 serialport 库 首先,需要安装 serialport 库。可以通过 npm 安装:…...

vue3+elementplus新建项目

更新node.js和npm node.js官网更新指南 可以根据自己的操作系统进行选择 我的电脑操作系统是mac os所以我的步骤如下 # Download and install nvm: curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash# in lieu of restarting the shell \. &…...

【网络安全 | 漏洞挖掘】跨子域账户合并导致的账户劫持与删除

未经许可,不得转载。 文章目录 概述正文漏洞成因概述 在对目标系统进行安全测试时,发现其运行着两个独立的域名——一个用于司机用户,一个用于开发者/企业用户。表面上看,这两个域名各自独立管理账户,但测试表明它们在处理电子邮件变更时存在严重的逻辑漏洞。该漏洞允许攻…...

VLSM基础知识

VLSM(Variable Length Subnet Mask,变长子网掩码)是一种更灵活的子网划分技术,允许在同一网络中使用不同长度的子网掩码,以满足不同子网对主机数量的需求,最大化IP地址利用率。 一、基础概念 传统子网划分…...

小小小病毒(3)(~_~|)

一分耕耘一分收获 声明: 仅供损害电脑,不得用于非法。损坏电脑,作者一律不负责。此作为作者原创,转载请经过同意。 欢迎来到小小小病毒(3) 感谢大家的支持 还是那句话:上代码! …...

WebRTC与EasyRTC:开启智能硬件音视频通讯的全新旅程

在当今数字化时代,音视频通讯技术正以前所未有的速度革新着我们的生活与工作方式。WebRTC与EasyRTC作为这一领域的佼佼者,正携手为智能硬件的音视频通讯注入强大动力,开启全新的篇章。 一、WebRTC与智能硬件融合的崭新趋势 WebRTC技术&…...

Lua 数据库访问

Lua 数据库访问 引言 Lua 是一种轻量级的编程语言,因其简洁性和高效性,常被用于游戏开发、嵌入系统和应用程序开发。在许多情况下,数据库访问是应用程序的核心功能之一。本文将深入探讨在 Lua 中如何进行数据库访问,包括连接数据库、执行查询、处理结果以及异常处理等。 …...

rtsp rtmp 跟 http 区别

SDP 一SDP介绍 1. SDP的核心功能 会话描述:定义会话的名称、创建者、时间范围、连接地址等全局信息。媒体协商:明确媒体流的类型(如音频、视频)、传输协议(如RTP/UDP)、编码格式(如H.264、Op…...

蓝桥杯篇---IAP15F2K61S2串口

文章目录 前言简介串口通信的基本参数1.波特率2.数据位3.停止位4.校验位 串口相关寄存器1.SCON2.SBUF3.PCON4.TMOD5.TH1/TL1 串口使用步骤1.配置波特率2.配置串口模式3.使能串口中断4.发送数据5.接收数据6.处理中断 示例代码:串口发送与接收示例代码:串口…...

Linux 远程文件复制传输-----scp/rsync/sftp

scp(Secure Copy Protocol)是基于 SSH 的安全文件传输工具,可用于在本地和远程计算机之间复制文件或目录。 1. scp(基于 SSH 复制文件) a. 复制文件到远程 从本地复制到远程 scp localfile.txt userremote_host:/remo…...

企业文件安全:零信任架构下的文件访问控制

在企业数字化转型的进程中,传统的文件访问控制模型已难以满足日益复杂的网络安全需求。零信任架构作为一种新兴的安全理念,为企业的文件安全访问提供了全新的解决方案。 一、传统文件访问控制的局限性 传统的文件访问控制主要基于网络边界,…...

用deepseek学大模型05-线性回归

deepseek.com:多元线性回归的目标函数,损失函数,梯度下降 标量和矩阵形式的数学推导,pytorch真实能跑的代码案例以及模型,数据,预测结果的可视化展示, 模型应用场景和优缺点,及如何改进解决及改进方法数据推…...

2009年下半年软件设计师上午真题的知识点整理(附真题及答案解析)

以下是2009年下半年软件设计师上午真题的知识点分类整理,涉及定义的详细解释,供背诵记忆。 1. 计算机组成原理 CPU与存储器的访问。 Cache的作用: 提高CPU访问主存数据的速度,减少访问延迟。存储器的层次结构: 包括寄存器、Cache、主存和辅存…...

Element Plus table 去除行hover效果

需求: 给table的指定行设置高亮背景色且去除掉这些行的hover效果 思路: 给指定行设置css类名选择需要设置高亮的行的单元格,设置鼠标禁用属性让高亮行继承父元素的背景色 考虑到表格的第一列是勾选框,因此仅选择 tr 下除了第一…...

2010年下半年软件设计师考试上午真题的知识点整理(附真题及答案解析)

以下是2010年下半年软件设计师考试上午真题的知识点分类整理,涉及定义的详细解释,供背诵记忆。 1. 计算机组成原理 CPU与存储器的访问。 Cache的作用: 提高CPU访问主存数据的速度,减少访问延迟。存储器的层次结构: 包括寄存器、Cache、主存和…...

Mac Golang 开发环境配置

Mac Golang 开发环境配置 Golang 介绍 Go(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。 由罗伯特格瑞史莫,罗勃派克(Rob Pike)及肯汤普逊于2007年9月开始设计…...

计算机视觉中图像的基础认知

第一章:计算机视觉中图像的基础认知 第二章:计算机视觉:卷积神经网络(CNN)基本概念(一) 第三章:计算机视觉:卷积神经网络(CNN)基本概念(二) 第四章:搭建一个经典的LeNet5神经网络 一、图像/视频的基本属性…...

理解 WebGPU 中的 navigator.gpu 和 adapter:从浏览器到显卡的旅程

WebGPU 是一种现代图形 API,旨在为 Web 应用程序提供高性能的图形和计算功能。作为 WebGL 的继任者,WebGPU 提供了更底层的硬件访问和更高效的性能。在 WebGPU 开发中,navigator.gpu 是访问 WebGPU API 的入口点,而 adapter 则是浏…...

【ESP32 IDF】ESP32 linux 环境搭建

ESP32 linux 环境搭建 1. 开发环境2. linux指令 1. 开发环境 liunx镜像 liunx镜像地址 : https://mirrors.xjtu.edu.cn/ubuntu-releases/20.04.6/ubuntu-20.04.6-live-server-amd64.iso 有提示你装openssl,务必装上 2. linux指令 工具 sudo apt-get …...

react传递函数与回调函数原理

为什么 React 允许直接传递函数? 回调函数核心逻辑 例子:父组件控制 Modal 的显示与隐藏 // 父组件 (ParentComponent.tsx) import React, { useState } from react; import { Modal, Button } from antd; import ModalContent from ./ModalContent;co…...

目标检测IoU阈值全解析:YOLO/DETR模型中的精度-召回率博弈与工程实践指南

一、技术原理与数学本质 IoU计算公式: IoU \frac{Area\ of\ Overlap}{Area\ of\ Union} \frac{A ∩ B}{A ∪ B}阈值选择悖论: 高阈值(0.6-0.75):减少误检(FP↓)但增加漏检(FN↑…...

使用grafana v11 建立k线(蜡烛图)仪表板

先看实现的结果 沪铜主力合约 2025-02-12 的1分钟k线图 功能介绍: 左上角支持切换主力合约,日期,实现动态加载数据. 项目背景: 我想通过前端展示期货指定品种某1天的1分钟k线,类似tqsdk 的web_gui 生成图形化界面— TianQin Python SDK 3.7.8 文档 项目架构: 后端: fastap…...

Ubuntu下载安装Docker-Desktop

下载 Ubuntu | Docker Docs 预备工作 Ubuntu增加docker apt库-CSDN博客 安装 sudo apt-get updatesudo apt install gnome-terminal# sudo apt install -y docker-composesudo apt-get install ./docker-desktop-amd64.deb 测试 sudo docker run hello-worldHello from D…...

【大模型】DeepSeek 高级提示词技巧使用详解

目录 一、前言 二、DeepSeek 通用提示词技巧 2.1 DeepSeek 通用提示词技巧总结 三、DeepSeek 进阶使用技巧 3.1 DeepSeek一个特定角色的人设 3.1.1 为DeepSeek设置角色操作案例一 3.1.2 为DeepSeek设置角色操作案例二 3.2 DeepSeek开放人设升级 3.2.1 特殊的人设&#…...

23. AI-大语言模型

文章目录 前言一、LLM1. 简介2. 工作原理和结构3. 应用场景4. 最新研究进展5. 比较 二、Transformer架构1. 简介2. 基本原理和结构3. 应用场景4. 最新进展 三、开源1. 开源概念2. 开源模式3. 模型权重 四、再谈DeepSeek 前言 AI‌ 一、LLM LLM(Large Language Mod…...

STM32的启动流程

启动模式 我们知道的复位方式有三种:上电复位,硬件复位和软件复位。当产生复位,并且离开复位状态后, CM33 内核做的第一件事就是读取下列两个 32 位整数的值: (1) 从地址 0x0000 0000 处取出堆…...

C++ Primer 函数匹配

欢迎阅读我的 【CPrimer】专栏 专栏简介:本专栏主要面向C初学者,解释C的一些基本概念和基础语言特性,涉及C标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级…...

Httprint 指纹识别技术:网络安全的关键洞察

引言 Http指纹识别现在已经成为应用程序安全中一个新兴的话题,Http服务器和Http应用程序安全也已经成为网络安全中的重要一部分。从网络管理的立场来看,保持对各种web服务器的监视和追踪使得Http指纹识别变的唾手可得,Http指纹识别可以使得信…...

STM32的HAL库开发---ADC

一、ADC简介 1、ADC,全称:Analog-to-Digital Converter,指模拟/数字转换器 把一些传感器的物理量转换成电压,使用ADC采集电压,然后转换成数字量,经过单片机处理,进行控制和显示。 2、常见的AD…...

PostgreSQL有undo表空间吗?

PostgreSQL有undo表空间吗 PostgreSQL 没有单独的 Undo 表空间,其事务回滚和多版本并发控制(MVCC)机制与 Oracle 等数据库有显著差异。 一 PostgreSQL 的 MVCC 实现 PostgreSQL 通过 多版本并发控制(MVCC) 管理事务…...

Huatuo热更新--安装HybridCLR

1.自行安装unity编辑器 支持2019.4.x、2020.3.x、2021.3.x、2022.3.x 中任一版本。推荐安装2019.4.40、2020.3.26、2021.3.x、2022.3.x版本。 根据你打包的目标平台,安装过程中选择必要模块。如果打包Android或iOS,直接选择相应模块即可。如果你想打包…...

Windows环境安装部署minimind步骤

Windows环境安装部署minimind步骤 必要的软件环境 git git,可下载安装版,本机中下载绿色版,解压到本地目录下(如:c:\soft\git.win64),可将此路径添加到PATH环境变量中,供其他程序…...

前端面试手写--虚拟列表

目录 一.问题背景 二.代码讲解 三.代码改装 四.代码发布 今天我们来学习如何手写一个虚拟列表,本文将把虚拟列表进行拆分并讲解,然后发布到npm网站上. 一.问题背景 为什么需要虚拟列表呢?这是因为在面对大量数据的时候,我们的浏览器会将所有数据都渲染到表格上面,但是渲…...

【算法进阶详解 第一节】树状数组

【算法进阶详解 第一节】树状数组 前言树状数组基础树状数组原理树状数组能够解决的问题 树状数组提高树状数组区间加,区间和操作二维树状数组 树状数组应用树状数组区间数颜色树状数组二维偏序 前言 树状数组在算法竞赛中十分常见,其能解决二维数点&am…...

青少年编程与数学 02-009 Django 5 Web 编程 16课题、权限管理

青少年编程与数学 02-009 Django 5 Web 编程 16课题、权限管理 一、授权授权的主要特点和作用授权的类型应用场景 二、权限系统使用Django内置的权限系统使用组管理权限使用第三方库在视图中应用权限 三、权限管理示例步骤 1: 创建Django项目和应用步骤 2: 定义模型和权限步骤 …...

第四十四篇--Tesla P40+Janus-Pro-7B部署与测试

环境 系统:CentOS-7 CPU: 14C28T 显卡:Tesla P40 24G 驱动: 515 CUDA: 11.7 cuDNN: 8.9.2.26创建环境 conda create --name trans python3.10torch 2.6.0 transformers 4.48.3克隆项目 git clone https:/…...

低成本、高效率且成熟的电商实时数据采集方案:梦想成真?

在电子商务领域,数据是驱动业务决策的核心资源。实时数据采集对于电商企业而言,意味着能够即时洞察市场动态、消费者行为以及运营效果,从而快速调整策略,提升竞争力。然而,如何在保证数据质量的同时,实现低…...

微信小程序之mobx-miniprogram状态管理

目前已经学习了6种小程序页面、组件间的数据通信方案,分别是: 1. 数据绑定: properties 2.获取组件实例: this.selectComponent() 3.事件绑定: this.triggerEvent() 4. 获取应用实例:getApp() 5. 页面间通信: EventChannel 6.事件总线:pubsub-js 在中小型项目…...

uniapp可视化-活动报名表单系统-代码生成器

活动报名表单系统小程序旨在为各类活动组织者提供一个便捷、高效的线上报名管理平台,同时为参与者提供简单易用的报名途径。 主要功能 活动发布:活动组织者可以发布活动的详细信息,包括活动名称、时间、地点、活动内容等。用户可以在小程序中…...

1.从零开始学会Vue--{{基础指令}}

全新专栏带你快速掌握Vue2Vue3 1.插值表达式{{}} 插值表达式是一种Vue的模板语法 我们可以用插值表达式渲染出Vue提供的数据 1.作用:利用表达式进行插值,渲染到页面中 表达式:是可以被求值的代码,JS引擎会将其计算出一个结果 …...

深入解析操作系统控制台:阿里云Alibaba Cloud Linux(Alinux)的运维利器

作为一位个人开发者兼产品经理,我的工作日常紧密围绕着云资源的运维和管理。在这个过程中,操作系统扮演了至关重要的角色,而操作系统控制台则成为了我们进行系统管理的得力助手。本文将详细介绍阿里云的Alibaba Cloud Linux操作系统控制台的功…...

CSS Grid 网格布局,以及 Flexbox 弹性盒布局模型,它们的适用场景是什么?

CSS Grid网格布局和Flexbox弹性盒布局模型都是现代CSS布局的重要工具,它们各自具有独特的优势和适用场景。 作为前端开发工程师,理解这些布局模型的差异和适用场景对于编写高效、可维护的代码至关重要。 CSS Grid网格布局 适用场景: 复杂…...

2025.2.16机器学习笔记:TimeGan文献阅读

2025.2.9周报 一、文献阅读题目信息摘要Abstract创新点网络架构一、嵌入函数二、恢复函数三、序列生成器四、序列判别器损失函数 实验结论后续展望 一、文献阅读 题目信息 题目: Time-series Generative Adversarial Networks会议: Neural Information…...