Besar dan Arah

Norma vektor dan vektor satuan.

Daftar isi

Panjang dan arah adalah dua sifat yang melekat pada setiap vektor. Topik ini membahas norma, yaitu ukuran panjang sebuah vektor, beserta vektor satuan yang menyimpan arah tanpa memuat besar. Perhitungan menggunakan np.linalg.norm dari NumPy, sementara hubungan norma dengan perkalian skalar dibahas melalui sifat homogennya. Setelah topik ini dibaca, panjang vektor dapat dihitung dan arah vektor dapat disimpan dalam bentuk vektor satuan.

Norma sebagai panjang vektor#

Norma vektor adalah panjang panah yang menggambarkannya, dihitung dari komponen-komponennya dengan teorema Pythagoras. Untuk vektor dua dimensi a⃗=(ax,ay)\vec{a} = (a_x, a_y), normanya adalah

∥a⃗∥=ax2+ay2 \|\vec{a}\| = \sqrt{a_x^2 + a_y^2}

Notasi dua garis vertikal ∥a⃗∥\|\vec{a}\| dibaca norma a. Untuk a⃗=(3,1)\vec{a} = (3, 1), panjang panahnya adalah

∥a⃗∥=32+12=10≈3,1623 \|\vec{a}\| = \sqrt{3^2 + 1^2} = \sqrt{10} \approx 3{,}1623

Angka tersebut berarti panahnya melintasi jarak sekitar 3,16 satuan pada bidang koordinat. Norma selalu tidak negatif, dan bernilai nol hanya untuk vektor nol, yaitu vektor yang semua komponennya nol. Sifat ini membuat norma aman digunakan sebagai ukuran besar vektor karena tidak mungkin menghasilkan nilai negatif.

Rumus yang sama berlaku untuk vektor dengan banyak komponen. Norma vektor tiga komponen adalah akar dari jumlah kuadrat ketiganya, dan pola tersebut berlanjut hingga komponen keseribu tanpa perubahan bentuk. Selisih dua vektor pun dapat diukur panjangnya, dan ukuran ini menjadi dasar pengukuran jarak yang dibahas pada bagian akhir topik.

Berkas norma_vektor.py berikut menghitung norma dengan np.linalg.norm, memeriksa sifat homogennya, lalu membentuk satu vektor satuan. Keluarannya dibahas baris demi baris setelah blok kodenya.

python norma_vektor.py
import numpy as np

a = np.array([3.0, 1.0])

# norma dihitung dengan np.linalg.norm
print("a          =", a)
print("norma(a)   =", np.linalg.norm(a))

# sifat homogen: norma(c*a) = |c| * norma(a)
print("norma(2a)  =", np.linalg.norm(2 * a))
print("2 norma(a) =", 2 * np.linalg.norm(a))

# vektor satuan memiliki panjang tepat satu
u = a / np.linalg.norm(a)
print("satuan(a)  =", u)
print("norma(u)   =", np.linalg.norm(u))
text Keluaran
a          = [3. 1.]
norma(a)   = 3.1622776601683795
norma(2a)  = 6.324555320336759
2 norma(a) = 6.324555320336759
satuan(a)  = [0.9486833  0.31622777]
norma(u)   = 0.9999999999999999

Baris norma(2a) dan 2 norma(a) menunjukkan nilai yang sama, yaitu penggandaan vektor dengan dua menggandakan normanya dua kali lipat. Baris norma(u) menampilkan 0.9999999999999999 alih-alih satu persis. Penyimpangan sekecil ini berasal dari presisi tipe float yang terbatas dan lazim ditemui pada perhitungan numerik.

Norma dan perkalian skalar#

Norma bersifat homogen terhadap perkalian skalar. Mengalikan vektor dengan skalar cc mengalikan normanya dengan nilai mutlak ∣c∣|c|, dirumuskan sebagai

∥ca⃗∥=∣c∣ ∥a⃗∥ \|c\vec{a}\| = |c| \, \|\vec{a}\|

Gambar berikut menampilkan a⃗=(3,1)\vec{a} = (3, 1) bersama dengan 2a⃗=(6,2)2\vec{a} = (6, 2). Arah kedua panah itu sama, sedangkan panjangnya menjadi dua kali lipat. Skalar negatif juga membalik arah panah, tetapi panjangnya tetap dikalikan nilai mutlak skalar karena panjang tidak mungkin negatif.

