Anda di halaman 1dari 27

Slide-06 5/12/22, 11:10

Slide-06

Larik dan Grafik


Pemrograman Komputer

Semester Genap 2021/2022

Sasaran Kuliah
Setelah mengikuti kuliah ini, mahasiswa diharapkan mampu:

memahami persamaan dan perbendaan antara obyek-obyek lists dan larik (array)
menggunakan larik untuk mengolah sekumpulan data bilangan
menggunakan larik untuk melakukan perhitungan dengan vektor dan matriks
menampilkan sekumpulan nilai fungsi matematika dalam bentuk grafik
menampilkan grafik yang dilengkapi dengan dekorasinya
menampilkan beberapa kurva dalam satu grafik dan beberapa grafik dalam satu
gambar

http://localhost:8888/nbconvert/html/Academics/Pemrograman%20Komputer/Modul-06/Slide-06.ipynb?download=false Page 1 of 27
Slide-06 5/12/22, 11:10

Vektor
Beberapa besaran matematika melibatkan sekumpulan nilai atau data

Titik pada bidang datar → sepasang nilai koordinat (x, y)


Titik dalam ruang 3D → tiga nilai koordinat (x, y, z) atau (x1 , x2 , x3 )
Penyelesaian n persamaan serempak → n solusi berupa (x1 , x2 , x3 , ⋯ , xn )

Pada bidang matematika, sekumpulan nilai tsb = vektor yg dpt digambarkan sbg

http://localhost:8888/nbconvert/html/Academics/Pemrograman%20Komputer/Modul-06/Slide-06.ipynb?download=false Page 2 of 27
Slide-06 5/12/22, 11:10

Vektor pada Python


Pada Bahasa Python, besaran vektor dpt diwujudkan dgn menggunakan lists dan
tuples sbb:

dengan

v1 dan v2 menyatakan vektor2 pada bidang datar


v3 menyatakan vektor dalam ruang 3D
v4 menyatakan vektor dalam ruang 150 dimensi → 150 nilai dr fungsi
eksponensial

Operasi Matematika pada Vektor


Krn vektor dpt digambarkan sbg garis-anak-panah (dgn magnitudo & arah) mk vektor
dpt melambangkan berbagai besaran fisika dan geometri:

Posisi, kecepatan dan percepatan benda bergerak


Sisi dr segitiga dan bentuk geometri lainnya

Beberapa operasi matematika menyangkut dua vektor (u1 , u2 ) dan (v1 , v2 ):

penambahan: (u1 , u2 ) + (v1 , v2 ) = (u1 + v1 , u2 + v2 )


pengurangan: (u1 , u2 ) − (v1 , v2 ) = (u1 − v1 , u2 − v2 )
perkalian dgn skalar: a ⋅ (v1 , v2 ) = (a v1 , a v2 )
perkalian inner atau perkalian-titik (dot product):
(u1 , u2 ) ⋅ (v1 , v2 ) = u1 v1 + u2 v2
panjang atau magnitudo vektor: ||(v1 , v2 )|| = √(v1 , v2 ) ⋅ (v1 , v2 ) = √v21 + v22

Semua operasi matematika di atas dpt diperluas utk vektor2 yg berdimensi lebih
besar drpd 2

http://localhost:8888/nbconvert/html/Academics/Pemrograman%20Komputer/Modul-06/Slide-06.ipynb?download=false Page 3 of 27
Slide-06 5/12/22, 11:10

Fungsi Matematika pada Vektor


2
Penerapan suatu fungsi matematika pada vektor = pengenaan fungsi tsb pd masing
elemen vektor

Kalau v = (v0 , v1 , v2 , ⋯ , vn−1 ) maka


f(v) = (f(v0 ), f(v1 ), f(v2 ), ⋯ , f(vn−1 ))

Misalnya:

sin(v) = (sin(v0 ), sin(v1 ), sin(v2 ), ⋯ , sin(vn−1 ))

dan

vb = (vb0 , vb1 , vb2 , ⋯ , vbn−1 )

In [1]: # dataFungsi_1.py: Program yang membangkitkan data berurutan


# berdasarkan perhitungan di dalam fungsi.
# Versi 1 = menggunakan kalang 'for'
# sumber: A Primer on Scientific Programming with Python, hal. 232-233

# definisikan fungsi untuk membangkitkan data


def f(x):
return x**3

# tentukan cacah data dan nilai dari variabel independen


n = 5 # cacah titik di sepanjang sumbu-x
dx = 1 / (n - 1) # selang di antara 2 titik di sumbu-x

listX = [] # list untuk menyimpan titik-titik x


for i in range(n):
x = i * dx # nilai setiap titik x
listX.append(x)

# hitung nilai dari variabel dependen


listY = [] # list untuk menyimpan titik-titik y
for i in range(n):
y = f(listX[i]) # nilai setiap titik y
listY.append(y)

# pasangkan nilai-nilai kedua variabel


listXY = [] # list untuk menyimpan pasangan x-y
for i in range(n):
listXY.append([listX[i], listY[i]])

# tampilkan semua list yang sudah dibentuk


