Metode Regula-Falsi dengan Python


Melanjutkan post yang kemarin tentang Metode Bagi Dua kali ini kita akan membahas metode Regula-Falsi. Untuk metode Regula-Falsi sendiri tidak hanya memperhitungkan a dan b (nilai tebakan) tapi juga nilai F(a) dan F(b) untuk rumus Regula-Falsi sendiri adalah


Untuk algoritma Regula-Falsi mirip dengan Bagi Dua hanya saja untuk nilai c menggunakan persam aan di atas.Regula-Falsi sendiri memiliki kecepatan konvergensi yang lebih cepat daripada Bagi Dua.Nmaun,kelemahannya adalah terkadang kita menemukan tiitk stagnan di mana nilai b-a selalu sama di tiap perulangan .

Maka,untuk mengatasi nya kita tidak akan menggunakan While di sini tapi kita akan menggunakan For saja untuk menentukan berapa perulangan yang kita inginkan

Misal kita akan mencari akar dari c² -12 = 0 dengan Regula-Falsi

untuk code dalam Python nya adalah sebagai berikut

a = 3
b = 4
def F(a):
    F = a**2-12
    return F
for x in range(20):
    c = b-((F(b)*(b-a))/(F(b)-F(a)))
    if  F(c)<0:
        a=c
    elif  F(c)>0:
         b=c
    else:
        print("Akar nya adalah", c)
        break
    print("Akar yang terdekat adalah",c)
Di sini kita akan memakai 20 iterasi saja



silahkan run (F5) untuk melihat hasilnya


di sini kita menemukan akar akhir adalah c = 3.4641016151377544 dan kita lihat kalau di perulangan akhir nilai akar selalu sama.Nah,inilah yang di sebut titik stagnan dan kalau kita lanjutkan kita tidak akan menemui akhir perulangan makanya saya sarankan pakai For saja dari pada While karena kalau pakai While program kita tidak akan pernah berhenti

Penjelasan :
range (20) adalah untuk menjangkau semua bilangan dari 0 sampai 20(20 tidak termasuk) jadi 0,1,2,...,19

contoh lain range :
range (3,8) maka bilangannya adalah 3,4,5,6,7 memakai awal 3, akhir 8 dan langkah 1
range(4,21,3) maka bilangannya adalah 4,7,10,13,16,19 memakai awal 4,akhir 21 san langkah 3

For adalah perulangan yang sudah ditentukan berapa banyak karena For menggunakan list sebagai perantara

Contoh :
a = (2,3,5,8)
for x in a:
print(x)

maka hasil run adalah
2
3
5
8

def untuk membuat method di python

Contoh :
def luass3 (alas,tinggi):
    Luas = (alas*tinggi)/2
    print(Luas)
luass3(7,8) maka hasilnya (7*8)/2 = 28

    
                     

Metode Bagi Dua (Bisection) Sederhana Dengan Python

intro metode bagi dua (postingan ini)

Metode Bagi Dua adalah salah satu metode numerik tertutup untuk menyelesaikan sistem persamaan non linier.Sistem persamaan non linier memang tidak bisa diselesaikan scr langsung untuk mendapatkan solusi eksak kecuali sistem persamaan kuadrat yang bisa diselesaikan dengan pemfaktoran maupun rumus ABC.

Untuk sistem persamaan non linier sendiri bisa diselesaikan dengan metode numerik (metode memperkirakan ) yang bisa dibagi menjadi 2 yaitu

Metode Tertutup,maksudnya di sini adalah kita harus punya 2 nilai awal yang mengurung solusi lalu kita lakukan perulangan terus-menerus sampai selisih dengan solusi sangat kecil sehingga bisa kita abaikan.Metode tertutup ini hampir selalu berhasil untuk menemukan solusi karena solusi sendiri dikurung oleh 2 nilai awal yang kita tentukan (selalu konvergen)

Contoh metode tertutup : Bagi Dua dan Regula-Falsi

Metode Terbuka, dalam metode ini kita tidak butuh kurungan metode ini lebih cepat untuk menemukan solusi dari pada metode tertutup namun terkadang nilai yang diberikan malah divergen (menjauhi solusi)

Contoh metode terbuka : Iterasi Titik Tetap, Newton Raphson, dan Secant

Kali ini saya akan membahas dulu metode bagi dua untuk yang lain mungkin saya bahas di lain post

