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的更多相关文章

  1. [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_ ...

  2. FB面经Prepare: Dot Product

    Conduct Dot Product of two large Vectors 1. two pointers 2. hashmap 3. 如果没有额外空间,如果一个很大,一个很小,适合scan小的 ...

  3. CUDA Samples: dot product(使用零拷贝内存)

    以下CUDA sample是分别用C++和CUDA实现的点积运算code,CUDA包括普通实现和采用零拷贝内存实现两种,并对其中使用到的CUDA函数进行了解说,code参考了<GPU高性能编程C ...

  4. 向量点积(Dot Product),向量叉积(Cross Product)

    参考的是<游戏和图形学的3D数学入门教程>,非常不错的书,推荐阅读,老外很喜欢把一个东西解释的很详细. 1.向量点积(Dot Product) 向量点积的结果有什么意义?事实上,向量的点积 ...

  5. CUDA Samples: Dot Product

    以下CUDA sample是分别用C++和CUDA实现的两个非常大的向量实现点积操作,并对其中使用到的CUDA函数进行了解说,各个文件内容如下: common.hpp: #ifndef FBC_CUD ...

  6. vector - vector product

    the inner product Givens two vectors \(x,y\in \mathbb{R}^n\), the quantity \(x^\top y\), sometimes c ...

  7. CF 405C Unusual Product(想法题)

    题目链接: 传送门 Domino Effect time limit per test:1 second     memory limit per test:256 megabytes Descrip ...

  8. Cross Product

    Cross Product These are two vectors: They can be multiplied using the "Cross Product" (als ...

  9. 对NumPy中dot()函数的理解

    今天学习到numpy基本的运算方法,遇到了一个让我比较难理解的问题.就是dot函数是如何对矩阵进行运算的. 一.dot()的使用 参考文档:https://docs.scipy.org/doc/num ...

随机推荐

  1. CoreJavaE10V1P3.9 第3章 Java的基本编程结构-3.9 大数值(Big Numbers)

    如果基本的整型与浮点型不能满足需求,可以使用java.Math包提供的 BigInteger 和 BigDecimal 两个类,这两个类可以存储任意长度的数, BigInteger 实现的任意精度整数 ...

  2. 博客停写,搬家到www.54kaikai.com

    博客搬家到自己的网站了www.54kaikai.com欢迎访问.

  3. android相关内容

    一: 前台进程: 前台的进程的优先级最高, 可见进程: android系统一般存在少量的可见进程. 服务进程: 没有用户界面, 后台进程: 一般存在较多的后台进程. 空进程: 不包括任何活跃组件的进程 ...

  4. java实现的简单词法分析器

    一个简单的词法分析器 词法分析(Lexical Analysis) 是编译的第一阶段.词法分析器的主要任务是读入源程序的输入字符.将他们组成词素,生成并输出一个词法单元序列,每个词法单元对应一个词素. ...

  5. python 之调用Linux shell命令及相关高级应用

    最近根据老大要求,将数据进行同步备份,结合第三方提供的工具.第三方服务其实是有python demo的,本想研究下实际的python sdk搞个demo开发的,但是发现有些组建装起来确实头大,而且本公 ...

  6. epoll完整例子

    #include <deque> #include <map> #include <vector> #include <pthread.h> #incl ...

  7. PQ分区魔术师v9.0 中文版

    软件名称: pqmagic 硬盘分区大师9.0中文绿色版 软件大小:5.80MB 软件语言:简体中文 软件类别:磁盘工具 软件授权:免费软件 更新时间:2013-10-082013-10-08 09: ...

  8. Ansible 变量

    1. 变量来源 inventoryfile中定义 playbook中定义 include文件和角色中定义变量 系统facts  ansible hostname -m setup local fact ...

  9. mysql 创建用户与授权、修改密码

    mysql版本:5.6.35 1.创建用户 #foo表示你要建立的用户名,后面的123表示密码, #localhost限制在固定地址localhost登陆 CREATE USER foo@localh ...

  10. JavaScript DOM编程艺术-学习笔记(第八章、第九章)

    第八章 1.小知识点: ①某些浏览器要根据DOCTYPE 来决定页面的呈现模式(标准模式 / 怪异模式--也称兼容模式): 兼容模式意味着浏览器要模仿老一辈的浏览器的怪异行为,来让老站点得到运行,并让 ...