print('Nilai-nilai x =', listX)
print('Nilai-nilai y =', listY)
print('Nilai-nilai x, y =', listXY)

http://localhost:8888/nbconvert/html/Academics/Pemrograman%20Komputer/Modul-06/Slide-06.ipynb?download=false Page 4 of 27
Slide-06 5/12/22, 11:10

Nilai-nilai x = [0.0, 0.25, 0.5, 0.75, 1.0]


Nilai-nilai y = [0.0, 0.015625, 0.125, 0.421875, 1.0]
Nilai-nilai x, y = [[0.0, 0.0], [0.25, 0.015625], [0.5, 0.125], [0.75, 0.
421875], [1.0, 1.0]]

In [2]: # dataFungsi_2.py: Program yang membangkitkan data berurutan


# berdasarkan perhitungan di dalam fungsi.
# Versi 2 = menggunakan 'list comprehensions'
# sumber: A Primer on Scientific Programming with Python, hal. 232-233

# definisikan fungsi untuk membangkitkan data


def f(x):
return x**3

# tentukan cacah data dan nilai dari variabel independen


n = 5 # cacah titik di sepanjang sumbu-x
dx = 1 / (n - 1) # selang di antara 2 titik di sumbu-x
listX = [i * dx for i in range(n)]

# hitung nilai dari variabel dependen


listY = [f(listX[i]) for i in range(n)]

# pasangkan nilai-nilai kedua variabel


listXY = [[x, y] for x, y in zip(listX, listY)]

# tampilkan semua list yang sudah dibentuk


print('Nilai-nilai x =', listX)
print('Nilai-nilai y =', listY)
print('Nilai-nilai x, y =', listXY)

Nilai-nilai x = [0.0, 0.25, 0.5, 0.75, 1.0]


Nilai-nilai y = [0.0, 0.015625, 0.125, 0.421875, 1.0]
Nilai-nilai x, y = [[0.0, 0.0], [0.25, 0.015625], [0.5, 0.125], [0.75, 0.
421875], [1.0, 1.0]]

http://localhost:8888/nbconvert/html/Academics/Pemrograman%20Komputer/Modul-06/Slide-06.ipynb?download=false Page 5 of 27
Slide-06 5/12/22, 11:10

In [3]: # dasarLarik.py: Program yang mengenal dasar-dasar larik atau


# 'array' dalam pustaka NumPy (Numerical Python).
# sumber: A Primer on Scientific Programming with Python, hal. 234

# sertakan pustaka yang diperlukan


import numpy as np

# tetapkan suatu list sebagai deretan asal


lstBil1 = [12, 34, 56, 78, 90]
lstBil2 = [12, 34, 56.7, 8.9]
print('List bilangan bulat =', lstBil1)
print('List bilangan campuran =', lstBil2)

# bentuk larik dari list yang sudah ada


lrkBil1 = np.array(lstBil1)
lrkBil2 = np.array(lstBil2)
print('Larik bilangan bulat =', lrkBil1)
print('Larik bilangan campuran=', lrkBil2)

# bentuk larik berisikan nol dengan panjang tertentu


lrkNol1 = np.zeros(7)
print('\nLarik nol pecahan =', lrkNol1)

# bentuk larik nol dengan tipe 'ilangan bulat


lrkNol2 = np.zeros(7, int)
print('Larik nol bulat =', lrkNol2)

# bentuk larik nol dengan panjang mirip larik lainnya


lrkNol3 = np.zeros_like(lrkBil1)
lrkNol4 = np.zeros_like(lrkBil2)
print('Larik nol mirip larik bilangan bulat =', lrkNol3)
print('Larik nol mirip larik bilangan campuran =', lrkNol4)

# bentuk larik dengan elemen-elemen yang teratur atau deret


lrkDeret = np.linspace(3.5, 10.1, 7) # linspace(<awal>, <akhir>, <cacah>)
print('\nLarik berupa deret teratur =', lrkDeret)

# cuplik atau iris suatu larik


lrkBil3 = lrkBil1[1:-1] # cuplik kecuali elemen pertama & terakhir
print('\nLarik yang asli =', lrkBil1)
print('Larik hasil irisan =', lrkBil3)

# ganti nilai larik hasil irisan = ganti nilai larik yang asli
lrkBil3[1] = 65
print('\nLarik hasil irisan setelah penggantian=', lrkBil3)
print('Larik yang asli setelah penggantian =', lrkBil1)

http://localhost:8888/nbconvert/html/Academics/Pemrograman%20Komputer/Modul-06/Slide-06.ipynb?download=false Page 6 of 27
Slide-06 5/12/22, 11:10

List bilangan bulat = [12, 34, 56, 78, 90]


List bilangan campuran = [12, 34, 56.7, 8.9]
Larik bilangan bulat = [12 34 56 78 90]
Larik bilangan campuran= [12. 34. 56.7 8.9]

Larik nol pecahan = [0. 0. 0. 0. 0. 0. 0.]


Larik nol bulat = [0 0 0 0 0 0 0]
Larik nol mirip larik bilangan bulat = [0 0 0 0 0]
Larik nol mirip larik bilangan campuran = [0. 0. 0. 0.]

