Anda di halaman 1dari 20

LAPORAN PEMROGRAMAN KOMPUTER

PROYEK TOPIK KALKULUS

Anggota Grup 1:
Alfonsa Maria Putri Kinasih (6162001064)
Muhammad Ali Ma’ruf (6162001087)
Karel Dwinugroho Bowosebua (6162001184)

PROGRAM STUDI MATEMATIKA


FAKULTAS TEKNOLOGI INFORMASI DAN SAINS
UNIVERSITAS KATOLIK PARAHYANGAN
BANDUNG
2021
DAFTAR ISI

BAB I PENDAHULUAN 3

BAB II HASIL DAN PEMBAHASAN 4


2.1 PEMBAHASAN 4
2.2 ALGORITMA 7
2.3 KODE PROGRAM 9
2.4 HASIL PROGRAM 17
2.5 PENJELASAN SOAL 2 & SOAL 3 19

BAB III KESIMPULAN 20

2
BAB I
PENDAHULUAN

Pada laporan ini kami diminta untuk menyelesaikan Proyek Topik Kalkulus.
Deskripsi dari soal yang diberikan adalah sebagai berikut. Misal 𝑄 merupakan titik potong di
2 2
kuadran pertama dari lingkaran 𝐶1 dengan persamaan (𝑥 − 1) + 𝑦 = 1 dan lingkaran 𝐶2
2 2 2
dengan persamaan 𝑥 + 𝑦 = 𝑟 . Garis 𝑙 dilalui titik 𝑃(0, 𝑟) dan titik 𝑄. Titik 𝑅 merupakan
perpotongan dari garis 𝑙 dengan sumbu-x. Pertama, kami diminta untuk membuat animasi
+
dari dua buah lingkaran dan sebuah garis lurus dengan nilai r menuju 0 , kemudian kami
diminta untuk menduga koordinat titik 𝑅 berdasarkan animasi yang telah dibuat apabila
+
𝑟 → 0 serta membandingkan hasil dugaan tersebut dengan hasil titik 𝑅 secara analitik.

Laporan ini terdiri dari penjelasan langkah awal yang kami lakukan sebelum membuat
program, yaitu dengan mencari titik potong dari kedua buah lingkaran dan mencari sebuah
persamaan yang akan digunakan untuk mencari titik 𝑅. Terdapat pula flowchart dari
algoritma atau alur program. Kami menjelaskan setiap kode program beserta hasil dari
program yang dibuat serta menganalisa dugaan yang dilakukan untuk menjawab soal nomor
2. Untuk membuktikan dugaan sebelumnya, kami melakukan pembuktian dengan mencari
titik 𝑅 secara analitik.

Pembuatan laporan ini ditujukan untuk menjelaskan dengan baik pertanyaan dan
permasalahan yang diberikan pada topik Proyek Kalkulus, yaitu membuat animasi yang
terdiri dari dua lingkaran dan satu garis serta bertujuan untuk memenuhi penilaian proyek
mata kuliah Pemrograman Komputer sebagai salah satu nilai komponen Ujian Akhir
Semester Genap 2020/2021.

3
BAB II
HASIL DAN PEMBAHASAN

2.1 PEMBAHASAN

Langkah pertama dalam menyelesaikan permasalahan ini adalah untuk mencari


terlebih dahulu koordinat dari titik 𝑄. Untuk mencari koordinat titik 𝑄, dapat dilakukan
eliminasi dan substitusi dari kedua persamaan lingkaran tersebut. Pertama, tinjau persamaan
lingkaran 𝐶1:

(1)

Selanjutnya, dapat dilakukan eliminasi dari persamaan (1) dan persamaan lingkaran
𝐶2:

(1)

2
𝑟
Diperoleh absis dari titik 𝑄 adalah 2
. Selanjutnya, untuk menghitung ordinat dari
2
𝑟
titik 𝑄, lakukan substitusi 𝑥 = 2
ke persamaan lingkaran 𝐶2:

4
(2)

Dari persamaan (2) di atas, diperoleh bahwa terdapat dua nilai untuk ordinat dari titik
potong lingkaran 𝐶1 dengan lingkaran 𝐶2. Namun, oleh karena soal mendeskripsikan titik 𝑄