Panjang 2a sama dengan dua kali panjang a

Sifat homogen inilah yang membuat perkalian skalar dapat dibaca ulang sebagai pernyataan tentang panjang. Apabila vektor digandakan, normanya menjadi dua kali lipat tanpa perlu menghitung ulang akar kuadratnya. Nilai mutlak pada rumusnya menjelaskan mengapa arah yang berbalik tidak mengubah panjang vektor.

Vektor satuan#

Vektor satuan adalah vektor dengan norma tepat satu. Membagi setiap komponen vektor dengan normanya menghasilkan vektor satuan dengan arah yang sama, dirumuskan sebagai

a^=a⃗∥a⃗∥ \hat{a} = \frac{\vec{a}}{\|\vec{a}\|}

Proses ini disebut normalisasi. Untuk a⃗=(3,1)\vec{a} = (3, 1), hasil pembagiannya adalah (0,9487,0,3162)(0{,}9487, 0{,}3162) sebagaimana tercetak pada keluaran skrip di atas. Pembagian tersebut setara dengan perkalian skalar 1/∥a⃗∥1/\|\vec{a}\| pada semua komponen, sehingga arahnya tidak berubah dan hanya panjangnya yang disetel menjadi satu. Gambar berikut menampilkan vektor semula dan vektor satuannya pada lingkaran satuan.

Vektor a dan vektor satuannya pada lingkaran satuan

Vektor satuan juga menjadi fondasi penulisan vektor lain. Vektor a⃗=(3,1)\vec{a} = (3, 1) dapat dibaca sebagai tiga kali vektor satuan arah x dijumlahkan dengan satu kali vektor satuan arah y. Penulisan ini menunjukkan bahwa setiap vektor tersusun dari arah-arah dasar yang masing-masing berpanjang satu.

Vektor satuan menyimpan informasi arah dalam bentuk baku. Arah angin pada catatan sensor menjadi contohnya. Kecepatan angin ke arah timur laut terurai menjadi komponen 4,2 m/s ke timur dan 4,2 m/s ke utara, dan pembagian dengan norma vektornya menyisakan arahnya saja.

python Normalisasi arah angin menjadi vektor satuan
import numpy as np

# angin ke arah timur laut: komponen 4,2 m/s ke timur dan 4,2 m/s ke utara
angin = np.array([4.2, 4.2])
arah = angin / np.linalg.norm(angin)
print("arah       =", arah)
print("norma arah =", round(np.linalg.norm(arah), 4))
text Keluaran
arah       = [0.70710678 0.70710678]
norma arah = 1.0

Di mana hal ini ditemui dalam kode#

Normalisasi menjadi vektor satuan adalah langkah baku pada machine learning. Embedding kata atau gambar kerap dinormalisasi terlebih dahulu agar perbandingan antarobjek hanya bergantung pada arah vektornya, bukan pada panjangnya. Panjang embedding sering tidak bermakna karena bergantung pada panjang teks asalnya, sedangkan arahnya yang memuat makna. Tanpa normalisasi, dua teks yang mirip maknanya dapat terlihat berbeda hanya karena salah satunya lebih panjang.

Norma juga menjadi dasar pengukuran jarak. Jarak antara dua titik data pada kode dihitung sebagai norma selisih vektor keduanya, dan algoritma tetangga terdekat mengurutkan data berdasarkan jarak semacam itu. Pada optimasi, panjang langkah gradien dibatasi dengan menormalkannya, sehingga pembaruan parameter tidak melompat terlalu jauh dalam satu iterasi.

Ringkasan#

  • Norma adalah panjang vektor yang dihitung dari akar jumlah kuadrat komponen dan tersedia sebagai np.linalg.norm.
  • Norma bersifat homogen terhadap skalar, yaitu ∥ca⃗∥=∣c∣ ∥a⃗∥\|c\vec{a}\| = |c| \, \|\vec{a}\|.
  • Vektor satuan diperoleh dengan membagi vektor dengan normanya dan menyimpan arah dalam bentuk berpanjang satu.
  • Vektor nol tidak memiliki vektor satuan karena normanya nol.

Referensi#