Modul 6 — Jembatan ke Jupyter
Modul 6 — Jembatan ke Jupyter
Padanan cerita, hitungan, dan kode (penjelasan tambahan)
| Bagian cerita | Langkah manual atau konsep | Perintah pada blok di bawah |
|---|---|---|
| Panjang lurus gerak 3 dan 4 | Akar dari jumlah kuadrat | np.linalg.norm(u) |
| Petunjuk arah satu satuan | Bagi komponen dengan panjang | u/np.linalg.norm(u) |
| Sudut terhadap arah kanan | Kosinus 3/5, lalu cari sudut | np.arccos(...), np.degrees(theta) |
| Bayangan pada penggaris | Ambil bagian sejajar arah acuan | proj = ((u @ v)/(v @ v))*v |
| Sisa tegak lurus | Kurangi proyeksi dan periksa hasil titik | u-proj, (u-proj) @ v |
| Normal dan luas lantai | Silang dua sisi lalu hitung panjang | np.cross(a, b), np.linalg.norm(n) |
| Titik memenuhi garis dan bidang | Periksa perbandingan koordinat dan komponen normal | Pemeriksaan point dan normal @ point |
np.arccos memberi radian dan np.degrees mengubahnya menjadi derajat. np.clip menjaga kosinus tetap pada selang -1 sampai 1 akibat pembulatan. Panjang hasil silang dua sisi berunit meter menyatakan luas dalam meter persegi.
import numpy as np
u = np.array([3., 4., 0.])
v = np.array([1., 0., 0.])
print(np.linalg.norm(u), u/np.linalg.norm(u)) # 5; [0.6, 0.8, 0]
theta = np.arccos(np.clip((u @ v)/(np.linalg.norm(u)*np.linalg.norm(v)), -1, 1))
print(np.degrees(theta)) # sekitar 53.1301 derajat
proj = ((u @ v)/(v @ v))*v
print(proj, u-proj) # [3,0,0]; [0,4,0]
assert np.isclose((u-proj) @ v, 0)
a = np.array([3., 0., 0.])
b = np.array([0., 4., 0.])
n = np.cross(a, b)
print(n, np.linalg.norm(n)) # [0,0,12]; 12 m^2
assert np.isclose(n @ a, 0) and np.isclose(n @ b, 0)
c = np.array([0., 0., 2.])
print(a @ np.cross(b, c)) # 24 m^3, produk campuran
assert np.isclose(a @ np.cross(b, c), 24)
point = .5*u # [1.5, 2, 0]
assert np.isclose(point[0]/3, point[1]/4) and point[2] == 0
normal = np.array([0., 0., 1.])
assert np.isclose(normal @ point, 0) # garis terletak pada lantai