sebagai titik potong di kuadran pertama dari lingkaran 𝐶1 dengan lingkaran 𝐶2, nilai 𝑦 yang
2
𝑟 4−𝑟
digunakan hanya yang positif saja, yakni 𝑦 = 2
. Jadi, diperoleh koordinat titik 𝑄
2 2
𝑟 𝑟 4−𝑟
adalah ( 2
, 2
), dengan 𝑟 adalah jari-jari lingkaran 𝐶2.

Pada program ini, library yang digunakan untuk membuat garis pada grafik adalah
matplotlib dan perintah yang digunakan adalah lines.Line2D. Perintah ini hanya dapat
menghubungkan suatu titik dengan suatu titik lainnya. Namun, oleh karena soal meminta agar
salah satu ujung garis yang dibentuk berada pada titik 𝑃(0, 𝑟) dan ujung yang satu lagi berada
2 2
𝑟 𝑟 4−𝑟
pada titik 𝑅, garis yang dibentuk tidak dapat menggunakan 𝑄( 2
, 2
) sebagai salah satu

ujungnya. Dengan demikian, titik yang digunakan pada ujung garis yang berada pada
sumbu-x merupakan titik 𝑅, atau perpotongan dari garis 𝑙 dengan sumbu-x. Dari soal
diketahui bahwa titik 𝑅 berada pada sumbu-x, sehingga dapat dimisalkan koordinatnya
adalah (𝑎, 0) dengan 𝑎 adalah absis dari titik 𝑅. Jadi, harus dicari terlebih dahulu persamaan
dari nilai 𝑎 tersebut.

Setelah mendapatkan koordinat titik 𝑄, selanjutnya persamaan garis 𝑙 dapat dicari


2 2
𝑟 𝑟 4−𝑟
dengan diketahuinya dua titik pada garis 𝑙, yakni 𝑃(0, 𝑟) dan 𝑄( 2
, 2
). Persamaan garis

yang digunakan adalah 𝑦 = 𝑚𝑥 + 𝑐 dengan 𝑚 adalah gradien garis 𝑙 dan 𝑐 adalah konstanta
yang merupakan ordinat dari titik potong garis 𝑙 dengan sumbu-y. Diketahui dari titik 𝑃(0, 𝑟)
bahwa nilai 𝑐 adalah 𝑟, atau jari-jari lingkaran 𝐶2. Langkah berikutnya adalah untuk mencari

5
𝑚 atau gradien dari garis 𝑙. Persamaan untuk mencari gradien garis 𝑙 saat diketahui dua titik
yang berada pada garis tersebut adalah

(3)

dengan 𝑥1 dan 𝑦1 secara berurutan adalah absis dan ordinat dari titik pertama serta 𝑥2 dan 𝑦2

secara berurutan adalah absis dan ordinat dari titik kedua. Dengan demikian, diperoleh
persamaan gradien dari garis 𝑙 sebagai berikut:

Dengan menggunakan persamaan garis 𝑦 = 𝑚𝑥 + 𝑐, diperoleh persamaan garis 𝑙


adalah sebagai berikut:

(4)

Selanjutnya, persamaan garis 𝑙 ini akan digunakan untuk mencari nilai 𝑎 atau absis
dari titik 𝑅. Diketahui bahwa ordinat dari titik 𝑅 adalah 0, sehingga dari persamaan (4) dapat
dibuat persamaan baru untuk 𝑎 dengan 𝑥 = 𝑎 dan 𝑦 = 0:

6
(5)

Setelah diperoleh persamaan untuk absis dari titik 𝑅, pembuatan garis kini dapat
dilakukan menggunakan lines.Line2D, dengan kedua koordinat yang digunakan adalah
2
−𝑟
𝑃(0, 𝑟) dan 𝑅( 2
, 0). Persamaan (5) di atas akan digunakan pada program pada
4−𝑟 −2

variabel point_x_int.

2.2 ALGORITMA

