58 lines
1.9 KiB
Markdown
58 lines
1.9 KiB
Markdown
|
---
|
|||
|
title: Dot Product
|
|||
|
localeTitle: 点产品
|
|||
|
---
|
|||
|
## 点产品
|
|||
|
|
|||
|
点积是将两个向量相乘以获得单个数字的方法。 点积在物理学和线性代数中很常见。
|
|||
|
|
|||
|
您可以将两个向量**a**和**b**的点积写为**a** · **b** 。
|
|||
|
|
|||
|
两个向量必须具有相同的长度才能得到点积。
|
|||
|
|
|||
|
要查找点积,请将`nth`一个向量中的第`nth`元素乘以第二`nth`向量中的`nth`元素。 为所有元素执行此操作。 然后,找到所有这些产品的总和。 这个总和是点积!
|
|||
|
|
|||
|
### 点产品的属性
|
|||
|
|
|||
|
两个向量的点积也可以表示为`a · b = ||a|| * ||b|| * cos(theta)` 。 在这个公式中, `||a||`是矢量**a**的大小, `theta`是两个矢量之间的角度。
|
|||
|
|
|||
|
两个正交(也称为垂直)矢量的点积总是0。
|
|||
|
|
|||
|
### 工作实例
|
|||
|
|
|||
|
例如,假设您有向量**a**和**b** 。 设`a = (1 2 3 4)` , `b = (-1 0 1 2)` 。
|
|||
|
|
|||
|
点积为`(1)(-1) + (2)(0) + (3)(1) + (4)(2) = -1 + 0 + 3 + 8 = 12` 。 所以在这种情况下,你会说**a** · **b** = 12。
|
|||
|
|
|||
|
### 代码示例
|
|||
|
|
|||
|
这是JavaScript中的示例函数。 它返回两个向量参数的点积:
|
|||
|
|
|||
|
```javascript
|
|||
|
/**
|
|||
|
* @param {array} a - A vector/array of numbers
|
|||
|
* @param {array} b - A vector/array of numbers with the same length as a
|
|||
|
* @returns {number} - The dot product of a and b
|
|||
|
*/
|
|||
|
function dotProduct(a, b) {
|
|||
|
// Check if the lengths are the same - if not, there can't be a dot product
|
|||
|
if (a.length !== b.length) {
|
|||
|
throw "vector lengths must be equal";
|
|||
|
}
|
|||
|
|
|||
|
// Create a variable to store the sum as we calculate it
|
|||
|
let product = 0;
|
|||
|
|
|||
|
// Loop through the vectors, calculate products, and add them to the total
|
|||
|
for (let i = 0; i < a.length; i++) {
|
|||
|
// You may want to ensure that a[i] and b[i] are both finite numbers
|
|||
|
product += a[i] * b[i];
|
|||
|
}
|
|||
|
|
|||
|
return product;
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
### 更多信息:
|
|||
|
|
|||
|
[矢量](../vectors/index.md)
|