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 , normanya adalah
Notasi dua garis vertikal dibaca norma a. Untuk , panjang panahnya adalah
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.
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))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.9999999999999999Baris 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 mengalikan normanya dengan nilai mutlak , dirumuskan sebagai
Gambar berikut menampilkan bersama dengan . 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.
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
Proses ini disebut normalisasi. Untuk , hasil pembagiannya adalah sebagaimana tercetak pada keluaran skrip di atas. Pembagian tersebut setara dengan perkalian skalar 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 satuan juga menjadi fondasi penulisan vektor lain. Vektor 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.
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))arah = [0.70710678 0.70710678]
norma arah = 1.0Di 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 .
- 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#
- numpy.linalg.norm — NumPy — Dokumentasi resmi fungsi norma yang digunakan pada seluruh contoh topik ini.
- Linear algebra — Khan Academy — Materi panjang vektor dan vektor satuan beserta latihannya.