Larik berupa deret teratur = [ 3.5 4.6 5.7 6.8 7.9 9. 10.1]

Larik yang asli = [12 34 56 78 90]


Larik hasil irisan = [34 56 78]

Larik hasil irisan setelah penggantian= [34 65 78]


Larik yang asli setelah penggantian = [12 34 65 78 90]

In [4]: # dataFungsi_3.py: Program yang membangkitkan data berurutan


# berdasarkan perhitungan di dalam fungsi.
# Versi 3 = menggunakan larik atau 'array'
# sumber: A Primer on Scientific Programming with Python, hal. 235-236

# sertakan pustaka yang diperlukan


import numpy as np

# definisikan fungsi untuk membangkitkan data


def f(x):
return x**3

# tentukan cacah data dan nilai dari variabel independen


n = 5 # cacah titik di sepanjang sumbu-x
larikX = np.linspace(0, 1, n) # nilai setiap titik x

# hitung nilai dari variabel dependen


larikY = np.zeros(n) # larik untuk menyimpan titik-titik y
for i in range(n):
larikY[i] = f(larikX[i]) # nilai setiap titik y

# tampilkan semua list yang sudah dibentuk


print('Nilai-nilai x =', larikX)
print('Nilai-nilai y =', larikY)

Nilai-nilai x = [0. 0.25 0.5 0.75 1. ]


Nilai-nilai y = [0. 0.015625 0.125 0.421875 1. ]

http://localhost:8888/nbconvert/html/Academics/Pemrograman%20Komputer/Modul-06/Slide-06.ipynb?download=false Page 7 of 27
Slide-06 5/12/22, 11:10

In [5]: # dataFungsi_4.py: Program yang membangkitkan data berurutan


# berdasarkan perhitungan di dalam fungsi.
# Versi 4 = menggunakan larik & 'list comprehensions'
# sumber: A Primer on Scientific Programming with Python, hal. 236

# sertakan pustaka yang diperlukan


import numpy as np

# definisikan fungsi untuk membangkitkan data


def f(x):
return x**3

# tentukan cacah data dan nilai dari variabel independen


n = 5 # cacah titik di sepanjang sumbu-x
larikX = np.linspace(0, 1, n) # nilai setiap titik x

# hitung nilai dari variabel dependen yang berupa list


larikY = np.array([f(xi) for xi in larikX])

# tampilkan semua list yang sudah dibentuk


print('Nilai-nilai x =', larikX)
print('Nilai-nilai y =', larikY)

Nilai-nilai x = [0. 0.25 0.5 0.75 1. ]


Nilai-nilai y = [0. 0.015625 0.125 0.421875 1. ]

In [6]: # dataFungsi_5.py: Program yang membangkitkan data berurutan


# berdasarkan perhitungan di dalam fungsi.
# Versi 5 = menggunakan 'vectorization'
# sumber: A Primer on Scientific Programming with Python, hal. 236

# sertakan pustaka yang diperlukan


import numpy as np

# definisikan fungsi untuk membangkitkan data


def f(x):
return x**3

# tentukan cacah data dan nilai dari variabel independen


n = 5 # cacah titik di sepanjang sumbu-x
larikX = np.linspace(0, 1, n) # nilai setiap titik x

# hitung nilai dari variabel dependen dengan 'vectorization'


larikY = f(larikX)

# tampilkan semua list yang sudah dibentuk


print('Nilai-nilai x =', larikX)
print('Nilai-nilai y =', larikY)

Nilai-nilai x = [0. 0.25 0.5 0.75 1. ]


Nilai-nilai y = [0. 0.015625 0.125 0.421875 1. ]

http://localhost:8888/nbconvert/html/Academics/Pemrograman%20Komputer/Modul-06/Slide-06.ipynb?download=false Page 8 of 27
Slide-06 5/12/22, 11:10

In [7]: # fungsiMath.py: Program yang menggunakan fungsi-fungsi


# matematika baku yang disediakan pustaka
# math (versi 1).
# sumber: A Primer on Scientific Programming with Python, hal. 236

# sertakan pustaka yang diperlukan


from math import pi, sin, cos, exp
import numpy as np

# hitung nilai dari variabel independen


n = 201 # cacah data
x = np.linspace(0, 2, n)

# hitung nilai dari variabel dependen dengan kalang 'for'


y = np.zeros(n) # larik penampung
for i in range(n):
y[i] = sin(pi * x[i]) * cos(x[i]) * exp(-x[i]**2) + 2 + x[i]**2

# tampilkan sebagian nilai x dan y


print(' x y')
print('----- -----')
for i in range(5):
print('%5.2f %5.2f' % (x[i], y[i]))
print(' ... ...')
for i in range(n - 5, n):
print('%5.2f %5.2f' % (x[i], y[i]))

x y
----- -----
0.00 2.00
0.01 2.03
0.02 2.06
0.03 2.09
0.04 2.13
... ...
1.96 5.84
1.97 5.88
1.98 5.92
1.99 5.96
2.00 6.00

