高等数学 第八章 向量代数与空间解析几何

第八章 向量代数与空间解析几何

向量代数

与向量有关的基本概念

向量

我们把既有 大小 又有 方向 的量称为 向量,也称为矢量. 常用黑体字 等表示向量. 从点 到点 的向量表示为 .

向量的模

向量 大小 称为向量 ,记为 . 当且仅当 的方向一致时 .

向量的坐标及坐标表示

向量 在直角坐标的三个坐标轴 ( 即 轴、 轴、 轴 ) 上的投影 , , 叫作向量 的坐标,记为

此时 .

零向量

模为零的向量称为零向量,常记为 . 零向量的方向可以看作是任意的.

单位向量

模为 的向量叫单位向量. 通常用 表示与 同方向的单位向量.

每一方向都有一个单位向量,不同方向的单位向量 ,只是 ,而不能说 .

两向量的夹角

设有两个非零向量 ,任取一点 作为始点,作 . 规定平面 上不超过 的角 ( 即 ) 称为向量 的夹角,常记为 .

同向,则 ;若 反向,则 .

向量 的方向余弦

若向量 为非零向量,它与 轴、 轴、 轴正向夹角分别为 ,则称 的方向余弦,且 ²²²

向量的运算及性质

加减运算

几何表示

的终点作为 的起点,从 的起点到 的终点所作的向量称为 的和,记为 ;以 的终点作为起点,以 的终点为终点所作的向量称为 的差,记为 . 也可以用力学中的平行四边形法则来解释 的几何意义.

代数表示

,则

数乘运算

几何表示

是一个数, 是一个向量,,当 同向, 反向,.

代数表示

,则 .

数量积 ( 点积、内积 )

几何表示

· ,其中 .

•● 注 ●•

,即 方向上的投影.

代数表示

,则 .

运算规律
  1. 交换律 :

  2. 分配律 :

  3. 与数乘的结合律 :

数量积在几何上的应用

求向量的模 :

求两个向量 的夹角的余弦 :,其中

判定两向量垂直 :.

向量积 ( 叉积、外积 )

几何表示

是一向量.

模 :,其中 .

方向 : 同时垂直于 ,且符合右手法则.

代数表示

运算规律
  1. 分配律 :

  2. 与数乘的结合律 :

向量积在几何上的应用

求同时垂直于 的向量 : ×

求以 为邻边的平行四边形面积 :

判定两向量平行 :

混合积

定义

为三个矢量 的混合积. 本书将混合积记为 ,即 . 有的书将它记为 .

,则

运算规律
  1. 轮换对称性 :

  2. 两向量互换,混合积变号 :

混合积在几何上的应用

求以 为棱的平行六面体体积 :

判定三向量共面 : 共面

平面与直线

平面方程

一般式方程

为平面的法向量,其中 不全为零.

点法式方程

,其中 为平面上任意一定的一点, 为平面的法向量, 不全为零.

截距式方程

,其中 分别为平面在三个坐标轴上的截距且均不为零.

平面束方程

设空间中有一条直线 ,它由两个平面 的交线确定 : 则通过直线 的所有平面 ( 即平面束 ) 的方程为 :

•● 注 ●• 通常用于求过直线且满足特定条件的平面.

直线方程

一般式方程

该直线为两平面的交线,这里假设 不共线 ( 两平面法向量不成比例 ).

两个平面法向量的向量积即为直线的方向向量.

对称式方程

其中 为直线上的任意取定的一点, 为直线的 方向向量.

参数式方程

为直线上的任意取定的一点, 为直线的 方向向量.

两点式方程

其中 为直线上的不相等的两个点.

平面与直线间的位置关系

平面与平面间的位置关系

设平面 ,则

  1. 平面 其中若某分母为零,理解对应的分子也为零.

  2. 平面 .

  3. 平面 之间的夹角 由以下公式确定 :

直线与直线间的位置关系

