# Máy tính vectơ

> Dot and cross products of two vectors in 2D or 3D, their magnitudes, the angle between them and the projection of one onto the other, with a drawing.

Phiên bản tương tác: https://www.calcopenly.com/vi/math/vector-calculator
Chủ đề: Máy tính toán học

The dot product multiplies matching components and adds them, a · b = a₁b₁ + a₂b₂ + a₃b₃. The cross product of two 3D vectors is a vector perpendicular to both, and its length equals the area of the parallelogram they span. The angle between the vectors is computed as θ = atan2(|a × b|, a · b), which equals arccos(a · b / |a||b|) but stays accurate for nearly parallel vectors, and the projection of a onto b is (a · b / |b|²) b.

Physics (work and torque), 3D graphics and linear algebra are the usual uses. The default vectors a = (1, 2, 3) and b = (4, 5, 6) give a · b = 32, a × b = (−3, 6, −3) and an angle of about 12.93°.

A dot product of 0 means the vectors are perpendicular; a zero cross product means they are parallel or one is zero. In 2D mode both vectors lie in the xy-plane, so their cross product points along z: (3, 4) × (4, −3) = (0, 0, −25).

## Dữ liệu đầu vào

- **Dimensions** (lựa chọn: 2D, 3D)
- **a — x**
- **a — y**
- **a — z**
- **b — x**
- **b — y**
- **b — z**

## Kết quả

- Dot product a · b — kết quả chính
- Cross product a × b
- |a × b| (parallelogram area)
- |a|
- |b|
- Angle between a and b (°)
- Angle in radians (rad)
- Scalar projection of a onto b
- Vector projection of a onto b

## Công thức

$$
\begin{gathered} \mathbf a\cdot\mathbf b = \sum a_i b_i \\[6pt] \theta = \operatorname{atan2}(|\mathbf a\times\mathbf b|,\ \mathbf a\cdot\mathbf b) \\[6pt] \operatorname{proj}_{\mathbf b}\mathbf a = \frac{\mathbf a\cdot\mathbf b}{|\mathbf b|^2}\,\mathbf b \end{gathered}
$$

## Ví dụ có lời giải

### a = (1, 2, 3), b = (4, 5, 6)

- Dimensions: 3D
- a — x: 1
- a — y: 2
- a — z: 3
- b — x: 4
- b — y: 5
- b — z: 6
- **Dot product a · b: 32**
- **Cross product a × b: (−3, 6, −3)**
- **|a|: 3.7416573868**
- **Angle between a and b: 12.93315449 °**
- **|a × b| (parallelogram area): 7.3484692283**
- Nguồn đối chiếu: Hand calculation; Python decimal √14, √54 and atan2(√54, 32) in degrees (hp.py)

### Perpendicular 2D vectors (3, 4) and (4, −3)

- Dimensions: 2D
- a — x: 3
- a — y: 4
- b — x: 4
- b — y: -3
- **Dot product a · b: 0**
- **Angle between a and b: 90 °**
- **Cross product a × b: (0, 0, −25)**
- Nguồn đối chiếu: 3·4 + 4·(−3) = 0; 3·(−3) − 4·4 = −25

### Parallel vectors (edge case)

- Dimensions: 3D
- a — x: 1
- a — y: 2
- a — z: 3
- b — x: 2
- b — y: 4
- b — z: 6
- **Cross product a × b: (0, 0, 0)**
- **Angle between a and b: 0 °**
- **Dot product a · b: 28**
- Nguồn đối chiếu: b = 2a, so a × b = 0 and θ = 0

### Projection of (2, 3) onto (4, 0)

- Dimensions: 2D
- a — x: 2
- a — y: 3
- b — x: 4
- b — y: 0
- **Scalar projection of a onto b: 2**
- **Vector projection of a onto b: (2, 0)**
- **Angle between a and b: 56.30993247 °**
- Nguồn đối chiếu: a·b/|b| = 8/4; angle atan2(3, 2) = 56.3099324740202…° (Python math.degrees)