http://localhost:8888/nbconvert/html/Academics/Pemrograman%20Komputer/Modul-06/Slide-06.ipynb?download=false Page 9 of 27
Slide-06 5/12/22, 11:10

In [8]: # fungsiNumpy.py: Program yang menggunakan fungsi-fungsi


# matematika baku yang disediakan pustaka
# Numpy (versi 2).
# sumber: A Primer on Scientific Programming with Python, hal. 237

# sertakan pustaka yang diperlukan


import numpy as np

# hitung nilai dari variabel independen


n = 201 # cacah data
x = np.linspace(0, 2, n)

# hitung nilai dari variabel dependen dengan 'vectorization'


y = np.sin(np.pi * x) * np.cos(x) * np.exp(-x**2) + 2 + x**2

# tampilkan sebagian nilai x dan y


print(' x y')
print('----- -----')
for i in range(5):
print('%5.2f %5.2f' % (x[i], y[i]))
print(' ... ...')
for i in range(n - 5, n):
print('%5.2f %5.2f' % (x[i], y[i]))

x y
----- -----
0.00 2.00
0.01 2.03
0.02 2.06
0.03 2.09
0.04 2.13
... ...
1.96 5.84
1.97 5.88
1.98 5.92
1.99 5.96
2.00 6.00

http://localhost:8888/nbconvert/html/Academics/Pemrograman%20Komputer/Modul-06/Slide-06.ipynb?download=false Page 10 of 27
Slide-06 5/12/22, 11:10

In [9]: # salinLarik.py: Program yang membandingkan penyamaan dan


# penyalinan suatu larik.
# sumber: A Primer on Scientific Programming with Python, hal. 267

# sertakan pustaka yang diperlukan


import numpy as np

# tetapkan suatu larik yang akan disamakan dan disalinkan


x = np.array([11, 22, 33, 44])
print('Larik asli =', x)

# samakan dan salinkan dengan larik yang lainnya


a = x
b = x.copy()
print('Larik baru hasil penyamaan =', a)
print('Larik baru hasil penyalinan =', b)

# ubah suatu elemen pada larik yang disamakan


a[-1] = 55
print('\nLarik baru hasil penyamaan =', a)
print('Larik asli setelah pengubahan =', x)

# ubah suatu elemen pada larik yang disalinkan


b[1] = 77
print('\nLarik baru hasil penyalinan =', b)
print('Larik asli setelah pengubahan =', x)

Larik asli = [11 22 33 44]


Larik baru hasil penyamaan = [11 22 33 44]
Larik baru hasil penyalinan = [11 22 33 44]

Larik baru hasil penyamaan = [11 22 33 55]


Larik asli setelah pengubahan = [11 22 33 55]

Larik baru hasil penyalinan = [11 77 33 44]


Larik asli setelah pengubahan = [11 22 33 55]

http://localhost:8888/nbconvert/html/Academics/Pemrograman%20Komputer/Modul-06/Slide-06.ipynb?download=false Page 11 of 27
Slide-06 5/12/22, 11:10

In [10]: # lajuLarik.py: Program untuk menentukan laju pelaksanaan


# berbagai perhitungan aritmatika pada larik.
# sumber: A Primer on Scientific Programming with Python, hal. 268

# sertakan pustaka yang diperlukan


import time
import numpy as np

# bentuk larik berukuran besar


x = np.linspace(0, 1000, 1000001)

# hitung rumus aritmetika secara sekaligus


print('Cara Pertama')
print('------------')
mulai = time.time()
a = (3 * x**4 + 2 * x + 4) / (x + 1)
usai = time.time()
print(' Sebagian hasil perhitungan =', a[:5])
print(' Waktu yang diperlukan = %.2E s' % (usai - mulai))

# hitung rumus yang sama secara bagian-per-bagian


print('\nCara Kedua')
print('----------')
mulai = time.time()
h1 = x**4
h2 = 3 * h1
h3 = 2 * x
h4 = h2 + h3
h5 = h4 + 4
h6 = x + 1
a = h5 / h6
usai = time.time()
print(' Sebagian hasil perhitungan =', a[:5])
print(' Waktu yang diperlukan = %.2E s' % (usai - mulai))

# hitung rumus yang sama secara di-tempat


print('\nCara Ketiga')
print('-----------')
mulai = time.time()
a = x.copy()
a **= 4 # a = a**4
a *= 3 # a = a * 3
a += 2 * x # a = a + 2 * x
a += 4 # a = a + 4
a /= x + 1 # a = a / (x + 1)
usai = time.time()
print(' Sebagian hasil perhitungan =', a[:5])
print(' Waktu yang diperlukan = %.2E s' % (usai - mulai))

http://localhost:8888/nbconvert/html/Academics/Pemrograman%20Komputer/Modul-06/Slide-06.ipynb?download=false Page 12 of 27
Slide-06 5/12/22, 11:10

Cara Pertama
------------
Sebagian hasil perhitungan = [4. 3.998002 3.99600798 3.994017
95 3.99203187]
Waktu yang diperlukan = 1.24E-01 s