设直线 ,直线 ,则

  1. 直线 其中若某分母为零,理解对应的分子也为零.

  2. 直线

  3. 直线 之间的夹角 由以下公式确定 :

平面与直线的位置关系

设平面 ,直线 ,则

  1. .

  2. 其中若某分母为零,理解对应的分子也为零.

  3. 的夹角 由以下公式确定 :

点到平面的距离公式

到平面 的距离为 :

点到直线距离公式

到直线 的距离为 :

两不相交直线间的距离公式

设直线 的方向向量分别为 ,点 ,点 ,则 间的距离 :

空间曲面与曲线

旋转面及其方程

旋转面的定义

一条平面曲线绕其平面上的一条直线旋转一周所成的曲面 叫作 旋转曲面. 旋转曲线 称为旋转面的 母线定直线 叫作旋转曲面的 .

旋转面方程

设有 面上的曲线

  1. 曲线 轴旋转产生旋转面方程为 . 其中 '' 号由 所允许的符号而定.

  2. 曲线 轴旋转产生旋转面方程为 . 其中 '' 号由 所允许的符号而定.
    关于 面或 面上的曲线绕其所在坐标面上的坐标轴旋转产生旋转面完全类似.

柱面及其方程

柱面的定义

平行于定直线并沿定曲线 移动的直线 形成的轨迹 叫作 柱面. 定曲线 叫作柱面的 准线动直线 叫作柱面的 母线.

柱面方程的建立

准线为 母线的方向向量为 的柱面方程的建立 :先在准线 上任取一点 ,则过点 的母线方程为 . 消去方程组 中的 ,得到关于 的方程即为所求柱面方程.

准线为 母线方向向量为 的柱面方程的建立 :该柱面方程为 ,这里 均为参数.

经常用到的是下面特例 :设柱面的准线为 平面上的曲线 母线为平行于 轴的直线,则该柱面的方程为 .
类似地可建立母线为平行于 轴或 轴的柱面方程.

常见的柱面

  1. 圆柱面.
  2. 椭圆柱面.
  3. 抛物柱面.

⁘ 图注 ⁘

下面为 python 代码.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

# Set up the figure with subplots
fig = plt.figure(figsize=(18, 12))

# Parameters
R = 2 # Radius for circular cylinders
a, b = 3, 2 # Semi-axes for elliptical cylinder
p = 1 # Parameter for parabolic cylinder

# Create parameter ranges
u = np.linspace(0, 2*np.pi, 100) # Angular parameter
v = np.linspace(-3, 3, 100) # Height parameter
t = np.linspace(-3, 3, 100) # Linear parameter

# 1. Circular Cylinders: x² + y² = R², y² + z² = R², x² + z² = R²

# First cylinder: x² + y² = R²
ax1 = fig.add_subplot(2, 3, 1, projection='3d')
x1 = R * np.cos(u)
y1 = R * np.sin(u)
X1, V1 = np.meshgrid(x1, v)
Y1, _ = np.meshgrid(y1, v)
Z1 = V1
ax1.plot_surface(X1, Y1, Z1, alpha=0.7, cmap='viridis')
ax1.set_title('Circular Cylinder: $x^2 + y^2 = R^2$')
ax1.set_xlabel('X')
ax1.set_ylabel('Y')
ax1.set_zlabel('Z')
ax1.set_xticks([-3, 0, 3])
ax1.set_yticks([-3, 0, 3])
ax1.set_zticks([-3, 0, 3])
ax1.grid(False)

# Second cylinder: y² + z² = R²
ax2 = fig.add_subplot(2, 3, 2, projection='3d')
y2 = R * np.cos(u)
z2 = R * np.sin(u)
Y2, V2 = np.meshgrid(y2, v)
Z2, _ = np.meshgrid(z2, v)
X2 = V2
ax2.plot_surface(X2, Y2, Z2, alpha=0.7, cmap='plasma')
ax2.set_title('Circular Cylinder: $y^2 + z^2 = R^2$')
ax2.set_xlabel('X')
ax2.set_ylabel('Y')
ax2.set_zlabel('Z')
ax2.set_xticks([-3, 0, 3])
ax2.set_yticks([-3, 0, 3])
ax2.set_zticks([-3, 0, 3])
ax2.grid(False)