Program ini akan menghasilkan animasi yang terdiri dari dua lingkaran dan satu garis.
Pertama-tama, dibuat terlebih dahulu suatu grafik kosong yang menggunakan sistem
koordinat Kartesius. Langkah selanjutnya sebelum berlanjut ke proses pembuatan kedua
lingkaran dan garis adalah untuk memberi judul pada grafik yang berisi nama dan NPM dari
ketiga anggota kelompok. Proses selanjutnya adalah iterasi pembuatan kedua lingkaran dan
garis grafik untuk setiap nilai 𝑟 yang diambil, yakni dari 0,1 hingga 1,9 satuan. Pertama, cari
terlebih dahulu titik potong kedua lingkaran, seperti yang sudah ditunjukkan pada penjelasan
di atas. Setelah mencari titik 𝑄 (titik potong kedua lingkaran), maka dapat diperoleh
persamaan garis yang kemudian akan digunakan untuk mencari titik 𝑅. Oleh karena titik 𝑅
selalu berada pada sumbu-x, yang dicari cukup absis dari titik 𝑅 saja.

Langkah selanjutnya adalah membuat grafik kedua lingkaran dan garis yang
menghubungkan dua titik yaitu titik 𝑃 dan titik R. Program akan diiterasikan dan akan
menghitung nilai absis titik 𝑅 yang baru untuk setiap nilai 𝑟 yang baru dengan menggunakan
persamaan (5) dalam setiap iterasinya. Pembuatan grafik pada iterasi ini akan menghasilkan
grafik yang baru dan tidak akan menimpa grafik yang sebelumnya telah dibuat. Sebelum
program kembali mengulang pada iterasi selanjutnya, langkah terakhir yang akan dilakukan
pada akhir setiap iterasi adalah pemotretan grafik yang telah diciptakan. Iterasi ini akan
diulang sebanyak sembilan belas kali dan akibatnya akan ada sembilan belas grafik berbeda
yang dihasilkan. Langkah terakhir adalah proses penganimasian grafik dan penyimpanan
hasil animasi ke dalam file dengan format .gif.

7
Gambar 2.2.1: Algoritma program pembuatan animasi lingkaran dan garis

8
2.3 KODE PROGRAM

Langkah pertama dalam pembuatan program ini adalah untuk menginstal terlebih
dahulu semua library yang akan digunakan. Pada program ini, hanya ada dua library yang
digunakan yakni matplotlib dan celluloid. Penginstalan kedua library ini dapat dilakukan
dengan cara membuka command prompt dan mengetikkan “pip install [nama library].”
Perintah instalasi ini dapat dilihat pada Gambar 2.3.1. Khusus untuk library celluloid, file
ataupun folder yang dihasilkan dari menginstal library celluloid harus disimpan di dalam
direktori sama dengan direktori pengerjaan program.

pip install matplotlib


pip install celluloid

Gambar 2.3.1: Perintah untuk menginstal library yang dibutuhkan pada command prompt

Sebelum menjalankan program, pengguna harus menginstal terlebih dahulu


ImageMagick dengan versi ImageMagick-7.0.11-14-Q16-HDRI-x64-dll.exe pada laman
https://imagemagick.org/script/download.php agar dapat menyimpan hasil animasi yang telah
dibuat ke dalam file dalam format .gif. Tanpa proses penginstalan ini, pengguna tidak dapat
menyimpan hasil animasi ke dalam file dalam format .gif.

Langkah selanjutnya, kami perlu memanggil beberapa library dan modul, yaitu
library atau modul untuk memvisualisasikan data, membantu proses perhitungan matematis,
dan membuat animasi. Pada Gambar 2.3.2, kami memanggil library matplotlib.pyplot,
matplotlib.lines, math, dan Camera dengan menuliskan kode program import
matplotlib.pyplot as plt untuk menyajikan gambar dan melakukan perubahan
pada gambar misalnya, ukuran tabel dan ukuran huruf, untuk menggunakannya kami perlu
menuliskan plt.<function>. Berikutnya kami menuliskan kode program import
matplotlib.lines as lines untuk membuat garis pada grafik, untuk
menggunakannya kami perlu menuliskan lines.<function>. Berikutnya kami
menuliskan kode program import math untuk memanggil semua fungsi yang ada pada
modul math seperti pi (π), logaritma, dan akar (√). Berikutnya kami menuliskan kode
program from celluloid import Camera untuk memotret dan membuat animasi.

import matplotlib.pyplot as plt


import matplotlib.lines as lines
import math

9
from celluloid import Camera

Gambar 2.3.2: Pemanggilan semua library untuk digunakan pada program