Cara Kedua
----------
Sebagian hasil perhitungan = [4. 3.998002 3.99600798 3.994017
95 3.99203187]
Waktu yang diperlukan = 1.31E-01 s

Cara Ketiga
-----------
Sebagian hasil perhitungan = [4. 3.998002 3.99600798 3.994017
95 3.99203187]
Waktu yang diperlukan = 4.24E-02 s

Menggambar Kurva
Mem-visualisasi-kan suatu fungsi matematika f(x) dpt dilakukan dgn
menggambarkan kurva y = f(x) pd suatu bidang datar dgn sistem koordinat xy

Ktk komputer dipergunakan utk melakukan hal ini → menggambar (plotting)


kurva
Suatu kurva digambar dgn menarik sejumlah garis lurus di antara n titik dr kurva
tsb
Kalau lebih banyak titik yang dipergunakan maka lebih mulus terlihat kurva-nya

Istilah2 penggambaran: gambar (figure) → grafik (graphs) → kurva (plots)

Umpama: fungsi yg akan digambarkan adl f(x) sepanjang a ≤x≤b


Mula-mula, pilih sebanyak n koordinat-x di dalam rentang [a, b] → namakan:
x0 , x1 , x2 , ⋯ , xn−1
Kemudian, hitung nilai2 yi = f(xi ) utk i = 0, 1, 2, ⋯ , n − 1 → titik2
(xi , yi ) i = 0, 1, 2, ⋯ , n − 1 kini pd kurva y = f(x)
Lazimnya, koordinat2 xi dipilih shg memiliki selang/jarak yg seragam:

b−a
xi = a + i h, h=
n−1
Jika nilai2 xi & yi disimpan dlm dua larik (arrays) mk kurva dpt digambarkan dgn
perintah plot(x, y)

http://localhost:8888/nbconvert/html/Academics/Pemrograman%20Komputer/Modul-06/Slide-06.ipynb?download=false Page 13 of 27
Slide-06 5/12/22, 11:10

Menggambar dgn Matplotlib


Paket pustaka baku dlm Bahasa Python utk menggambar kurva = Matplotlib → dpt
dipakai mirip MATLAB
2
Umpama: fungsi yg akan digambarkan adl y = f(t) = t2 e(−t ) sepanjang
0≤t≤3
Mula-mula, bangkitkan suatu larik berisikan sebanyak 51 koordinat-t dgn selang
yg seragam (50 interval)
Kemudian, hitung nilai2
y pd koordinat2 ini dan simpankan ke dalam larik yg lain
Akhirnya, gambarkan kurva t vs y dgn perintah plot(t, y) dan tampilkan di
layar komputer

In [11]: # gambarKurva_1.py: Program yang menggambarkan kurva suatu fungsi


# matematika dengan memanfaatkan pustaka-pustaka
# Numerical Python dan Matplotlib.
# sumber: A Primer on Scientific Programming with Python, hal. 239 & 243

# sertakan beberapa pustaka yang diperlukan


import numpy as np
import matplotlib.pyplot as plt

# definisikan fungsi yang akan digambarkan kurvanya


def f(t):
return t**2 * np.exp(-t**2)

# tentukan cacah titik dan rentang dari variabel independen


n = 51
t = np.linspace(0, 3, n)

# hitung titik-titik dari variabel dependen


y = np.zeros(n)
for i in range(n):
y[i] = f(t[i])

# tampilkan gambar kurva yang telah dihitung


plt.plot(t, y)
plt.show()

http://localhost:8888/nbconvert/html/Academics/Pemrograman%20Komputer/Modul-06/Slide-06.ipynb?download=false Page 14 of 27
Slide-06 5/12/22, 11:10

Penggunaan Vectorization dan Pemberksan Grafik


Krn menggunakan larik Numerical Python mk kalang perhitungan nilai2 y dpt
digantikan dgn vectorization y = f(t)

Setelah grafik ditampilkan pd layar komputer, grafik dpt disimpan ke dlm berkas
berformat PDF atau PNG dgn metode savefig() dr obyek grafik terkait

In [12]: # gambarKurva_2.py: Program yang melanjutkan penggambaran kurva


# suatu fungsi matematika dengan memanfaatkan
# vectorization dan penyimpanan dalam berkas.
# sumber: A Primer on Scientific Programming with Python, hal. 239 & 243

# sertakan beberapa pustaka yang diperlukan


import numpy as np
import matplotlib.pyplot as plt

# definisikan fungsi yang akan digambarkan kurvanya


def f(t):
return t**2 * np.exp(-t**2)

# tentukan cacah titik dan rentang dari variabel independen


n = 51
t = np.linspace(0, 3, n)

# hitung titik-titik dari variabel dependen


y = f(t)

# tampilkan gambar kurva yang telah dihitung


gmbr = plt.figure() # agar dapat menyimpan ke berkas
plt.plot(t, y)
plt.show()

# simpan grafik ke dalam berkas


gmbr.savefig('gambarKurva_2.png') # dengan format PNG
gmbr.savefig('gambarKurva_2.pdf') # dengan format PDF

