Dot product có thể được định nghĩa bằng đại số (algebraically) hoặc hình học (geometrically). Theo đại số, dot product là tổng của các products của các mục tương ứng của hai chuỗi số. Còn về mặt hình học, nó là product của các độ lớn Euclide (Euclidean magnitudes) của hai vector và cosin của góc giữa chúng. Các định nghĩa này là tương đương khi sử dụng tọa độ Descartes.
Trong hình học hiện đại, không gian Euclide (Euclidean spaces) thường được xác định bằng cách sử dụng không gian vector (vector spaces). Trong trường hợp này, dot product được sử dụng để xác định độ dài của vector và góc giữa hai vector.
Tên dot product được thể hiện bằng một dấu chấm trung tâm, đặt giữa 2 đại lượng tính toán. Ví dụ A・B.
Dot product (Tích vô hướng) còn có tên gọi khác là “inner product” (内積) hay “scalar product” để nhấn mạnh rằng kết quả là một số bình thường, số vô hướng (scalar), chứ không phải là vector (trong không gian ba chiều).
Định nghĩa đại số (Algebraic definition)
Một dot product của 2 vector a = [a_1, a_2, … , a_n] and b = [b_1, b_2, … , b_n] được định nghĩa là:
a・b = \sum_{i = 1}^{n}a_ib_i = a_1b_1 + a_2b_2 + ... + a_nb_n
Ví dụ:
Trong không gian ba chiều, dot product của các vector [1, 3, −5] và [4, −2, 1] là:
[1, 3, −5]・[4, −2, 1] = (1 * 4) + (3 * -2) + (-5 * 1)
= 4 – 6 + 5
= 3
Định nghĩa hình học (Geometric definition)
Một dot product của 2 vector là product của các độ lớn Euclide (Euclidean magnitudes) của hai vector và cosin của góc giữa chúng.
Trong không gian Euclide, vector Euclide là một đối tượng hình học (geometric object) sở hữu cả độ lớn (magnitude) và hướng (direction). Độ lớn là chiều dài của nó, và hướng của nó là hướng mà mũi tên chỉ đến.
Độ lớn của vector a^→ được ký hiệu là ||a^→||. Dot product của hai vector a^→ và b^→ được xác định bởi:
a^→・b^→ = ||a^→|| * ||b^→|| * cos(θ)
Trong đó:
- ||a^→|| là độ lớn (chiều dài) của vector a^→
- ||b^→|| là độ lớn (chiều dài) của vector b^→
- θ là góc giữa 2 vector a^→ và b^→
Từ đó chúng ta có thể tính góc giữa 2 vector a^→(a_1, a_2, a_3) và b^→(b_1, b_2, b_3) như sau:
cosθ = \frac{a^→・b^→}{||a^→|| * ||b^→||} ⇒ θ = { cos }^{ -1 }(\frac{a^→・b^→}{||a^→|| * ||b^→||}) = { cos }^{ -1 }(\frac{a_1b_1 + a_2b_2 + a_3b_3}{\sqrt {{ a_1 }^{ 2 } + { a_2 }^{ 2 } + { a_3 }^{ 2 }} * \sqrt {{ b_1 }^{ 2 } + { b_2 }^{ 2 } + { b_3 }^{ 2 }}}), kết quả thu được θ có đơn vị tính bằng độ ° \left( 0° \le θ \le 180° \right).
Xem thêm: Cách tính độ lớn của một vector.
Ví dụ:
Tính dot product của 2 vector a and b như hình minh họa sau:
● a · b = |a| * |b| * cos(θ)
= 10 * 13 * cos(59.5°)
= 10 * 13 * 0.5075…
= 65.98… ≈ 66
● a · b = a_x * b_x + a_y * b_y
= -6 * 5 + 8 * 12
= -30 + 96
= 66
Tại sao lại là cos(θ) ?
Nhân hai vector, có nghĩa là nhân các độ dài của chúng với nhau nhưng khi và chỉ khi chúng cùng hướng (same direction). Do đó để nhân 2 vector a^→ và b^→ thì chúng ta cần lấy hình chiếu của vector a^→ lên vector b^→
Hình chiếu của vector a^→ lên vector b^→ được xác định bằng: ||a^→|| * cos(θ)
Hay ngược lại, chúng ta cũng có thể lấy hình chiếu của vector b^→ lên vector a^→. Công thức tính dot product vẫn hoạt động chính xác như nhau. Bởi vì khi thực hiện phép nhân không quan trọng thứ tự của các số hạng:
||a^→|| * ||b^→|| * cos(θ) = ||a^→|| * cos(θ) * ||b^→||
Có thể bạn quan tâm:
– Cách chuyển đổi góc độ thành radian và radian sang độ.
– Tích vector – Cross product (Tích hữu hướng).
[…] Xem thêm: Dot product (Tích vô hướng) – Tính góc giữa hai vector. […]
[…] thể bạn quan tâm: – Dot product (Tích vô hướng) – Tính góc giữa hai vector. – Tích vector – Cross product (Tích hữu […]
[…] Lập trình […]