Selanjutnya kami ingin membuat figure yang memiliki sebuah axes dengan
menggunakan fungsi plt.subplots() oleh karena itu, kami memanggil fungsi plt.subplots()
yang akan disimpan pada variabel fig untuk menampung objek figure dan ax untuk
menampung objek axes, berikut kode programnya fig, ax = plt.subplots().
Selanjutnya pada Gambar 2.3.3, kami mendefinisikan variabel camera untuk menampung
gambar dari grafik yang kami buat dengan camera = Camera(fig).

# Pembuatan grafik kosong


fig, ax = plt.subplots()

# Pemasangan modul Camera dari library celluloid


camera = Camera(fig)

Gambar 2.3.3: Pembuatan grafik kosong dan pemasangan modul Camera dari library
celluloid

Selanjutnya pada Gambar 2.3.4 merupakan kode program untuk melakukan


pengaturan pada grafik. Pertama-tama kami mendefinisikan sebuah axis dengan panjang
sumbu-x dari -3 sampai 5 dan panjang sumbu-y dari -3 sampai 3, kode programnya xmin,
xmax, ymin, ymax = -3, 5, -3, 3 untuk mendefinisikan panjang sumbu-x dan
sumbu-y, yang mana xmin bernilai -3, xmax bernilai 5, ymin bernilai -3, dan ymax
bernilai 3. Untuk membuat axis kami perlu memanggil fungsi ax.set() yang terdiri dari
beberapa parameter, yaitu parameter untuk mengatur panjang sumbu x, sumbu y, dan skala
pada grafik dengan kode program ax.set(xlim=(xmin, xmax), ylim=(ymin,
ymax), aspect=‘equal’) parameter xlim untuk mengatur panjang sumbu-x, ylim
untuk mengatur sumbu-y, dan aspect=‘equals’ untuk mengatur skala dengan
perbandingan yang sama.

Selanjutnya kami ingin menggeser border bagian bawah ke titik nol terhadap sumbu-y
dan border bagian kiri ke titik nol terhadap sumbu-x oleh karena itu, kami memanggil fungsi
ax.spines() untuk mengatur border yang ingin diatur dan properties .set_position
untuk mengatur posisi border. Kode programnya
ax.spines[‘bottom’].set_position(‘zero’) akan memilih border bagian

10
bawah untuk digeser ke titik nol terhadap sumbu-y dan kode program
ax.spines[‘left’].set_position(‘zero’) akan memilih border bagian kiri
untuk digeser ke titik nol terhadap sumbu-x. Selanjutnya kami ingin membuat sistem
koordinat Kartesius pada pada grafik oleh karena itu, kami perlu menghilangkan border
bagian atas dan kanan dengan properties .set_visible(False). Kode programnya
ax.spines[‘top’].set_visible(‘False’) akan memilih border bagian atas
untuk dihilangkan dan kode program ax.spines[‘top’].set_visible(‘False’)
akan memilih border bagian kanan untuk dihilangkan.

Berikutnya kami ingin menambahkan label pada ujung sumbu-x positif dan pada
ujung sumbu-y positif dengan memanggil fungsi ax.set_xlabel() dan
ax.set_ylabel() yang terdiri dari beberapa parameter. Kode programnya
ax.set_xlabel(‘x’, size=14, labelpad=-24, x=1.03) dengan parameter
pertama merupakan nama labelnya yaitu, x dengan tipe data string, parameter kedua
size=14 untuk ukuran huruf yang digunakan pada label, parameter ketiga
labelpad=-24, dan parameter keempat x=1.03 untuk menentukan posisi label
diletakkan pada ujung sumbu-x positif dan kode programnya ax.set_ylabel(‘y’,
size=14, labelpad=-21, x=1.03) dengan parameter pertama merupakan nama
labelnya yaitu, y dengan tipe data string, parameter kedua size=14 untuk ukuran huruf
yang digunakan pada label, parameter ketiga labelpad=-21 serta parameter keempat
y=1.02 untuk menentukan posisi label diletakkan pada ujung sumbu-y positif dan
parameter kelima yaitu rotation=0 agar label pada sumbu-y dalam posisi straight.