### Opposite directions (1, 0) and (−2, 0)

- Dimensions: 2D
- a — x: 1
- a — y: 0
- b — x: -2
- b — y: 0
- **Angle between a and b: 180 °**
- **Dot product a · b: -2**
- **Scalar projection of a onto b: -1**
- Nguồn đối chiếu: Antiparallel vectors: θ = 180°, a·b = −2

## Câu hỏi

### How do you calculate the dot product of two vectors?

Multiply corresponding components and add the results: a · b = a₁b₁ + a₂b₂ + a₃b₃. For (1, 2, 3) · (4, 5, 6) that is 4 + 10 + 18 = 32. The dot product also equals |a||b| cos θ, so it is positive when the angle is under 90°, 0 at exactly 90° and negative beyond it: (1, 0) · (−2, 0) = −2.

### How do you calculate the cross product?

For a = (a₁, a₂, a₃) and b = (b₁, b₂, b₃), a × b = (a₂b₃ − a₃b₂, a₃b₁ − a₁b₃, a₁b₂ − a₂b₁). For (1, 2, 3) × (4, 5, 6) that gives (12 − 15, 12 − 6, 5 − 8) = (−3, 6, −3). The result is perpendicular to both vectors, follows the right-hand rule, and changes sign if the order is swapped: b × a = (3, −6, 3).

### How do you find the angle between two vectors?

Use cos θ = (a · b)/(|a||b|). For (1, 2, 3) and (4, 5, 6), cos θ = 32/(√14 × √77) ≈ 0.974632, so θ ≈ 12.93°. Near 0° or 180° the arccos form loses accuracy, so the calculator uses the equivalent θ = atan2(|a × b|, a · b), the form William Kahan recommends in his notes on floating-point roundoff.

### What does it mean if the dot product is zero?

The two vectors are perpendicular (orthogonal), provided neither is the zero vector. (3, 4) · (4, −3) = 12 − 12 = 0, so those vectors meet at exactly 90°. In physics the same test shows that a force at right angles to the motion does no work, since work is the dot product of force and displacement.

### What is the difference between scalar and vector projection?

The scalar projection of a onto b is the signed length of a along b, a · b / |b|; the vector projection is that length times the unit vector of b, (a · b / |b|²) b. Projecting (2, 3) onto (4, 0) gives a scalar projection of 8/4 = 2 and a vector projection of (2, 0). A negative scalar projection means a points partly against b.

### “Máy tính vectơ” chính xác đến mức nào?

Độ chính xác phụ thuộc vào dữ liệu nhập và giả định của phương pháp. Phép tính thập phân dùng 50 chữ số có nghĩa, nhưng ước lượng, phương pháp số và dữ liệu nguồn có thể kém chính xác hơn; làm tròn khi hiển thị không loại bỏ các giới hạn đó. Ví dụ có lời giải đã đối chiếu với nguồn độc lập: 5. Ví dụ, “a = (1, 2, 3), b = (4, 5, 6)” được kiểm tra bằng Hand calculation; Python decimal √14, √54 and atan2(√54, 32) in degrees (hp.py).

### Phương pháp này lấy từ đâu?

Wolfram MathWorld — Dot Product; Wolfram MathWorld — Cross Product; W. Kahan, How futile are mindless assessments of roundoff in floating-point computation? §12 — angles via atan2 rather than arccos.

## Nguồn

- [Wolfram MathWorld — Dot Product](https://mathworld.wolfram.com/DotProduct.html)
- [Wolfram MathWorld — Cross Product](https://mathworld.wolfram.com/CrossProduct.html)
- [W. Kahan, How futile are mindless assessments of roundoff in floating-point computation? §12 — angles via atan2 rather than arccos](https://people.eecs.berkeley.edu/~wkahan/Mindless.pdf)