Algoritma metode bagi dua cukup sederhana yaitu :

1.Tentukan 2 titik yang mengurung solusi misalnya a dan b
Catatan : a akan memberikan nilai negatif jika dimasukkan ke persamaan
               b akan memberikan nilai positif jika dimasukkan ke persamaan
2. akar/solusi untuk perulangan adalah (a+b)/2 misalkan adalah c
3. masukkan c ke persamaan non linier nya
4.Jika hasilnya kurang dari 0 maka ganti nilai a dengan c
5.Jika hasilnya lebih dari 0 maka ganti nilai b dengan c
6.Lakukan perulangan sebanyak yang kalian inginkan
Kita akan memakai Python saja supaya kita lebih mudah untuk menemukan solusi sedekat mungkin

misalnya kita akan mencari solusi dari c³ - 2c² + 5c -10 = 0

masukkan code ini di lembar kerja Python kalian

a = 2 # a dan b adalah nilai untuk mengurung solusi
b = 3
while b-a >=0.001:#perulangan terus dilakukan selama b-a lebih dari 0,001
    c = (a+b)/2 #nilai c untuk perulangan (solusi sementara)
    if c**3-2*c**2+5*c-10<0:
        a=c
    elif c**3-2*c**2+5*c-10>0:
        b=c
    else:
        print("Akar nya adalah", c)
        break
    print("Akar yang terdekat adalah",c)

code untuk metode bagi dua python


Silahkan run untuk mengetahui hasilnya

hasil run program

Di perulangan yang terakhir di dapat solusi c = 2.0009765625

atau supaya lebih detail kita bisa mengubah nilai 0.001 menjadi 0.0001 maka beginilah kalau di run

hasil run program 2

kita mendapatkan 2.00006103515625 sebagai solusi akhir


Penjelasan :
While adalah code untuk terus melakukan perulangan selama kondisi masih terpenuhi jika kondisi sudah tidak terpenuhi maka perulangan akan berhenti

Dalam program di atas,program akan terus berjalan jika b-a lebih dari 0.001

Break adalah untuk menghentikan perulangan For atau While jika kondisi tertentu sudah dipenuhi

Dalam program di atas bila b-a sama dengan 0 maka perulangan .akan berhenti

** untuk menyatakan pangkat di python
/ untuk menyatakan bagi di pyhon










Program Bilangan Prima Pada Rentang Tertentu Pada Python


Kali ini kita akan membuat program untuk menampilkan bilangan prima pada rentang tertentu menggunakan python.Kalau anda belum tahu, bilangan prima itu adalah bilangan yang pembaginya hanya 1 dan diri nya sendiri. 2 adalah bilangan prima karena pembaginya hanya 1 dan diri nya sendiri 2 sedangkan 4 bukan bilangan prima karena 4 = 2x 2

Untuk codingnya sendiri adalah seperti ini silahkan buka IDE Python kalian dan masukkan coding nya

Cara Penggunaan Python bisa anda lihat di SINI

a = 1# ini rentang awal bisa diganti
b = 100# ini rentang akhir bisa diganti angka nya juga
for num in range(a,b+1): #untuk menjangkau semua bilangan antara a dan b dengan variabel num
    if num > 1: #jika num lebih dari 1
        for i in range(2,num): #melakukan perulangan dengan variabel i nilai nya antara 2 dan num
            if (num % i == 0): #jika num habis dibagi i maka perulangan for di atas nya berhenti
                break
        else:
            print(num) #jika num tidak habis dibagi i pada semua perulangani maka cetak angka itu


Silahkan Run (F5) untuk mengetes programnya di sini di tampilkan bilangan prima antara 1 sampai 100





     

Tips dan Trik Bermain Hero Guinevere Mobile Legend


Hero Guinevere merupakan hero fighter mage pertama yang diperkenalkan di mobile legend.Hero ini memiliki speciality Charge/Burst.Melihat dari Speciality nya, hero ini sangat cocok untuk masuk keluar war dengan mudah dan bisa untuk ngeburst satu hero dengan cepat
Sebelum membahas lebih jauh tentang hero Guinevere kita akan melihat stats awal dari hero fighter mage ini terlebih dahulu