# Third cylinder: x² + z² = R²
ax3 = fig.add_subplot(2, 3, 3, projection='3d')
x3 = R * np.cos(u)
z3 = R * np.sin(u)
X3, V3 = np.meshgrid(x3, v)
Z3, _ = np.meshgrid(z3, v)
Y3 = V3
ax3.plot_surface(X3, Y3, Z3, alpha=0.7, cmap='coolwarm')
ax3.set_title('Circular Cylinder: $x^2 + z^2 = R^2$')
ax3.set_xlabel('X')
ax3.set_ylabel('Y')
ax3.set_zlabel('Z')
ax3.set_xticks([-3, 0, 3])
ax3.set_yticks([-3, 0, 3])
ax3.set_zticks([-3, 0, 3])
ax3.grid(False)

# 2. Elliptical Cylinder: x²/a² + y²/b² = 1
ax4 = fig.add_subplot(2, 3, 4, projection='3d')
x4 = a * np.cos(u)
y4 = b * np.sin(u)
X4, V4 = np.meshgrid(x4, v)
Y4, _ = np.meshgrid(y4, v)
Z4 = V4
ax4.plot_surface(X4, Y4, Z4, alpha=0.7, cmap='spring')
ax4.set_title(f'Elliptical Cylinder: $\\frac{{x^2}}{{a^2}} + \\frac{{y^2}}{{b^2}} = 1$')
ax4.set_xlabel('X')
ax4.set_ylabel('Y')
ax4.set_zlabel('Z')
ax4.set_xticks([-3, 0, 3])
ax4.set_yticks([-2, 0, 2])
ax4.set_zticks([-3, 0, 3])
ax4.grid(False)

# 3. Parabolic Cylinder: y² = 2px
ax5 = fig.add_subplot(2, 3, 5, projection='3d')
y5 = t
x5 = y5**2 / (2*p)
Y5, V5 = np.meshgrid(y5, v)
X5, _ = np.meshgrid(x5, v)
Z5 = V5
ax5.plot_surface(X5, Y5, Z5, alpha=0.7, cmap='autumn')
ax5.set_title(f'Parabolic Cylinder: $y^2 = 2px$')
ax5.set_xlabel('X')
ax5.set_ylabel('Y')
ax5.set_zlabel('Z')
ax5.set_xticks([0, 3, 6]) # For parabolic cylinder, x is always positive
ax5.set_yticks([-3, 0, 3])
ax5.set_zticks([-3, 0, 3])
ax5.grid(False)

# Set equal aspect ratio for all subplots
for ax in [ax1, ax2, ax3, ax4, ax5]:
ax.set_box_aspect([1,1,1])

# Add more spacing between subplots
plt.subplots_adjust(wspace=0.3, hspace=0.3)
plt.show()

常见的二次曲面及图形

  1. 椭球面.
  2. 单叶双曲面.
  3. 双叶双曲面.
  4. 椭圆抛物面.
  5. 双曲抛物面.
  6. 二次锥面.

⁘ 图注 ⁘

下面为 python 代码.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

# Set up the figure with subplots
fig = plt.figure(figsize=(18, 12))

# Parameters
a, b, c = 2, 1.5, 1 # Semi-axes
p = 0.5 # Parameter for paraboloids

# Create parameter ranges
u = np.linspace(0, 2*np.pi, 50) # Angular parameter
v = np.linspace(0, np.pi, 50) # Elevation parameter
s = np.linspace(-3, 3, 50) # Linear parameter
t = np.linspace(-3, 3, 50) # Linear parameter