http://localhost:8888/nbconvert/html/Academics/Pemrograman%20Komputer/Modul-06/Slide-06.ipynb?download=false Page 15 of 27
Slide-06 5/12/22, 11:10

Dekorasi Grafik
Suatu grafik dpt dilengkapi dgn dekorasi yg dpt berupa:

judul grafik → fungsi title()


label sumbu koordinat → fungsi2 xlabel() & ylabel()
legenda grafik → fungsi legend()
kisi-kisi grafik → fungsi grid()
batas2 sumbu koordinat → fungsi axis()

http://localhost:8888/nbconvert/html/Academics/Pemrograman%20Komputer/Modul-06/Slide-06.ipynb?download=false Page 16 of 27
Slide-06 5/12/22, 11:10

In [13]: # gambarKurva_3.py: Program yang melanjutkan penggambaran kurva


# suatu fungsi matematika dengan menambahkan
# dekorasi grafik yang lazim
# sumber: A Primer on Scientific Programming with Python, hal. 240 & 243

# sertakan beberapa pustaka yang diperlukan


import numpy as np
import matplotlib.pyplot as plt

# definisikan fungsi yang akan digambarkan kurvanya


def f(t):
return t**2 * np.exp(-t**2)

# tentukan cacah titik dan rentang dari variabel independen


n = 51
t = np.linspace(0, 3, n)

# hitung titik-titik dari variabel dependen


y = f(t)

# gambarkan kurva yang telah dihitung


gmbr = plt.figure() # agar dapat menyimpan ke berkas
plt.plot(t, y)

# tampilkan grafik beserta dekorasinya


plt.title('Grafik Perdana dengan Matplotlib')
plt.xlabel('waktu (t, sekon)')
plt.ylabel('variabel gayut (y, meter)')
plt.legend(['t^2 * exp(-t^2)'])
plt.grid()
plt.axis([0, 3, -0.05, 0.6]) # [tmin, tmax, ymin, ymax]
plt.show()

# simpan grafik ke dalam berkas


gmbr.savefig('gambarKurva_3.png')
gmbr.savefig('gambarKurva_3.pdf')

http://localhost:8888/nbconvert/html/Academics/Pemrograman%20Komputer/Modul-06/Slide-06.ipynb?download=false Page 17 of 27
Slide-06 5/12/22, 11:10

Banyak Kurva dlm Satu Grafik


Utk menggambarkan banyak kurva di dlm satu grafik yg sama dpt dicapai dgn

memanggil beberapa perintah plot() scr berturutan


memanggil satu perintah plot() dgn beberapa argumen yg sesuai dgn stp
kurva yg akan digambarkan

In [14]: # gambarKurva_4.py: Program yang melanjutkan penggambaran kurva


# dari 2 fungsi matematika dalam satu grafik
# yang sama
# sumber: A Primer on Scientific Programming with Python, hal. 241 & 243

# sertakan beberapa pustaka yang diperlukan


import numpy as np
import matplotlib.pyplot as plt

# definisikan fungsi pertama


def f1(t):
return t**2 * np.exp(-t**2)

# definisikan fungsi kedua


def f2(t):
return t**2 * f1(t)

# tentukan cacah titik dan rentang dari variabel independen


n = 51
t = np.linspace(0, 3, n)

# hitung titik-titik dari dua variabel dependen


y1 = f1(t)
y2 = f2(t)

# gambarkan dua kurva yang telah dihitung


gmbr = plt.figure() # agar dapat menyimpan ke berkas
plt.plot(t, y1, 'r-') # kurva dengan garis penuh berwarna merah
plt.plot(t, y2, 'bo') # kurva dengan lingkaran berwarna biru

# tampilkan grafik beserta dekorasinya


plt.title('Grafik dengan Dua Kurva')
plt.xlabel('waktu (t)')
plt.ylabel('variabel gayut (y)')
plt.legend(['t^2 * exp(-t^2)', 't^4 * exp(-t^2)'])
plt.show()

# simpan grafik ke dalam berkas


gmbr.savefig('gambarKurva_4.png')
gmbr.savefig('gambarKurva_4.pdf')

http://localhost:8888/nbconvert/html/Academics/Pemrograman%20Komputer/Modul-06/Slide-06.ipynb?download=false Page 18 of 27
Slide-06 5/12/22, 11:10

Banyak Grafik dlm Satu Gambar


Utk menggambarkan beberapa grafik di dlm satu gambar → fungsi subplot(r, c,
a) dgn

r adl cacah baris grafik di dlm gambar yg dimaksud


c adl cacah kolom grafik di dlm gambar yg dimaksud
a adl pencacah (nomor urut) scr baris (dr kiri ke kanan) dr suatu grafik

http://localhost:8888/nbconvert/html/Academics/Pemrograman%20Komputer/Modul-06/Slide-06.ipynb?download=false Page 19 of 27
Slide-06 5/12/22, 11:10

In [15]: # gambarKurva_5.py: Program yang melanjutkan penggambaran kurva


# dari 2 fungsi matematika dalam dua grafik
# yang berbeda
# sumber: A Primer on Scientific Programming with Python, hal. 242 & 243

# sertakan beberapa pustaka yang diperlukan


