Dot Product
These are vectors:
They can be multiplied using the "Dot Product" (also see Cross Product).
Calculating
You can calculate the Dot Product of two vectors this way:
a · b = |a| × |b| × cos(θ)
Where:
|a| is the magnitude (length) of vector a
|b| is the magnitude (length) of vector b
θ is the angle between a and b
So we multiply the length of a times the length of b, then multiply by the cosine of the angle between a and b
OR you can calculate it this way:
a · b = ax × bx + ay × by
So we multiply the x's, multiply the y's, then add.
Both methods work!
Example: Calculate the dot product of vectors a and b:
a · b = |a| × |b| × cos(θ)
a · b = 10 × 13 × cos(59.5°)
a · b = 10 × 13 × 0.5075...
a · b = 65.98... = 66 (rounded)
a · b = ax × bx + ay × by
a · b = -6 × 5 + 8 × 12
a · b = -30 + 96
a · b = 66
Both methods came up with the same result (after rounding)
Also note that we used minus 6 for ax (it is heading in the negative x-direction)
Note: you can use the Vector Calculator to help you.
Why cos(θ) ?
OK, to multiply two vectors it makes sense to multiply their lengths together but only when they point in the same direction.
So we make one "point in the same direction" as the other by multiplying by cos(θ):
We take the component of a
that lies alongside b
Like shining a light to see
where the shadow lies
THEN we multiply !
It works exactly the same if we "projected" b alongside a then multiplied:
Because it doesn't matter which order we do the multiplication:
|a| × |b| × cos(θ) = |a| × cos(θ) × |b|
Right Angles
When two vectors are at right angles to each other the dot product is zero.
Example: calculate the Dot Product for:
a · b = |a| × |b| × cos(θ)
a · b = | a| × | b| × cos(90°)
a · b = | a| × | b| × 0
a · b = 0
a · b = ax × bx + ay × by
a · b = -12 × 12 + 16 × 9
a · b = -144 + 144
a · b = 0
This can be a handy way to find out if two vectors are at right angles.
Three or More Dimensions
This all works fine in 3 (or more) dimensions, too.
And can actually be very useful!
Example: Sam has measured the end-points of two poles, and wants to know the angle between them:
We have 3 dimensions, so don't forget the z-components:
a · b = ax × bx + ay × by + az × bz
a · b = 9 × 4 + 2 × 8 + 7 × 10
a · b = 36 + 16 + 70
a · b = 122
Now for the other formula:
a · b = |a| × |b| × cos(θ)
But what is |a| ? It is the magnitude, or length, of the vector a. We can use Pythagoras:
- |a| = √(42 + 82 + 102)
- |a| = √(16 + 64 + 100)
- |a| = √180
Likewise for |b|:
- |b| = √(92 + 22 + 72)
- |b| = √(81 + 4 + 49)
- |b| = √134
And we know from the calculation above that a · b = 122, so:
a · b = |a| × |b| × cos(θ)
122 = √180 × √134 × cos(θ)
cos(θ) = 122 / (√180 × √134)
cos(θ) = 0.7855...
θ = cos -1(0.7855...) = 38.2...°
Done!
I tried a calculation like that once, but worked all in angles and distances ... it was very hard, involved lots of trigonometry, and my brain hurt. The method above is much easier.
Cross Product
The Dot Product gives a scalar (ordinary number) answer, and is sometimes called the scalar product.
But there is also the Cross Product which gives a vector as an answer, and is sometimes called the vector product.
Dot Product的更多相关文章
- [UCSD白板题] Minimum Dot Product
Problem Introduction The dot product of two sequences \(a_1,a_2,\cdots,a_n\) and \(b_1,b_2,\cdots,b_ ...
- FB面经Prepare: Dot Product
Conduct Dot Product of two large Vectors 1. two pointers 2. hashmap 3. 如果没有额外空间,如果一个很大,一个很小,适合scan小的 ...
- CUDA Samples: dot product(使用零拷贝内存)
以下CUDA sample是分别用C++和CUDA实现的点积运算code,CUDA包括普通实现和采用零拷贝内存实现两种,并对其中使用到的CUDA函数进行了解说,code参考了<GPU高性能编程C ...
- 向量点积(Dot Product),向量叉积(Cross Product)
参考的是<游戏和图形学的3D数学入门教程>,非常不错的书,推荐阅读,老外很喜欢把一个东西解释的很详细. 1.向量点积(Dot Product) 向量点积的结果有什么意义?事实上,向量的点积 ...
- CUDA Samples: Dot Product
以下CUDA sample是分别用C++和CUDA实现的两个非常大的向量实现点积操作,并对其中使用到的CUDA函数进行了解说,各个文件内容如下: common.hpp: #ifndef FBC_CUD ...
- vector - vector product
the inner product Givens two vectors \(x,y\in \mathbb{R}^n\), the quantity \(x^\top y\), sometimes c ...
- CF 405C Unusual Product(想法题)
题目链接: 传送门 Domino Effect time limit per test:1 second memory limit per test:256 megabytes Descrip ...
- Cross Product
Cross Product These are two vectors: They can be multiplied using the "Cross Product" (als ...
- 对NumPy中dot()函数的理解
今天学习到numpy基本的运算方法,遇到了一个让我比较难理解的问题.就是dot函数是如何对矩阵进行运算的. 一.dot()的使用 参考文档:https://docs.scipy.org/doc/num ...
随机推荐
- UVA11549 计算机谜题(Floyd判圈算法)
#include<iostream> #include<cstdio> #include<cstring> #include<cmath> #inclu ...
- Java中不定参的使用规则
Java中有时候会使用到不定参数,它的使用规则有2项: 一个方法中只能使用一个不定参数. 不定参数必须是方法中最后一个参数. 不定参数在传入的过程中会行成一个数组传入,如果不会放在最后一个,虚拟机无法 ...
- 更改pip源
~/.pip/下新建pip.conf文件:(Windows下载Users/xxx/pip/pip.ini) [global] trusted-host = pypi.douban.com index- ...
- [SOJ] Ordering Tasks
1940. Ordering Tasks Constraints Time Limit: 1 secs, Memory Limit: 32 MB Description John has n task ...
- [河南省ACM省赛-第四届] 序号互换 (nyoj 303)
相似与27进制的转换 #include<iostream> #include<cstdio> #include<cstring> #include<strin ...
- IBM Minus One
IBM Minus One Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...
- wpf为ListBox添加渐变
<Style.Triggers> <Trigger Property="ListBox.AlternationIndex" Value="1" ...
- moodle笔记之-权限api
<?php//权限定义$capabilities = array( 'mod/mytest:managefiles' => array(//具体的权限:插件类型/插件名/权限 这里是增加一 ...
- 子字符查找KMP算法 - 子串自匹配索引表
public static int[] kmpTable(char[] seq) { int[] tbl = new int[seq.length]; tbl[0] = 1; for (int i = ...
- JS算法与数据结构之八皇后(晕晕)
算法核心思想 回溯算法 递归实现 程序实现 坐标系 循环递归 回溯 计数 收集位置 特效添加 <!DOCTYPE HTML> <html> <head> <m ...