# 1. Ellipsoid: x²/a² + y²/b² + z²/c² = 1
ax1 = fig.add_subplot(2, 3, 1, projection='3d')
U, V = np.meshgrid(u, v)
x1 = a * np.sin(V) * np.cos(U)
y1 = b * np.sin(V) * np.sin(U)
z1 = c * np.cos(V)
ax1.plot_surface(x1, y1, z1, alpha=0.7, cmap='viridis')
ax1.set_title('Ellipsoid: $\\frac{x^2}{a^2} + \\frac{y^2}{b^2} + \\frac{z^2}{c^2} = 1$')
ax1.set_xlabel('X')
ax1.set_ylabel('Y')
ax1.set_zlabel('Z')
ax1.set_xticks([-3, 0, 3])
ax1.set_yticks([-3, 0, 3])
ax1.set_zticks([-3, 0, 3])
ax1.grid(False)

# 2. Single-sheet hyperboloid: x²/a² + y²/b² - z²/c² = 1
ax2 = fig.add_subplot(2, 3, 2, projection='3d')
U, V = np.meshgrid(u, np.linspace(-2, 2, 50))
x2 = a * np.cosh(V) * np.cos(U)
y2 = b * np.cosh(V) * np.sin(U)
z2 = c * np.sinh(V)
ax2.plot_surface(x2, y2, z2, alpha=0.7, cmap='plasma')
ax2.set_title('Single-sheet hyperboloid: $\\frac{x^2}{a^2} + \\frac{y^2}{b^2} - \\frac{z^2}{c^2} = 1$')
ax2.set_xlabel('X')
ax2.set_ylabel('Y')
ax2.set_zlabel('Z')
ax2.set_xticks([-3, 0, 3])
ax2.set_yticks([-3, 0, 3])
ax2.set_zticks([-3, 0, 3])
ax2.grid(False)

# 3. Double-sheet hyperboloid: -x²/a² - y²/b² + z²/c² = 1
ax3 = fig.add_subplot(2, 3, 3, projection='3d')
U, V = np.meshgrid(u, np.linspace(0, 2, 25))
# Upper sheet (z > 0)
x3_upper = a * np.sinh(V) * np.cos(U)
y3_upper = b * np.sinh(V) * np.sin(U)
z3_upper = c * np.cosh(V)
# Lower sheet (z < 0)
x3_lower = a * np.sinh(V) * np.cos(U)
y3_lower = b * np.sinh(V) * np.sin(U)
z3_lower = -c * np.cosh(V)
ax3.plot_surface(x3_upper, y3_upper, z3_upper, alpha=0.7, cmap='coolwarm')
ax3.plot_surface(x3_lower, y3_lower, z3_lower, alpha=0.7, cmap='coolwarm')
ax3.set_title('Double-sheet hyperboloid: $-\\frac{x^2}{a^2} - \\frac{y^2}{b^2} + \\frac{z^2}{c^2} = 1$')
ax3.set_xlabel('X')
ax3.set_ylabel('Y')
ax3.set_zlabel('Z')
ax3.set_xticks([-3, 0, 3])
ax3.set_yticks([-3, 0, 3])
ax3.set_zticks([-3, 0, 3])
ax3.grid(False)

# 4. Elliptic paraboloid: x²/a² + y²/b² = 2pz
ax4 = fig.add_subplot(2, 3, 4, projection='3d')
S, T = np.meshgrid(s, t)
x4 = S
y4 = T
z4 = (x4**2/a**2 + y4**2/b**2) / (2*p)
ax4.plot_surface(x4, y4, z4, alpha=0.7, cmap='spring')
ax4.set_title('Elliptic paraboloid: $\\frac{x^2}{a^2} + \\frac{y^2}{b^2} = 2pz$')
ax4.set_xlabel('X')
ax4.set_ylabel('Y')
ax4.set_zlabel('Z')
ax4.set_xticks([-3, 0, 3])
ax4.set_yticks([-3, 0, 3])
ax4.set_zticks([0, 5, 10])
ax4.grid(False)