Durability nya tidak tinggi (rata-rata tapi kurang dari 5/10 kalau di lihat) jadi memang hero ini kurang bagus untuk menangani banyak hero dengan skill cc
Offense nya ini sangat tinggi kira-kira (8-8,5/10) ini offense nya.Menurut saya sih ini jelas karena basic attack guin + pasif juga sakit
Ability Effects ini rata-rata (kira-kira 5-5,5/10) skill-skill guin memang tidak terlalu memberikan damage yang tinggi ke musuh plus guin bukan hero yang harus bergantung pada skill untuk membunuh lawan
Difficulty nya termasuk menengah maksudnya hero ini tidak terlalu sulit untuk dikuasai

Kita lanjut dulu ke pembahasan skill nya si Guinevere ini

Super Magic (Pasif) - 
Poin pertama : Guinevere akan memberikan tambahan 25 % damage kepada musuh yang terkena knock up
Poin kedua : Damage ke unit lawan akan mengisi bar merah di bawah nya
Poin ketiga : kalau penuh bar merah di bawah,maka basic attack berikutnya akan mengejar unit lawan dan meregen sebesar 10 % hp yang hilang



Energy Wave (Skill 1)-
Gampang nya ini seperti Rasengan di anime Naruto.Musuh yang kena bakal kena slow 70 %.Kalau skill ini kena unit lawan,maka skill yang lain akan berkurang cooldown nya sebesar 1 detik



Magic Thump (Skill 2 Fase Pertama) -
Guinevere akan lompat ke tempat yang ditentukan,lalu melakukan knock up kepada unit lawan disekitarnya selama 1 detik (monster jungle dan hero lawan)




Spatial Migration (Skill 2 Fase Kedua)-
Poin pertama : Guinevere akan blink ke arah yang ditentukan
Poin kedua  : Guinevere meninggalkan bayangan sementara
Poin ketiga : Kalau bayangannya kena damage,maka Guinevere akan mengisi pasif nya (bar merah)


Violet Requiem (Ultimate)-
Guinevere akan memberikan magic damage semacam dps kepada hero lawan di sekitarnya selama 2 detik.Jika musuh terkena knock up saat dia mengeluarkan skill ini,maka mereka akan di knock up 6 kali lagi



Spell ?
Untuk Guinevere spell sangat fleksibel tergantung player nya namun kebanyakan pake Execute atau Retribution.Execute buat offlaner dan Retribution buat midlaner karena mid lane penting buat leveling secepat mungkin biar bisa support temen yang ada di side lane

Emblem ?

Karena Guinevere ini tidak pake mana maka saya rekomendasikan emblem Custom Mage dan talent paling bawah kalian bisa ambil Mystery Shop supaya item kalian cepet jadi kalo kalian jadi midlaner dan kalau jadi offlaner kalian bisa pake yang Magic Worship biar bisa ngebakar lawan

Build ?




Kita bisa melihat build dari top player dan menyimpulkan build yang bagus untuk Guinevere

di sini sepatunya rata-rata adalah Arcane Boots
item core nya Concentrated Energy dibikin setelah sepatu jadi dan Holy Crystal di bikin setelah CE atau di taruh di belakang juga oke

Item opsional :
Winter Truncheon
Calamity Reaper
Fleeting Time
Calamity Reaper
Beast Killer

Combo ?

Untuk combo yang paling umum itu 2<3<1 namun combo juga bisa berubah tergantung situasi.

Poin penting untuk pemakaian skill Guinevere :

  • Usahakan prediksi gerakan musuh 1 atau 2 detik ke depan kalo mau skill 2 ke hero lawan
  • Knock up tidak selalu harus dari skill 2, kalian bisa combo juga dengan knock up dari hero lain seperti Chou , Grock atau Minotaur misalnya


Gameplay ?

  • Tentukan di lane mana kita akan berada Guinevere ini fleksibel dia bisa ditaruh di mid lane atau off lane
  • Kalo main mid, tugas kalian adalah mendapatkan keong karena guin ini penting untuk level 4 secepat mungkin biar bisa ngegank lawan dan dapat kill.Karena itulah kalo main mid saran saya pake Retri saja
  • Kalau main offlane kita main aman saja sampai jadi 1 item kecuali midlaner tim kita memang udah bener2 ngebantai kita bisa main lebih agresif seperti push turret atau nyulik core lawan
  • Usahakan kita sering menyergap musuh yang sedang sendiri caranya adalah kita sembunyi di rumput dan tunggu kalau ada core lawan yang lewat di situ kita bisa muncul dan combo in dia
  • Hindari basic attack langsung dengan hero fighter atau mm di late game kecuali level dan gold udah terpaut jauh
  • Saat teamfight kita skip saja tank lawan dan sebisa mungkin dapetin hero lawan yang tipis dulu seperti mm atau mage.Dengan begini tim kita bisa lebih mudah memenangkan teamfight 