import numpy as np
import matplotlib.pyplot as plt

# definisikan fungsi pertama


def f1(t):
return t**2 * np.exp(-t**2)

# definisikan fungsi kedua


def f2(t):
return t**2 * f1(t)

# tentukan cacah titik dan rentang dari variabel independen


n = 51
t = np.linspace(0, 3, n)

# hitung titik-titik 2 kurva dalam grafik pertama


y1 = f1(t)
y2 = f2(t)

# gambarkan dua kurva dalam grafik pertama


gmbr = plt.figure() # membuat gambar yang tersendiri
plt.subplot(2, 1, 1) # 2 baris, 1 kolom dan baris ke-1
plt.plot(t, y1, 'r-') # kurva dengan garis penuh berwarna merah
plt.plot(t, y2, 'bo') # kurva dengan lingkaran berwarna biru

# persiapkan dekorasi grafik pertama


plt.title('Dua Grafik dengan Dua Kurva')
plt.ylabel('variabel gayut (y)')
plt.legend(['t^2 * exp(-t^2)', 't^4 * exp(-t^2)'])
plt.axis([t[0], t[-1], min(y2) - 0.05, max(y2) + 0.5])

# hitung titik-titik kurva dalam grafik kedua


t3 = t[::4] # cuplik sebagian titik-titik t
y3 = f2(t3)

# gambarkan dua kurva dalam grafik kedua


plt.subplot(2, 1, 2) # 2 baris, 1 kolom dan baris ke-2
plt.plot(t, y1, 'b-', t3, y3, 'ys') # dua kurva sekaligus

# persiapkan dekorasi grafik kedua dan tampilkan kedua grafik


plt.xlabel('waktu (t)')
plt.ylabel('variabel gayut (y)')
plt.legend(['t^2 * exp(-t^2)', 't^4 * exp(-t^2)'])
plt.axis([0, 4, -0.2, 0.6])
plt.show()

# simpan kedua grafik ke dalam berkas


gmbr.savefig('gambarKurva_5.png')
gmbr.savefig('gambarKurva_5.pdf')

http://localhost:8888/nbconvert/html/Academics/Pemrograman%20Komputer/Modul-06/Slide-06.ipynb?download=false Page 20 of 27
Slide-06 5/12/22, 11:10

Bantuan Penggunaan Matplotlib


Ktk menggunakan pustaka Matplotlib, bantuan dpt dieroleh

dgn memanggil perintah help(plt.plot) pd sel Jupyter Notebook


dgn mendatangi situs https://matplotlib.org/stable/contents.html

In [ ]: import matplotlib.pyplot as plt


help(plt.plot)

Kesulitan Penggambaran
Beberapa fungsi matematika ternyata sulit utk digambarkan, termasuk

fungsi Heaviside (mirip dgn fungsi undak satuan)


fungsi topi atau hat function

http://localhost:8888/nbconvert/html/Academics/Pemrograman%20Komputer/Modul-06/Slide-06.ipynb?download=false Page 21 of 27
Slide-06 5/12/22, 11:10

In [17]: # fungsiHeaviside_1.py: Program yang coba menggambarkan fungsi


# Heaviside dengan titik yang sedikit.
# sumber: A Primer on Scientific Programming with Python, hal. 257

# sertakan beberapa pustaka yang diperlukan


import numpy as np
import matplotlib.pyplot as plt

# definisikan fungsi yang akan digambarkan kurvanya


def Hv(x):
if x < 0:
h = 0
else:
h = 1
return h

# tetapkan titik-titik variabel independen dan dependen


n = 9
x = np.linspace(-10, 10, n)
# y = Hv(x)
y = np.zeros(n) # penggunaan 'vectorization' di sini ...
for i in range(n): # menimbulkan pesan kesalahan
y[i] = Hv(x[i])

# gambarkan fungsi Heaviside dan tampilkan


plt.plot(x, y, '-b')
plt.title('Fungsi Heaviside - versi 1')
plt.xlabel('x')
plt.ylabel('y')
plt.grid()
plt.axis([x[0], x[-1], -0.1, 1.1])
plt.show()

http://localhost:8888/nbconvert/html/Academics/Pemrograman%20Komputer/Modul-06/Slide-06.ipynb?download=false Page 22 of 27
Slide-06 5/12/22, 11:10

In [18]: # fungsiHeaviside_2.py: Program yang coba menggambarkan fungsi


# Heaviside dengan titik yang banyak.
# sumber: A Primer on Scientific Programming with Python, hal. 257

# sertakan beberapa pustaka yang diperlukan


import numpy as np
import matplotlib.pyplot as plt

# definisikan fungsi yang akan digambarkan kurvanya


def Hv(x):
if x < 0:
h = 0
else:
h = 1
return h

# tetapkan titik-titik variabel independen dan dependen


n = 101
x = np.linspace(-10, 10, n)
y = np.zeros(n)
for i in range(n):
y[i] = Hv(x[i])

# gambarkan fungsi Heaviside dan tampilkan