Berikutnya kami ingin membuat garis kisi-kisi pada grafik oleh karena itu, kami
menggunakan fungsi ax.grid() yang terdiri dari beberapa parameter, kode programnya
ax.grid(which=‘both’, color=‘grey’, linewidth=1,
linestyle=‘-’, alpha=0.2)” dengan parameter pertama which=‘both’ untuk
menentukan garis kisi-kisi yang dapat melakukan perubahan, parameter kedua
color=‘grey’ untuk menentukan warna abu-abu pada garis kisi-kisi, parameter ketiga
linewidth=1 untuk mengatur ketebalan garis kisi-kisi dengan nilai 1 atau default,
parameter keempat linestyle=‘-’ untuk membentuk garis kisi-kisi, dan parameter
terakhir alpha=0.2 agar garis kisi-kisi menjadi lebih transparan dengan persentase
transparansi adalah 20%.

11
# Pengaturan panjang sumbu x dan y
xmin, xmax, ymin, ymax = -3, 5, -3, 3

# Pengaturan skala serupa untuk kedua sumbu


ax.set(xlim=(xmin, xmax), ylim=(ymin, ymax), aspect='equal')

# Pengaturan spine kiri dan spine bawah sebagai sumbu x dan y


ax.spines['bottom'].set_position('zero')
ax.spines['left'].set_position('zero')

# Penghapusan spine atas dan spine kanan


ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)

# Pembuatan label 'x' dan 'y' di ujung sumbu x dan y


ax.set_xlabel('x', size=14, labelpad=-24, x=1.03)
ax.set_ylabel('y', size=14, labelpad=-21, y=1.02, rotation=0)

# Pembuatan garis kisi-kisi


ax.grid(which='both', color='grey', linewidth=1, linestyle='-', alpha=0.2)

Gambar 2.3.4: Pengaturan grafik

Pada bagian selanjutnya adalah kode program untuk memasukkan nama-nama dan
NPM dari setiap anggota kelompok. Untuk melakukan ini, kami mengatur penamaan ini
sebagai judul dari grafik yang telah dibuat. Perintah untuk mengatur judul dari grafik adalah
plt.title, seperti terlihat pada Gambar 2.3.5. Nama-nama dan NPM dari setiap anggota
kelompok ini kemudian diatur agar berada di sebelah kanan menggunakan loc=’right’.

# Pengaturan judul grafik


plt.title("Alfonsa Maria Putri Kinasih 6162001064"
"\nMuhammad Ali Ma'ruf 6162001087"
"\nKarel Dwinugroho Bowosebua 6162001184",
loc='right', fontsize=10)

Gambar 2.3.5: Pengaturan judul grafik

Pada soal, kami diminta untuk menunjukan hasil animasi untuk nilai 𝑟 yang mengecil
+
hingga menuju 0 . Pertama-tama, kami mendefinisikan variabel y dengan tipe data list,
kode programnya y = [x/10 for x in range(19,0,-1)] . Maksud dari kode
program tersebut, kami ingin mengambil nilai x mulai dari 19 hingga 1 dengan selisih 1 oleh
karena itu, kami menggunakan looping dengan start=19, stop=0, dan step=˗1. Nilai untuk
start, step, dan stop harus berupa bilangan bulat, namun kami hanya ingin mengambil nilai x

12
dari 1,9 hingga 0,1 dengan selisih 0,1. Oleh karena itu, kami menuliskan kode x/10 di awal,
yang mana setiap dilakukan proses looping nilainya akan dibagi 10. Contohnya, pada looping
pertama nilai yang didapatkan pada variabel x adalah 19 setelah itu nilai pada variabel x akan
dibagi 10, sehingga didapatkan nilai berupa 1,9. Semua nilai yang kami dapatkan akan
disimpan dalam tipe data list sehingga jumlah elemen pada list sebanyak sembilan belas.

# Pembuatan daftar jari-jari dalam bentuk list


y = [x/10 for x in range(19,0,-1)]

Gambar 2.3.6: Pembuatan daftar jari-jari dalam bentuk list

Selanjutnya pada Gambar 2.3.7, kami menuliskan kode program for i in


range(len(y)): karena kami ingin melakukan looping sebanyak nilai 𝑟 yang kami
gunakan dengan kata lain, kami melakukan looping sebanyak elemen pada variabel y. Alasan
melakukan looping karena kami ingin membuat grafik sebanyak nilai 𝑟 yang kami gunakan
+
hingga menuju 0 .