Menentukan Tahun Kabisat atau Tidak Dengan Python


Pada artikel kali ini kita akan belajar membuat program menentukan tahun kabisat menggunakan python.Sebelum kita ke pembahasannya apa sih itu tahun kabisat ? Tahun Kabisat merupakan suatu tahun di mana jumlah hari nya adalah 366 hari yaitu penambahan satu hari pada bulan Februari (tanggal terakhir bulan Februari pada tahun kabisat adalah 29 Februari)

Kenapa Ada Tahun Kabisat ?

Alasan kenapa ada tahun kabisat adalah revolusi bumi terhadap matahari tidak tepat 365 hari melainkan 365 hari 5 jam 48 menit 45,1814 detik. Jika hal ini tidak dihiraukan maka setiap 4 tahun akan kekurangan hampir 1 hari

Karena itulah, diberikan 1 hari tambahan pada bulan Februari (29 Februari) namun karena 5 jam 48 menit 45,1814 detik kurang dari 6 jam maka tahun yang habis di bagi 100 (contoh tahun 1700) bukan tahun kabisat kecuali tahun yang habis dibagi 400 (contoh tahun 2000)

Cara Menghitung Tahun Kabisat ?

Ada semacam algoritma yang dipakai untuk menentukan tahun kabisat atau tidak yaitu sebagai berikut :

1. Jika tahun habis dibagi 400 maka sudah pasti tahun tersebut tahun kabisat
2.Jika tahun habis dibagi 100 tapi tidak habis dibagi 400 maka tahun tersebut bukan tahun kabisat
3.Jika tahun tidak habis dibagi 400 dan 100 tapi habis dibagi 4 maka tahun tersebut adalah tahun kabisat

Membuat Program nya Dengan Python

1. Silahkan install dulu Python 3 kalau belum punya download dulu di link bawah ini (pilih yang sesuai dengan sistem operasi yang kalian pakai)

https://www.python.org/downloads/

2. Buka Python lalu klik "New File" kalau kebuka jendela baru langsung saja klik "Save as " lalu beri nama file kalian (ini untuk menyimpan file python (.py) di komputer kalian)




3.Masukkan sintaks ini di lembar kerja Python kalian (sudah saya kasih comment biar kalian tahu sintaks itu buat apa)

thn = input ("Masukkan tahun berapa pun :")
#mengambil input dari user
thn = int (thn)
#mengubah tipe data inputan menjadi integer
thnkabisat = False
#untuk memberi nilai awal pada variabel thnkabisat
# thn kabisat memiliki tipe data boolean
#yang hanya memiliki 2 nilai yaitu True dan False
if (thn % 400 == 0):
    thnkabisat = True
elif (thn % 100 == 0):
    thnkabisat = False
elif (thn % 4 == 0):
    thnkabisat = True
else:
    thnkabisat = False
#algoritma yang dipakai
if (thnkabisat == True):
    print(thn, "merupakan tahun kabisat")
else:
    print(thn, "bukan merupakan tahun kabisat")


4.Jalankan dengan klik Run < Run Module atau tekan F5 pada keyboard (kalau di suruh save klik OK aja)




 5.Masukkan tahun untuk menguji program



Penjelasan Sintaks :

IF untuk pengandaian jika syarat terpenuhi maka program akan melakukan instruksi tertentu.Jika syarat tidak terpenuhi maka instruksi tidak akan dilakukan seperti pada program tadi jika tahun habis dibagi 400 maka variabel thnkabisat akan menjadi True jika tidak itu tidak akan dilakukan

ELIF digunakan jika kita ingin ada tindakan berbeda untuk berbagai macam syarat/kondisi

Seperti program tadi kalau variabel thn tidak habis dibagi 400 maka akan diperiksa lagi apakah variabel thn habis di bagi 100 atau tidak kalau habis maka variabel thnkabisat adalah False

ELSE untuk memberikan instruksi jika syarat if dan elif di atasnya tidak ada yang memenuhi

% adalah modulus (menentukan sisa pembagian suatu bilangan terhadap bilangan tertentu)