# 5. Hyperbolic paraboloid: x²/a² - y²/b² = 2pz
ax5 = fig.add_subplot(2, 3, 5, projection='3d')
S, T = np.meshgrid(s, t)
x5 = S
y5 = T
z5 = (x5**2/a**2 - y5**2/b**2) / (2*p)
ax5.plot_surface(x5, y5, z5, alpha=0.7, cmap='autumn')
ax5.set_title('Hyperbolic paraboloid: $\\frac{x^2}{a^2} - \\frac{y^2}{b^2} = 2pz$')
ax5.set_xlabel('X')
ax5.set_ylabel('Y')
ax5.set_zlabel('Z')
ax5.set_xticks([-3, 0, 3])
ax5.set_yticks([-3, 0, 3])
ax5.set_zticks([-5, 0, 5])
ax5.grid(False)

# 6. Quadric cone: x²/a² + y²/b² - z²/c² = 0
ax6 = fig.add_subplot(2, 3, 6, projection='3d')
U, V = np.meshgrid(u, np.linspace(-2, 2, 50))
x6 = a * np.abs(V) * np.cos(U)
y6 = b * np.abs(V) * np.sin(U)
z6 = c * V
ax6.plot_surface(x6, y6, z6, alpha=0.7, cmap='winter')
ax6.set_title('Quadric cone: $\\frac{x^2}{a^2} + \\frac{y^2}{b^2} - \\frac{z^2}{c^2} = 0$')
ax6.set_xlabel('X')
ax6.set_ylabel('Y')
ax6.set_zlabel('Z')
ax6.set_xticks([-3, 0, 3])
ax6.set_yticks([-3, 0, 3])
ax6.set_zticks([-3, 0, 3])
ax6.grid(False)

# Set equal aspect ratio for all subplots
for ax in [ax1, ax2, ax3, ax4, ax5, ax6]:
ax.set_box_aspect([1,1,1])

# Add spacing between subplots
plt.subplots_adjust(wspace=0.3, hspace=0.3)
plt.show()

空间曲线及其方程

空间曲线方程常见是以下两种形式:

  1. 参数式

  2. 一般式 ( 两曲面方程联立 )

空间曲线的投影

设有空间曲线 ,先通过 消去 ,则曲线 面上投影曲线方程包含在方程 之中.

要求曲线 在其他两个坐标面上投影方法完全类似.

个人笔记

空间曲线奔赴平面投影,像一颗心奔赴归处,舍去一个维度的纷繁,在简洁里,藏起曾遍历空间的风尘.

例题

-+--< 例题 1 >--+-

过点 且与曲面 相切的平面为 .

分析 设切点,求切面法向量,利用平面过点及向量垂直关系,结合曲面方程求解,得平面方程.

设切点为 ,法向量为 ,则

解得

故法向量为,所以平面方程为

-+--< 例题 2 >--+-

设两直线 .

1.证明 是异面直线;
2.求 之间的距离;
3.求过 且平行于 的平面方程.

分析 第一问 异面直线是既不相交,又不平行的直线. 显然,连接两条直线作为一个向量,此时必然和两条直线的方向向量构成一个平行六面体. 由行列式几何意义可知,行列式不为 . 第二问 直线到直线距离公式. 第三问 由题意显然可知,所求平面方程法向量与两条直线的方向向量都垂直,故法向量取两个直线的方向向量的向量积. 任取 一点即可求解.

1.证明 是异面直线
上点 ( 联立 方程,令 代入得 ),求 方向向量 两平面法向量 ,叉乘得 .
过点 ,方向向量 ,向量 .
计算混合积 ,故异面.

2.求 之间的距离
异面直线距离公式
先算 ,模长 . ,绝对值为 .
距离 .

3.求过 且平行于 的平面方程
平面法向量 .
上点 ,由点法式得平面方程:,即 .