for i in range(len(y)):

Gambar 2.3.7: Iterasi pembuatan grafik menggunakan for loop

Kode program selanjutnya pada Gambar 2.3.8 – Gambar 2.3.12 berada di dalam
iterasi for loop. Langkah pertama yang diambil dalam setiap iterasinya adalah untuk
mengambil nilai jari-jari dari list yang sudah dibuat pada variabel y. Oleh karena variabel i
pada loop ini dimulai dari 0, maka dengan melakukan perintah r = y[i] pada Gambar
2.3.8 akan memunculkan elemen dengan indeks 0 pada list y tersebut, yakni 1.9. Jadi, pada
iterasi pertama nilai 𝑟 yang digunakan adalah 1.9, pada iterasi kedua nilai 𝑟 yang digunakan
adalah 1.8, dan seterusnya hingga nilai 𝑟 adalah 0,1 pada iterasi terakhir.

# Pengaturan jari-jari lingkaran pertama


r = y[i]

Gambar 2.3.8: Pengaturan jari-jari lingkaran pertama

Oleh karena program yang digunakan untuk membuat garis 𝑙 hanya dapat
menghubungkan dua titik, maka kedua titik yang digunakan adalah 𝑃(0, 𝑟) dan
2
−𝑟
𝑅( 2
, 0). Untuk mencari titik 𝑅, harus dihitung terlebih dahulu absis dari titik 𝑅 untuk
4−𝑟 −2

13
setiap nilai 𝑟 yang baru menggunakan persamaan (5). Perhitungan ini dapat dilihat pada
Gambar 2.3.9 di bawah. Setelah perhitungan dilakukan, masing-masing titik 𝑃 dan 𝑅
kemudian harus didefinisikan ke dalam suatu variabel, yakni point1 untuk titik 𝑃 dan
point2 untuk titik 𝑅. Namun, oleh karena perintah lines.Line2D yang digunakan untuk
membuat garis tidak bisa membuat plot garis berdasarkan pasangan absis dan ordinat, maka
pasangan absis dan ordinat tersebut harus dipisah sehingga pada variabel x_values
mengandung absis dari kedua titik, sementara pada variabel y_values mengandung ordinat
dari kedua titik.

# Perhitungan absis dari titik R


point_x_int = (-r**2) / (math.sqrt(4-r**2)-2)

# Pendefinisian kedua koordinat garis l


point1 = [0,r]
point2 = [point_x_int,0]

# Pemisahan kedua koordinat garis l berdasarkan absis dan ordinat


x_values = [point1[0], point2[0]]
y_values = [point1[1], point2[1]]

Gambar 2.3.9: Perhitungan absis titik 𝑅 dan pemisahan absis dan ordinat kedua titik

Proses selanjutnya pada Gambar 2.3.10 adalah pembuatan lingkaran menggunakan


perintah plt.Circle() yang dapat membuat grafik lingkaran menggunakan titik
pusatnya dan jari-jarinya. Perintah tambahan yang digunakan pada plt.Circle() adalah
fill=False yang akan membuat tampilan dari lingkaran tersebut menjadi outline, serta
color untuk mengatur warna dari lingkaran tersebut. Pembuatan garis 𝑙 kemudian dilakukan
dengan menggunakan perintah lines.Line2D dari library matplotlib. Perintah
marker=‘o’ berfungsi untuk menandakan kedua ujung garis dengan titik tebal, dan
color=‘red’ untuk mengatur warna garis menjadi merah. Kedua lingkaran dan garis
tersebut kemudian ditambahkan ke dalam grafik menggunakan ax.add_artist().

# Pembuatan kedua lingkaran


circle1 = plt.Circle((1, 0), 1, fill=False, color='blue')
circle2 = plt.Circle((0, 0), r, fill=False, color='green')

# Pembuatan garis l
line = lines.Line2D(x_values, y_values, marker='o', color='red')

# Menambahkan kedua lingkaran dan garis l ke dalam grafik

14
ax.add_artist(circle1)
ax.add_artist(circle2)
ax.add_artist(line)

