Lập trình

Dot product (Tích vô hướng) – Tính góc giữa hai vector

Dot product (Tích vô hướng) - Tính góc giữa hai vector
Được viết bởi Minh Hoàng

Series chia sẻ kiến thức hình học, toán học.

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ụ AB.

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)

Dot product định nghĩa bằng đại số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)

Dot product định nghĩa bằng hình họcMộ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.

Vector hình học

Độ lớn của vector a^→ được ký hiệu là ||a^→||. Dot product của hai vector a^→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^→b^→

Từ đó chúng ta có thể tính góc giữa 2 vector a^→(a_1, a_2, a_3)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).

Tính góc giữa hai vector

Ví dụ:

Tính dot product của 2 vector a and b như hình minh họa sau:

Dot product example

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^→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(θ)

Hình chiếu của vector a lên vector b

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^→||

Hình chiếu của vector b lên vector a

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).

Cảm ơn bạn đã theo dõi. Đừng ngần ngại hãy cùng thảo luận với chúng tôi!

Giới thiệu

Minh Hoàng

Xin chào, tôi là Hoàng Ngọc Minh, hiện đang làm BrSE, tại công ty Toyota, Nhật Bản. Những gì tôi viết trên blog này là những trải nghiệm thực tế tôi đã đúc rút ra được trong cuộc sống, quá trình học tập và làm việc. Các bài viết được biên tập một cách chi tiết, linh hoạt để giúp người đọc có thể tiếp cận một cách dễ dàng nhất. Hi vọng nó sẽ có ích hoặc mang lại một góc nhìn khác cho bạn[...]

2
Bình luận của bạn

avatar
2 Comment threads
0 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
0 Comment authors
Recent comment authors
Mới nhất Cũ nhất Thích nhiều nhất
trackback

[…] 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 […]

Dot product (Tích vô hướng) – Tính góc giữa hai vector

by Minh Hoàng Time to read: 4 min
2