在进行向量的数量积(点积)和向量积(叉积)的推导之前,我们先设
(
e
x
,
e
y
,
e
z
)
(\mathbf{e}_x, \mathbf{e}_y, \mathbf{e}_z)
(ex,ey,ez) 为三维空间中的单位正交基底。这意味着每个基向量都是单位向量(即它们的长度为1),并且每对基向量之间都是正交的(即它们之间的夹角是90度,或者它们的点积为0)。
接下来,我们定义两个向量
a
\mathbf{a}
a和
b
\mathbf{b}
b,它们在这个基底下的坐标表示为
(
a
x
,
a
y
,
a
z
)
(a_x, a_y, a_z)
(ax,ay,az)和
(
b
x
,
b
y
,
b
z
)
(b_x, b_y, b_z)
(bx,by,bz)。
则
a
=
a
x
e
x
+
a
y
e
y
+
a
z
e
z
\mathbf{a} = a_x \mathbf{e}_x + a_y \mathbf{e}_y + a_z \mathbf{e}_z
a=axex+ayey+azez
b
=
b
x
e
x
+
b
y
e
y
+
b
z
e
z
\mathbf{b} = b_x \mathbf{e}_x + b_y \mathbf{e}_y + b_z \mathbf{e}_z
b=bxex+byey+bzez
数量积(点积)
- 设有两个向量
a
=
(
a
x
,
a
y
,
a
z
)
\mathbf{a} = (a_x, a_y, a_z)
a=(ax,ay,az) 和
b
=
(
b
x
,
b
y
,
b
z
)
\mathbf{b} = (b_x, b_y, b_z)
b=(bx,by,bz)。这两个向量的点积定义为:
a ⋅ b = a x b x + a y b y + a z b z \mathbf{a} \cdot \mathbf{b} = a_x b_x + a_y b_y + a_z b_z a⋅b=axbx+ayby+azbz
这是向量分量的对应乘积之和。
推导过程如下
-
首先写出向量点积的一般形式:
a ⋅ b = ( a x e x + a y e y + a z e z ) ⋅ ( b x e x + b y e y + b z e z ) \mathbf{a} \cdot \mathbf{b} = (a_x \mathbf{e}_x + a_y \mathbf{e}_y + a_z \mathbf{e}_z) \cdot (b_x \mathbf{e}_x + b_y \mathbf{e}_y + b_z \mathbf{e}_z) a⋅b=(axex+ayey+azez)⋅(bxex+byey+bzez) -
展开点积:
a ⋅ b = ( a x e x ⋅ b x e x ) + ( a x e x ⋅ b y e y ) + ( a x e x ⋅ b z e z ) + ( a y e y ⋅ b x e x ) + ( a y e y ⋅ b y e y ) + ( a y e y ⋅ b z e z ) + ( a z e z ⋅ b x e x ) + ( a z e z ⋅ b y e y ) + ( a z e z ⋅ b z e z ) \begin{align*} \mathbf{a} \cdot \mathbf{b} = & \ (a_x \mathbf{e}_x \cdot b_x \mathbf{e}_x) + (a_x \mathbf{e}_x \cdot b_y \mathbf{e}_y) + (a_x \mathbf{e}_x \cdot b_z \mathbf{e}_z) \\ & + (a_y \mathbf{e}_y \cdot b_x \mathbf{e}_x) + (a_y \mathbf{e}_y \cdot b_y \mathbf{e}_y) + (a_y \mathbf{e}_y \cdot b_z \mathbf{e}_z) \\ & + (a_z \mathbf{e}_z \cdot b_x \mathbf{e}_x) + (a_z \mathbf{e}_z \cdot b_y \mathbf{e}_y) + (a_z \mathbf{e}_z \cdot b_z \mathbf{e}_z) \end{align*} a⋅b= (axex⋅bxex)+(axex⋅byey)+(axex⋅bzez)+(ayey⋅bxex)+(ayey⋅byey)+(ayey⋅bzez)+(azez⋅bxex)+(azez⋅byey)+(azez⋅bzez) -
应用点积的性质:
- 同向量点积为自己的模的平方,而基向量是单位向量: e x ⋅ e x = e y ⋅ e y = e z ⋅ e z = 1 \mathbf{e}_x \cdot \mathbf{e}_x = \mathbf{e}_y \cdot \mathbf{e}_y = \mathbf{e}_z \cdot \mathbf{e}_z = 1 ex⋅ex=ey⋅ey=ez⋅ez=1
- 不同基向量之间正交,点积为零: e x ⋅ e y = e x ⋅ e z = e y ⋅ e z = 0 \mathbf{e}_x \cdot \mathbf{e}_y = \mathbf{e}_x \cdot \mathbf{e}_z = \mathbf{e}_y \cdot \mathbf{e}_z = 0 ex⋅ey=ex⋅ez=ey⋅ez=0
-
将这些规则应用于展开的式子中:
a ⋅ b = ( a x b x e x ⋅ e x ) + ( 0 ) + ( 0 ) + ( 0 ) + ( a y b y e y ⋅ e y ) + ( 0 ) + ( 0 ) + ( 0 ) + ( a z b z e z ⋅ e z ) \begin{align*} \mathbf{a} \cdot \mathbf{b} = & \ (a_x b_x \mathbf{e}_x \cdot \mathbf{e}_x) + (0) + (0) \\ & + (0) + (a_y b_y \mathbf{e}_y \cdot \mathbf{e}_y) + (0) \\ & + (0) + (0) + (a_z b_z \mathbf{e}_z \cdot \mathbf{e}_z) \end{align*} a⋅b= (axbxex⋅ex)+(0)+(0)+(0)+(aybyey⋅ey)+(0)+(0)+(0)+(azbzez⋅ez) -
简化结果:
a ⋅ b = a x b x + a y b y + a z b z \mathbf{a} \cdot \mathbf{b} = a_x b_x + a_y b_y + a_z b_z a⋅b=axbx+ayby+azbz
这样,我们得到了向量点积的标准结果:两个向量对应分量的乘积之和。
向量积(叉积)
- 向量的叉积定义为:
a × b = ∣ e x e y e z a x a y a z b x b y b z ∣ \mathbf{a} \times \mathbf{b} = \begin{vmatrix} \mathbf{e}_x & \mathbf{e}_y & \mathbf{e}_z \\ a_x & a_y & a_z \\ b_x & b_y & b_z \end{vmatrix} a×b= exaxbxeyaybyezazbz
推导过程如下
-
先写出向量叉积的一般形式:
a × b = ( a x e x + a y e y + a z e z ) × ( b x e x + b y e y + b z e z ) \mathbf{a} \times \mathbf{b} = (a_x \mathbf{e}_x + a_y \mathbf{e}_y + a_z \mathbf{e}_z) \times (b_x \mathbf{e}_x + b_y \mathbf{e}_y + b_z \mathbf{e}_z) a×b=(axex+ayey+azez)×(bxex+byey+bzez) -
展开叉积:
a × b = ( a x e x × b x e x ) + ( a x e x × b y e y ) + ( a x e x × b z e z ) + ( a y e y × b x e x ) + ( a y e y × b y e y ) + ( a y e y × b z e z ) + ( a z e z × b x e x ) + ( a z e z × b y e y ) + ( a z e z × b z e z ) \begin{align*} \mathbf{a} \times \mathbf{b} = & \ (a_x \mathbf{e}_x \times b_x \mathbf{e}_x) + (a_x \mathbf{e}_x \times b_y \mathbf{e}_y) + (a_x \mathbf{e}_x \times b_z \mathbf{e}_z) \\ & + (a_y \mathbf{e}_y \times b_x \mathbf{e}_x) + (a_y \mathbf{e}_y \times b_y \mathbf{e}_y) + (a_y \mathbf{e}_y \times b_z \mathbf{e}_z) \\ & + (a_z \mathbf{e}_z \times b_x \mathbf{e}_x) + (a_z \mathbf{e}_z \times b_y \mathbf{e}_y) + (a_z \mathbf{e}_z \times b_z \mathbf{e}_z) \end{align*} a×b= (axex×bxex)+(axex×byey)+(axex×bzez)+(ayey×bxex)+(ayey×byey)+(ayey×bzez)+(azez×bxex)+(azez×byey)+(azez×bzez) -
应用叉积的性质:
- 同向量叉积为零: e x × e x = e y × e y = e z × e z = 0 \mathbf{e}_x \times \mathbf{e}_x = \mathbf{e}_y \times \mathbf{e}_y = \mathbf{e}_z \times \mathbf{e}_z = 0 ex×ex=ey×ey=ez×ez=0
- 基向量间叉积: e x × e y = e z , e y × e z = e x , e z × e x = e y \mathbf{e}_x \times \mathbf{e}_y = \mathbf{e}_z, \\\mathbf{e}_y \times \mathbf{e}_z = \mathbf{e}_x, \\\mathbf{e}_z \times \mathbf{e}_x = \mathbf{e}_y ex×ey=ez,ey×ez=ex,ez×ex=ey
- 叉积的反交换律: e x × e y = − e y × e x \mathbf{e}_x \times \mathbf{e}_y = -\mathbf{e}_y \times \mathbf{e}_x ex×ey=−ey×ex
-
将这些规则应用于展开的式子中:
- 根据基向量叉积规则,我们将 e x × e y \mathbf{e}_x \times \mathbf{e}_y ex×ey, e y × e z \mathbf{e}_y \times \mathbf{e}_z ey×ez ,和 e z × e x \mathbf{e}_z \times \mathbf{e}_x ez×ex 替换为相应的基向量。
- 使用反交换律,比如 e x × e z = − e z × e x \mathbf{e}_x \times \mathbf{e}_z = -\mathbf{e}_z \times \mathbf{e}_x ex×ez=−ez×ex
- 我们得到:
a × b = ( 0 ) + ( a x b y e x × e y ) + ( − a x b z e z × e x ) + ( − a y b x e x × e y ) + ( 0 ) + ( a y b z e y × e z ) + ( a z b x e z × e x ) + ( − a z b y e y × e z ) + ( 0 ) \begin{align*} \mathbf{a} \times \mathbf{b} = & \ (0) + (a_x b_y \mathbf{e}_x \times \mathbf{e}_y) + (-a_x b_z \mathbf{e}_z \times \mathbf{e}_x) \\ & + (-a_y b_x \mathbf{e}_x \times \mathbf{e}_y) + (0) + (a_y b_z \mathbf{e}_y \times \mathbf{e}_z) \\ & + (a_z b_x \mathbf{e}_z \times \mathbf{e}_x) + (-a_z b_y \mathbf{e}_y\times \mathbf{e}_z) + (0) \end{align*} a×b= (0)+(axbyex×ey)+(−axbzez×ex)+(−aybxex×ey)+(0)+(aybzey×ez)+(azbxez×ex)+(−azbyey×ez)+(0)
- 简化结果:
-
继续简化,我们得到:
a × b = ( 0 ) + ( a x b y e z ) + ( − a x b z e y ) + ( − a y b x e z ) + ( 0 ) + ( a y b z e x ) + ( a z b x e y ) + ( − a z b y e x ) + ( 0 ) \begin{align*} \mathbf{a} \times \mathbf{b} = & \ (0) + (a_x b_y \mathbf{e}_z) + (-a_x b_z \mathbf{e}_y) \\ & + (-a_y b_x \mathbf{e}_z)+ (0) + (a_y b_z \mathbf{e}_x) \\ & + (a_z b_x \mathbf{e}_y) + (-a_z b_y \mathbf{e}_x) + (0) \end{align*} a×b= (0)+(axbyez)+(−axbzey)+(−aybxez)+(0)+(aybzex)+(azbxey)+(−azbyex)+(0)
a × b = ( a y b z − a z b y ) e x + ( a z b x − a x b z ) e y + ( a x b y − a y b x ) e z \mathbf{a} \times \mathbf{b} = (a_y b_z - a_z b_y)\mathbf{e}_x + (a_z b_x - a_x b_z)\mathbf{e}_y + (a_x b_y - a_y b_x)\mathbf{e}_z a×b=(aybz−azby)ex+(azbx−axbz)ey+(axby−aybx)ez
这就是向量叉积的最终结果,其中每一项是通过应用基向量间的叉积规则以及反交换律来获得的。这个结果表示了向量 a \mathbf{a} a 和向量 b \mathbf{b} b 叉积的三个分量。
附
最上面那两幅坐标图是让gpt画的,他给的代码如下
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
# 创建一个3D坐标系
fig = plt.figure(figsize=(12, 8))
ax = fig.add_subplot(111, projection='3d')
# 设置坐标轴的范围
ax.set_xlim([0, 1])
ax.set_ylim([0, 1])
ax.set_zlim([0, 1])
# 设置坐标轴的标签
ax.set_xlabel('X axis')
ax.set_ylabel('Y axis')
ax.set_zlabel('Z axis')
# 绘制基向量
ax.quiver(0, 0, 0, 1, 0, 0, color='r', arrow_length_ratio=0.1)
ax.quiver(0, 0, 0, 0, 1, 0, color='g', arrow_length_ratio=0.1)
ax.quiver(0, 0, 0, 0, 0, 1, color='b', arrow_length_ratio=0.1)
# 添加标签
ax.text(1, 0, 0, r'$\mathbf{e}_x$', color='r', fontsize=15)
ax.text(0, 1, 0, r'$\mathbf{e}_y$', color='g', fontsize=15)
ax.text(0, 0, 1, r'$\mathbf{e}_z$', color='b', fontsize=15)
plt.title('3D Coordinate System with Unit Orthogonal Basis Vectors')
plt.show()
# 创建一个新的3D坐标系
fig = plt.figure(figsize=(12, 8))
ax = fig.add_subplot(111, projection='3d')
# 设置坐标轴的范围
ax.set_xlim([0, 1])
ax.set_ylim([0, 1])
ax.set_zlim([0, 1])
# 设置坐标轴的标签
ax.set_xlabel('X axis')
ax.set_ylabel('Y axis')
ax.set_zlabel('Z axis')
# 绘制基向量
ax.quiver(0, 0, 0, 1, 0, 0, color='r', arrow_length_ratio=0.1)
ax.quiver(0, 0, 0, 0, 1, 0, color='g', arrow_length_ratio=0.1)
ax.quiver(0, 0, 0, 0, 0, 1, color='b', arrow_length_ratio=0.1)
# 假设的向量a和b的坐标(可以根据需要调整)
a_x, a_y, a_z = 0.3, 0.6, 0.8
b_x, b_y, b_z = 0.5, 0.7, 0.3
# 绘制向量a和b
ax.quiver(0, 0, 0, a_x, a_y, a_z, color='cyan', arrow_length_ratio=0.1, label=r'$\mathbf{a}$')
ax.quiver(0, 0, 0, b_x, b_y, b_z, color='magenta', arrow_length_ratio=0.1, label=r'$\mathbf{b}$')
# 添加虚线标注到各个面
# 向量a的虚线
ax.plot([a_x, a_x], [a_y, a_y], [0, a_z], color='cyan', linestyle='dashed')
ax.plot([a_x, a_x], [0, a_y], [a_z, a_z], color='cyan', linestyle='dashed')
ax.plot([0, a_x], [a_y, a_y], [a_z, a_z], color='cyan', linestyle='dashed')
# 向量b的虚线
ax.plot([b_x, b_x], [b_y, b_y], [0, b_z], color='magenta', linestyle='dashed')
ax.plot([b_x, b_x], [0, b_y], [b_z, b_z], color='magenta', linestyle='dashed')
ax.plot([0, b_x], [b_y, b_y], [b_z, b_z], color='magenta', linestyle='dashed')
# 添加基向量标签
ax.text(1, 0, 0, r'$\mathbf{e}_x$', color='r', fontsize=15)
ax.text(0, 1, 0, r'$\mathbf{e}_y$', color='g', fontsize=15)
ax.text(0, 0, 1, r'$\mathbf{e}_z$', color='b', fontsize=15)
# 添加向量a和b的标签
ax.text(a_x, a_y, a_z, r'$\mathbf{a}$', color='cyan', fontsize=15)
ax.text(b_x, b_y, b_z, r'$\mathbf{b}$', color='magenta', fontsize=15)
# 标注向量坐标
ax.text(a_x / 2, a_y / 2, a_z / 2, f'({a_x}, {a_y}, {a_z})', color='cyan', fontsize=12)
ax.text(b_x / 2, b_y / 2, b_z / 2, f'({b_x}, {b_y}, {b_z})', color='magenta', fontsize=12)
plt.title('3D Coordinate System with Unit Orthogonal Basis Vectors, Vectors a and b')
plt.legend()
plt.show()