plt.plot(x, y, '-b')
plt.title('Fungsi Heaviside - versi 2')
plt.xlabel('x')
plt.ylabel('y')
plt.grid()
plt.axis([x[0], x[-1], -0.1, 1.1])
plt.show()

http://localhost:8888/nbconvert/html/Academics/Pemrograman%20Komputer/Modul-06/Slide-06.ipynb?download=false Page 23 of 27
Slide-06 5/12/22, 11:10

In [19]: # fungsiHeaviside_3.py: Program yang coba menggambarkan fungsi


# Heaviside dengan garis potong-demi-potong.
# sumber: A Primer on Scientific Programming with Python, hal. 257

# sertakan beberapa pustaka yang diperlukan


import numpy as np
import matplotlib.pyplot as plt

# tetapkan titik-titik variabel independen dan dependen


x = np.array([-10, 0, 0, 10]) # koordinat dari 4 potong ...
y = np.array([0, 0, 1, 1]) # garis potong-demi-potong

# gambarkan fungsi Heaviside dan tampilkan


plt.plot(x, y, '-b')
plt.title('Fungsi Heaviside - versi 3')
plt.xlabel('x')
plt.ylabel('y')
plt.grid()
plt.axis([x[0], x[-1], -0.1, 1.1])
plt.show()

http://localhost:8888/nbconvert/html/Academics/Pemrograman%20Komputer/Modul-06/Slide-06.ipynb?download=false Page 24 of 27
Slide-06 5/12/22, 11:10

In [20]: # fungsiHeaviside_4.py: Program yang coba menggambarkan fungsi


# Heaviside tanpa garis tegak pada x = 0.
# sumber: A Primer on Scientific Programming with Python, hal. 257

# sertakan beberapa pustaka yang diperlukan


import numpy as np
import matplotlib.pyplot as plt

# tetapkan titik-titik dari dua potong garis datar


x1 = np.array([-10, 0]) # koordinat dari ...
y1 = np.array([0, 0]) # garis pertama
x2 = np.array([0, 10]) # koordinat dari ...
y2 = np.array([1, 1]) # garis kedua

# gambarkan fungsi Heaviside dan tampilkan


plt.plot(x1, y1, '-b', x2, y2, '-b')
plt.title('Fungsi Heaviside - versi 4')
plt.xlabel('x')
plt.ylabel('y')
plt.grid()
plt.axis([x[0], x[-1], -0.1, 1.1])
plt.show()

http://localhost:8888/nbconvert/html/Academics/Pemrograman%20Komputer/Modul-06/Slide-06.ipynb?download=false Page 25 of 27
Slide-06 5/12/22, 11:10

In [21]: # fungsiTopi_1.py: Program yang coba menggambarkan fungsi


# Topi (hat function) dengan menggunakan rumus
# matematika yang terkait dan cacah titik sedikit.
# sumber: A Primer on Scientific Programming with Python, hal. 258

# sertakan beberapa pustaka yang diperlukan


import numpy as np
import matplotlib.pyplot as plt

# definisikan fungsi yang akan digambarkan kurvanya


def N(x):
if x < 0:
return 0.0
elif 0 <= x < 1:
return x
elif 1 <= x < 2:
return 2 - x
elif x >= 2:
return 0.0

# tetapkan titik-titik variabel independen dan dependen


n = 10
x = np.linspace(-2, 4, n)
y = np.zeros(n)
for i in range(n):
y[i] = N(x[i])

# gambarkan fungsi topi dan tampilkan


plt.plot(x, y, '-b')
plt.title('Fungsi Topi - versi 1')
plt.xlabel('x')
plt.ylabel('y')
plt.grid()
plt.axis([x[0], x[-1], -0.1, 1.1])
plt.show()

http://localhost:8888/nbconvert/html/Academics/Pemrograman%20Komputer/Modul-06/Slide-06.ipynb?download=false Page 26 of 27
Slide-06 5/12/22, 11:10

In [22]: # fungsiTopi_2.py: Program yang coba menggambarkan fungsi


# Topi (hat function) dengan menggunakan rumus
# matematika yang terkait dan cacah titik banyak.
# sumber: A Primer on Scientific Programming with Python, hal. 258

# sertakan beberapa pustaka yang diperlukan


import numpy as np
import matplotlib.pyplot as plt

# definisikan fungsi yang akan digambarkan kurvanya


def N(x):
if x < 0:
return 0.0
elif 0 <= x < 1:
return x
elif 1 <= x < 2:
return 2 - x
elif x >= 2:
return 0.0

# tetapkan titik-titik variabel independen dan dependen


n = 100
x = np.linspace(-2, 4, n)
y = np.zeros(n)
for i in range(n):
y[i] = N(x[i])

# gambarkan fungsi topi dan tampilkan


plt.plot(x, y, '-b')
plt.title('Fungsi Topi - versi 2')
plt.xlabel('x')
plt.ylabel('y')
plt.grid()
plt.axis([x[0], x[-1], -0.1, 1.1])
plt.show()

http://localhost:8888/nbconvert/html/Academics/Pemrograman%20Komputer/Modul-06/Slide-06.ipynb?download=false Page 27 of 27

Anda mungkin juga menyukai