Gambar 2.3.10: Pembuatan dan penambahan kedua lingkaran dan garis 𝑙 ke dalam grafik

Pelabelan kedua lingkaran guna mengidentifikasi lingkaran sesuai dengan


persamaannya dilakukan dengan menggunakan legend pada perintah plt.legend().
Dengan legend ini, pengguna akan dipermudah dalam membedakan kedua lingkaran beserta
persamaannya dengan cara memberikan persamaan lingkaran yang sesuai dengan lingkaran
2 2
dengan warna di sebelahnya. Untuk lingkaran 𝐶1 dengan persamaan (𝑥 − 1) + 𝑦 = 1
2 2 2
ditandai dengan warna biru, sementara lingkaran 𝐶2 dengan persamaan 𝑥 + 𝑦 = 𝑟 ditandai

dengan warna hijau. Perintah loc=’upper right’ digunakan untuk menempatkan


legend dari grafik tersebut pada bagian atas kanan grafik. Pengaturan legend grafik ini dapat
dilihat pada Gambar 2.3.11 di bawah.

# Pengaturan legend grafik


plt.legend((circle1,circle2),('Lingkaran (x-1)\u00b2+y\u00b2=1',
'Lingkaran x\u00b2+y\u00b2=r\u00b2'),
loc='upper right')

Gambar 2.3.11: Pengaturan legend grafik

Proses terakhir sebelum berlanjut ke iterasi selanjutnya ataupun sebelum keluar dari
iterasi adalah pemotretan grafik untuk kemudian dianimasikan. Proses pemotretan yang
dimaksud adalah penggunaan perintah camera.snap() dari library celluloid yang
berfungsi seperti kamera dengan sifatnya yang dapat memotret sesuatu kemudian
menyimpannya. Pada saat menjalankan perintah ini, camera.snap() akan “memotret”
dan menyimpan gambar dari grafik yang telah dibuat pada iterasi yang sedang dijalankan.
Pada akhirnya, camera.snap() ini akan menyimpan sejumlah sembilan belas gambar dari
semua grafik yang telah dibuat selama sembilan belas iterasi. Program pemotretan ini dapat
dilihat pada Gambar 2.3.12.

# Pemotretan grafik untuk dianimasikan


camera.snap()

Gambar 2.3.12: Pemotretan grafik untuk dianimasikan

Setelah sembilan belas iterasi for loop di atas, program akan keluar dari loop tersebut

15
dan berlanjut ke baris selanjutnya pada Gambar 2.3.13 untuk proses animasi grafik. Dengan
menggunakan library celluloid, program dapat dianimasikan dengan menggunakan perintah
camera.animate(). Pada proses animasi ini, semua sembilan belas hasil “pemotretan”
grafik dari camera.snap() akan digabung dan ditampilkan sebagai frame yang kemudian
dianimasikan. Jarak waktu antara setiap frame diatur menjadi 500 ms dengan perintah
interval = 500 dan animasi diatur agar dapat mengulang tanpa jeda menggunakan
perintah repeat = True dan repeat_delay = 0. Hasil animasi ini kemudian
disimpan ke dalam variabel animation untuk proses penyimpanan pada kode program
selanjutnya.

# Proses animasi menggunakan Celluloid


animation = camera.animate(interval = 500, repeat = True, repeat_delay = 0)

Gambar 2.3.13: Proses animasi menggunakan Celluloid

