Contoh Fungsi : Sudut 2 Vektor
Membuat Fungsi Pada Python¶
Pada tulisan ini, akan diberikan contoh pembuatan/penggunaan fungsi.
Kasus yang digunakan adalah sudut antara 2 vektor
Sudut Antara 2 Vektor¶
Misalkan vektor $\bar{u}=\begin{bmatrix}u_1\\u_2\\\vdots\\u_n\end{bmatrix}$ dan $\bar{v}=\begin{bmatrix}v_1\\v_2\\\vdots\\v_n\end{bmatrix}$.
Sudut terkecil yang dibentuk oleh vektor tersebut adalah $\theta$, dengan
$$\theta=\cos^{-1}\left(\frac{\bar{u}\cdot\bar{v}}{|\bar{u}|\ |\bar{v}|}\right)$$
Perkalian dot vektor antara $\bar{u}$ dan $\bar{v}$ didefinisikan sebagai
$$\bar{u}\cdot\bar{v}=u_1v_1+u_2v_2+...+u_nv_n$$
Panjang vektor $\bar{u}$ didefinisikan sebagai
$$|\bar{u}|=\sqrt{u_1^2+u_2^2+...+u_n^2}$$
Algoritma menghitung sudut antara 2 vektor
- Deskripsi : Algoritma menghitung sudut antara 2 vektor
- Masukkan : masukkan ukuran vektor $n$, masukkan 2 vektor
- Keluaran : sudut terkecil antara 2 vektor
- Langkah-langkah :
- masukkan ukuran vektor $n$
- masukkan elemen-elemen vektor $\bar{u}$ dan $\bar{v}$. (dalam latihan ini akan dibuat secara random)
- Hitung panjang vektor u
- panjang_u=0
- untuk setiap i pada {1,2,...,n}
- panjang_u=panjang_u+u[i]**2
- panjang_u=(panjang_u)**(1/2)
- Hitung panjang vektor v (algoritma sama seperti panjang vektor u)
- Hitung perkalian dot vektor u dan v
- dot=0
- untuk setiap i pada {1,2,...,n}
- dot=dot+u[i]*v[i]
- cos=dot/(panjang_u*panjang_v)
- teta=inv(cos)
- print("sudut terkecil yang dibentuk vektor u dan v adalah",teta)
import math
import random
print("Algoritma menentukan sudut antara 2 vektor u dan v")
print("Masukkan ukuran vektor n=")
n=int(input())
random.seed(108)
u = [random.randrange(1, 100, 1) for i in range(n)] ; print("vektor u=",u)
v = [random.randrange(1, 100, 1) for i in range(n)] ; print("vektor v=",v)
panjang_u=0
for i in range(n):
panjang_u=panjang_u+u[i]**2
panjang_u=panjang_u**(1/2)
panjang_v=0
for i in range(n):
panjang_v=panjang_v+v[i]**2
panjang_v=panjang_v**(1/2)
dot=0
for i in range(n):
dot=dot+u[i]*v[i]
cos=dot/(panjang_u*panjang_v)
teta=math.acos(cos) #menghitung invers dari cos
print("sudut terkecil yang dibentuk vektor u dan v adalah",teta)
Algoritma menentukan sudut antara 2 vektor u dan v Masukkan ukuran vektor n= 10 vektor u= [17, 92, 11, 85, 50, 94, 36, 49, 26, 11] vektor v= [39, 28, 24, 26, 92, 41, 25, 15, 25, 11] sudut terkecil yang dibentuk vektor u dan v adalah 0.7229172887533821
Kita modifikasi program di atas, bagian menghitung panjang vektor kita pisahkan menjadi sebuah fungi.
Buat juga fungsi untuk menghitung perkalian dot vektor.
def panjang_vektor(u):
#input : u, list of float
#output : |u|, float, panjang vektor u
panjang_u=0
for i in range(len(u)):
panjang_u=panjang_u+u[i]**2
return panjang_u**(1/2)
def kali_dot(u,v):
#input1 : u, list of float
#input2 : v, list of float
#output : u dot v, float, perkalian dot antara vektor u dan v
if len(u)==len(v):
dot=0
for i in range(len(u)):
dot=dot+u[i]*v[i]
return dot
else:
raise TypeError("Panjang vektor yang dimasukkan tidak sama")
import math
import random
print("Algoritma menentukan sudut antara 2 vektor u dan v")
print("Masukkan ukuran vektor n=")
n=int(input())
random.seed(108)
u = [random.randrange(1, 100, 1) for i in range(n)]
print("vektor u=",u)
v = [random.randrange(1, 100, 1) for i in range(n)]
print("vektor v=",v)
#menghitung cos(theta)
cos= kali_dot(u,v)/(panjang_vektor(u)*panjang_vektor(v))
#menghitung invers dari cos
teta=math.acos(cos)
print("sudut terkecil yang dibentuk vektor u dan v adalah",teta)
Algoritma menentukan sudut antara 2 vektor u dan v Masukkan ukuran vektor n= 10 vektor u= [17, 92, 11, 85, 50, 94, 36, 49, 26, 11] vektor v= [39, 28, 24, 26, 92, 41, 25, 15, 25, 11] sudut terkecil yang dibentuk vektor u dan v adalah 0.7229172887533821
Pengunaan fungsi sangat berguna untuk membuat program menjadi lebih rapi, terutama ketika fungsi yang dibuat digunakan secara berulang-ulang
Comments
Post a Comment