向量投影计算器
结果
标量投影
- 投影向量的 x 分量
- 3.0000
- 投影向量的 y 分量
- 0.0000
- 投影向量的 z 分量
- 0.0000
向量投影计算器求一个向量在另一个向量方向上占了多长,并把答案给出两遍:一个带符号的标量,和一个向量。两个向量都写成一组数,比如 3 4 与 1 0,页面先给出标量投影——也就是第一个向量落在第二个方向上那道影子的长度,两者方向大致相反时它是负的——再给出投影向量,也就是把那段长度装回第二个向量的方向、得到一个真正落在它那条直线上的向量。标量投影是点积除以第二个向量的模长;投影向量则是把这个数乘回方向里去。二维三维都收,两个向量的分量个数必须相同。两个输出都印不是重复,而是这一页的重点:标量投影沿一条有朝向的线量,所以带符号;投影向量只认那条直线,所以把目标向量掉个头,前一个输出变号,后一个一动没动。目标向量不能是零向量,因为它既提供方向又提供除数,没有方向就谈不上「沿着它」;源向量可以是零向量,那时投影就是零。
向量与它们的投影
| 源向量 u | 目标向量 v | u 在 v 上的标量投影 | 投影的 x 分量 | 投影的 y 分量 | 投影的 z 分量 |
|---|---|---|---|---|---|
| 3 4 | 1 0 | 3 | 3 | 0 | 0 |
| 1 2 | 3 4 | 2.2 | 1.32 | 1.76 | 0 |
| 3 4 | -1 0 | -3 | 3 | 0 | 0 |
| 1 0 | 0 1 | 0 | 0 | 0 | 0 |
| 1 1 1 | 1 1 1 | 1.7321 | 1 | 1 | 1 |
| 2 3 6 | 1 1 1 | 6.3509 | 3.6667 | 3.6667 | 3.6667 |
| 0 0 | 3 4 | 0 | 0 | 0 | 0 |
| 1 2 2 | 2 2 1 | 2.6667 | 1.7778 | 1.7778 | 0.8889 |
八对向量,按同一个方向投影,先给标量、再给与它对应的三个分量。第一行与第三行是一对,也是这张表值得一读的理由:两行的源向量都是 3 4,目标向量一个是 1 0、一个是 −1 0,标量投影从 3 翻成 −3,而投影向量两次都精确是 (3, 0, 0)。把目标取负会在分子里添一个负号、在平方后的分母里再添一个,于是向量感觉不到、标量感觉到了。第二行是两者都没有归一化的普通情形,标量算出来是干净的 2.2,三个分量不是。第四行是互相垂直的一对:标量是 0、投影向量是零向量,这是一个正确答案,也是全表唯一一处两个输出同时为零而两个输入都不为零的地方。第五行是向量投影到它自己,所以标量就是它自己的模长 √3,三个分量原样回来。第六行是三维、目标向量三个分量相等,投影的三个分量也相等。第七行是源向量为零向量,照收,投影为零。第八行是三维且投影里带一个负分量。表里故意没有「目标向量是零向量」那一行:那一档这一页拒答,因为它既提供方向又提供除数。每一格都在构建页面时重算;前两栏里的空格是分隔符,不属于数字。
公式
s = (u · v) ÷ |v| proj_v u = (s ÷ |v|) · v = ((u · v) ÷ |v|²) · v
- 源向量 u
- 被投影的那个向量,也就是要求影子长度的那一个。两个或三个数,用空格或逗号隔开。它可以是零向量,此时投影就是零
- 目标向量 v
- 影子落上去的那个向量,也是提供方向的那一个。它和另一个框不能互换:交换后答案会变,所以两个框按角色命名而不是按序号
- u · v
- 两个向量的点积:对应分量逐个相乘再把乘积累加。它同时出现在两条式子的分子上,所以值得记住「点积为零意味着两个向量垂直」——那正好是投影为零的那一档
- |v|
- 目标向量的模长,点积除的就是它。如果目标向量恰好长度是 1,这一步除法什么都不改变,标量投影就等于点积——参考表第一行就是这一档,也是最容易手算核对的一行
- s
- 标量投影:源向量沿着目标方向伸出去多远,是一个带符号的数。两个向量大致反向时它为负,垂直时它为零。它既不是源向量的模长,也不是点积——它是点积除以目标向量的模长
- proj_v u
- 投影向量:标量投影乘以目标向量的单位向量,把方向装回来,得到落在目标向量那条直线上、与它共线的向量。它的长度就是 s 的绝对值
- s 的符号
- 目标向量掉头时会变的东西。把目标向量取负,标量投影变号,因为分子变了号而分母里的平方不变;投影向量却原样不动,因为同一个负号在分子与分母里各出现一次
- 目标向量是零向量
- 拒绝。目标向量既提供方向又提供除数,而零向量两样都没有:分母会是零,也没有一条直线可以投影上去。源向量是零向量则是另一回事,照收,投影为零
- 没有单位
- 标量投影与投影向量那三个分量在这里都是纯数。标量投影与输入分量同一个量纲(它就是拿它们量出来的一段长度),但这一页不知道那个量纲是什么
- 四位小数
- 输出印出来有多宽。标量投影常常是干净的分数——11 除以 5 正好是 2.2——而投影向量的三个分量几乎总是要四舍五入
当你想要一个向量「沿着另一个方向的那一部分」时用这一页,它也是把任何东西拆成分量的那一步。把一个力拆成水平与竖直,就是把力投影到两条坐标轴上;力做的功等于力在位移方向上的投影乘以位移长度;影子、沿斜面的分量、最小二乘拟合里的系数,都是同一个操作。两个输出回答的是两个不同的问题。「多少」看带符号的标量,它也是继续做算术时该用的那个:负值说明源向量朝着目标的反方向偏。「在哪」看投影向量,答案必须是向量时用它——它落在目标那条直线上,可以继续与别的东西相加,也可以画出来。想最快看清两者的区别,就把目标向量掉个头:标量变号而向量不变,因为标量是相对一个朝向量出来的,向量不是。两个向量垂直时两个输出都是零,而零是真实的答案——它说的是源向量在目标方向上一点分量都没有。唯一不能用的输入是零目标向量,因为方向与除数正是它给不出的东西。
算例
3 4 投影到 1 0
- 点积:3 × 1 + 4 × 0 = 3
- 目标向量的模长:|1 0| = 1
- 标量投影:3 ÷ 1 = 3
- 投影向量:(3 ÷ 1) × (1, 0) = (3, 0, 0)
页面加载时的输入,也是没有任何东西藏着的一档:目标向量是单位向量,除以它的模长什么都不改变,所以标量投影就等于点积。它也是最好用眼睛核对的一档,因为目标沿着 x 轴,投影就是把源向量的 y 分量去掉。这就是投影在最简单的场合做的事——留下沿着目标的那部分,其余丢掉。
1 2 投影到 3 4
- 点积:1 × 3 + 2 × 4 = 11
- 目标向量的模长:√(9 + 16) = 5
- 标量投影:11 ÷ 5 = 2.2
- 投影向量:(2.2 ÷ 5) × (3, 4) = (1.32, 1.76, 0)
最普通的一档,目标向量不是单位向量,两次除法都要做。标量投影是精确的——11 除以 5 就是 2.2——而投影向量的分量不是。可以验一下答案确实落在目标那条直线上:1.32 除以 3 是 0.44,1.76 除以 4 也是 0.44,两个分量与目标向量的对应分量比例相同,这正是「落在同一条直线上」的意思。投影的长度是 2.2,也就是那个标量。
3 4 投影到 −1 0
- 点积:3 × (−1) + 4 × 0 = −3
- 目标向量的模长:|−1 0| = 1
- 标量投影:−3 ÷ 1 = −3
- 投影向量:(−3 ÷ 1) × (−1, 0) = (3, 0, 0)
与第一例同一个源向量、同一条直线,只是目标指向另一头,而这是全页最能说明两个输出各知道什么的一档。标量投影翻成了 −3:它是沿一个朝向量出来的,朝向变了它就跟着变。投影向量却与第一例逐位相同,(3, 0, 0),因为把目标取负会在分子里添一个负号、在平方后的分母里再添一个,两个正好抵消。标量知道目标朝哪边,向量只知道它在那条直线上。
1 0 投影到 0 1
- 点积:1 × 0 + 0 × 1 = 0
- 目标向量的模长:|0 1| = 1
- 标量投影:0 ÷ 1 = 0
- 投影向量:(0 ÷ 1) × (0, 1) = (0, 0, 0)
两个互相垂直的向量,两个输出的投影都是零。这是一个真答案而不是失败:它说的是源向量在目标方向上没有任何一部分,而「垂直」本来就是这个意思。点积等于零就是要找的信号,也是两个向量都不为零时得到零标量投影的唯一途径。这里两个向量长度都是 1,谁都不小——两个满长的向量之间投影为零,第一次见到时值得停一下。
0 0 投影到 3 4
- 点积:0 × 3 + 0 × 4 = 0
- 目标向量的模长:√(9 + 16) = 5
- 标量投影:0 ÷ 5 = 0
- 投影向量:(0 ÷ 5) × (3, 4) = (0, 0, 0)
源向量是零向量:点积里每一项乘积都是零,所以两个输出都是零,除法也没有出问题。这一页不会拒绝这串输入。拒答的方向恰好相反——不能为零的是目标向量,因为它既提供方向又提供除数,投影到零向量上根本没有一条线可落。
局限
两个向量的分量个数必须相同,各自只能是两个或三个。两个框不能互换,标签已经写明哪个是哪个:源向量是被投影的那一个,目标向量是影子落上去的那一个。交换两个框会得到另一个答案,而它看起来完全合理,所以结果反常时先核对两个框,再核对算术。目标向量不能是零向量,因为它既提供方向又提供除数;源向量可以是零向量,那时投影为零。分量按普通数字解析:逗号加空格是分量分隔,逗号后面不带空格时按小数点读(1,5 就是一点五),而千位分组会被直接拒收、不去猜——写 1500,不要写 1,500。四位小数是显示宽度而不是精度承诺,投影向量是用未取整的标量算出来的,所以拿某个分量去除以目标向量对应分量,未必正好得到印出来的那个标量。参考表按输入原文与四个输出列出,而它故意没有「目标向量是零向量」那一行——那一档这一页算不出来,那个缺一行的理由写在表注里。还有一处重叠值得点名:点积是投影公式的分子,单位向量是第二条式子里被乘回去的那个方向,所以这一页同时用到了那两页的东西,而它自己既不是点积也不是归一化——投影是那个商。
常见问题
- 标量投影与投影向量有什么区别?
- 标量投影是一个带符号的数:源向量沿目标方向伸出去多远,两者大致反向时为负。投影向量是把同样的距离写成一个沿目标直线指出去的向量。标量知道目标朝哪边,向量不知道——把目标向量掉个头,标量变号而投影向量一动不动。要接着做算术用标量,答案必须是向量时用投影向量。
- 标量投影为什么会是负数?
- 因为源向量朝着目标的反方向偏。标量投影是沿一个朝向量出来的,两个向量方向大致相反时它就是负的。这不是出错,也不是可以随手去掉的符号约定:一个沿着某方向往回拉的力,在那个方向上的分量本来就是负的,功也可以是负的。
- 两个框里哪个才是被投影的向量?
- 第一个框是源向量,第二个框是目标向量,目标向量提供影子落下去的那个方向。这一页的两个框不能互换:把 u 投影到 v 上与把 v 投影到 u 上是两个不同的数,交换之后答案会变,而页面上看不出任何异常。所以两个框按角色命名,而不是叫向量 u 与向量 v。
- 两个向量垂直时会怎样?
- 两个输出都是零,而那是真实答案不是失败。点积为零就意味着两个向量垂直——这也是两个向量都不为零时得到零标量投影的唯一途径——而投影为零说明源向量在目标方向上一点分量都没有。参考表第四行就是这一档。物理上「垂直的力之间不做功」说的是同一件事。
- 被投影的向量可以是零向量吗?
- 可以,两个输出都是零:点积里每一项乘积都是零,而除法除的是目标向量的模长,没有问题。这一页拒答的方向恰好相反——不能为零的是目标向量,因为它既提供方向又提供除数,投影到零向量上没有线可落。
- 投影的公式是什么?
- 标量投影等于两个向量的点积除以目标向量的模长:s = (u · v) ÷ |v|。投影向量再把标量乘上目标向量的单位向量,也等于点积乘以目标向量、再除以目标向量模长的平方。当目标向量本身就是单位向量时两条式子都简化,标量投影就是点积——这也是参考表第一行最适合手算核对的原因。
参考资料
- Scalar projection(标量投影)——一个向量在另一个向量方向上那道影子的长度,带符号,也就是本页两个输出里的第一个 — Wolfram MathWorld(美国)
- Dot product(点积)——对应分量乘积之和,它是投影公式的分子,也是「等于零就说明两向量垂直」的那个量 — Wolfram MathWorld(美国)
- Unit vector(单位向量)——沿目标方向、长度为 1 的向量,标量投影乘上它就得到投影向量 — Wolfram MathWorld(美国)
- 教育部关于印发义务教育课程方案和课程标准(2022 年版)的通知——该通知的附件清单第 5 项是《义务教育数学课程标准(2022 年版)》;平面向量及其线性运算不属于义务教育学段,课标的原文与学段划分以该附件为准 — 中华人民共和国教育部