Selanjutnya, pada bagian terakhir program ini adalah proses penyimpanan hasil
animasi ke dalam file dengan format .gif. Kode program untuk menyimpan hasil animasi ini
dapat dilihat pada Gambar 2.3.14. Penyimpanan animasi ini dapat dilakukan dengan
menggunakan perintah animation.save('Animasi Proyek Kalkulus - Grup
1.gif', writer = 'imagemagick') dengan 'Animasi Proyek Kalkulus -
Grup 1.gif' merupakan nama file animasi beserta formatnya pada akhir nama file
tersebut dan writer = ‘imagemagick’ merupakan suatu perangkat lunak yang
berfungsi untuk mengonversikan hasil animasi ke dalam format .gif. Setelah program berhasil
dijalankan, hasil animasi dengan format .gif ini akan muncul pada direktori folder
pengerjaan.

# Penyimpanan hasil animasi


animation.save('Animasi Proyek Kalkulus - Grup 1.gif', writer = 'imagemagick')

Gambar 2.3.14: Penyimpanan hasil animasi ke dalam file dengan format .gif

16
2.4 HASIL PROGRAM

Gambar 2.4.1: Animasi program dengan panjang jari-jari lingkaran hijau 1,9 sampai 1,0

17
Gambar 2.4.2: Animasi program dengan panjang jari-jari lingkaran hijau 0,9 sampai 0,1

18
2.5 PENJELASAN SOAL 2 & SOAL 3

+
Dilihat dari animasi yang telah dibuat, apabila 𝑟 → 0 dapat diduga bahwa koordinat
titik R akan mendekati titik (4, 0). Hal ini terjadi seiring dengan adanya perubahan jari-jari
2 2
pada lingkaran berwarna hijau, atau lingkaran 𝐶1 dengan persamaan (𝑥 − 1) + 𝑦 = 1.

Pada permasalahan ini diminta untuk mencari koordinat titik 𝑅 apabila 𝑟 → 0+.
Langkah yang dapat dilakukan untuk mencari koordinat titik 𝑅 secara analitik adalah dengan
menggunakan limit dari persamaan untuk absis dari 𝑅. Limit merupakan sebuah konsep dasar
kalkulus yang menyatakan bahwa suatu fungsi dikatakan “hampir” atau “mendekati” suatu
+
nilai tertentu. Berikut ini adalah perhitungan dari absis titik 𝑅 apabila 𝑟 → 0 .

+
Dari perhitungan di atas, didapatkan hasil limit saat 𝑟 → 0 adalah 4. Perhitungan ini hanya
menghasilkan suatu absis bagi titik 𝑅 dengan ordinat yang selalu sama, yaitu 0. Dengan ini,
diperoleh koordinat titik 𝑅(4, 0) maka, dugaan sebelumnya terhadap koordinat titik 𝑅
mendekati (4, 0) adalah benar.

19
BAB III
KESIMPULAN

Berdasarkan langkah pengerjaan program, hasil penyelesaian masalah yang berupa


animasi, dan analisis dari hasil perhitungan untuk memperoleh koordinat dari titik 𝑅, dapat
disimpulkan bahwa :

1. Dalam pembuatan program, diperlukan perhitungan untuk mencari persamaan garis 𝑙


pada persamaan (4) yang digunakan untuk mencari persamaan (5) yang merupakan
persamaan untuk absis dari titik 𝑅.

2. Program yang dibuat akan diiterasikan dan akan menghitung nilai absis titik 𝑅 untuk
setiap nilai 𝑟 yang baru dengan menggunakan persamaan (5) dalam setiap iterasinya.
Iterasi ini merupakan iterasi for loop.

3. Pada tahap akhir setiap iterasi akan dilakukan pemotretan grafik. Iterasi ini akan
diulang sebanyak sembilan belas kali dan menghasilkan sembilan belas grafik
berbeda. Proses pemotretan dalam program ini adalah penggunaan perintah
camera.snap() dari library celluloid.

4. Semua grafik yang telah disimpan akan dianimasikan dengan menggunakan perintah
camera.animate(). Pada proses animasi ini, hasil dari setiap “pemotretan” grafik
akan digabung dan ditampilkan sebagai sebuah frame yang kemudian dianimasikan.

5. Berdasarkan animasi yang dihasilkan oleh program yang dibuat, dapat diduga bahwa
koordinat titik R akan mendekati titik (4, 0). Dugaan tersebut dapat dibuktikan
+
dengan adanya perhitungan untuk mencari koordinat titik 𝑅 apabila 𝑟 → 0 dengan
+
menggunakan limit dari persamaan (5) saat 𝑟 → 0 .

Dengan demikian, dapat disimpulkan bahwa secara keseluruhan program berjalan


sesuai yang diharapkan dan dapat menjelaskan permasalahan dan pertanyaan yang
ditanyakan. Selain itu, hasil perhitungan analitik pun berhasil membuktikan bahwa animasi
yang dihasilkan oleh program sudah sesuai, yakni koordinat titik 𝑅 yang akan menuju (4, 0)
+
saat 𝑟 → 0 .

20

Anda mungkin juga menyukai