Difference between revisions of "PYTHON - Kelas Metode Numerik"

From ccitonlinewiki
Jump to: navigation, search
 
(5 intermediate revisions by the same user not shown)
Line 106: Line 106:
 
==Metode Numerik untuk persamaan diferrensial-Runge-Kutta==
 
==Metode Numerik untuk persamaan diferrensial-Runge-Kutta==
  
Metode numerik dapat digunakan untuk menyelesaikan persamaan differensial biasa (Ordinary Differential Equation) juga bisa
+
Metode Numerik juga dapat digunakan untuk menyelesaikan persaan diferrensial biasa (Oder Differential Equation) atau yang dikenal dengan ODE. Penggunakan metode numerik untuk menyelesaikan ODE didasarkan pada beberapa hal sebagai berikut:
 +
1.Metode numerik dapat menyelesaikan persaaman differensial biasa secara effektif dan lebih mudah dibandingkan dengan penyelesain secara exact.
 +
 
 +
2.Terdapat banyak kasus dimana persamaan diferensial biasa tidak bisa diselesaikan secara exact, namun bisa diselesaikan secara numerikal.
 +
 
 +
3.Pada aplikasinya, sebagian besar persoalan mengenai persamaan differensial biasa diselesaikan menggunakan metode numerik, khususnya di era komputerisasi.
 +
Untuk menyelesaikan persamaan differensial biasa secara numerikal, ada beberapa metode yang dapat digunakan, diantaranya adalah metode runge-kutta. Secara mendasar, pendekatan dengan menggunakan metode runge-kutta dapat digambarkan sebgai berikut:
 +
 
 +
[[File:runge-kutta1.JPG]]
 +
 
 +
Metode Runge-Kutta terdiri dari beberapa orde, dimuluai dari metode Runge-Kutta orde 2, yaitu metode Rungge-Kutta yang paling sederhana. Metode Rungge-Kutta orde 3 dapat menghasilkan akurasi yang lebih baik. Begitu juga dengan metode Rungge-Kutta orde 4 dapat menghasilkan hasil pendekatan dengan akurasi yang lebih baik dari pada metode Runge-Kutta orde 3 dan orde 2. Oleh karena itu, laman ini hanya akan membahas aplikasi metode Runge-Kutta orde 4.
 +
Untuk mendapatkan pemahaman yang lebih baik, mari lihat pemyelesaian persoalan berikut:
 +
 
 +
[[File:runge-kutta2.JPG]]
 +
 
 +
[[File:runge-kutta3.JPG]]
 +
 
 +
[[File:runge-kutta4.JPG]]
 +
 
 +
[[File:runge-kutta5.JPG]]
 +
 
 +
Selanjutnya, pengerjaan dapan dilanjutkandengan menggunakan bantuan spread sheet. Sebelum menggunakan bahasa pemrograman python. Dengan menggunakan Sperad Sheet (Ms.Excel) didapatkan hasil sebagai berikut:
 +
 
 +
[[File:tabel_runge-kutta1_rev.JPG]]
 +
 
 +
[[File:tabel_runge-kutta2.JPG]]
 +
 
 +
 
 +
Lalu, selanjutnya metode runge kutta ini dapat diapliakasikan dengan bahasa pemrograman. Berikut algoritma beserta koding metode Runge-kutta untuk soal bola jatuh bebas:
 +
 
 +
[[File:python_runge-kutta1.JPG]]
 +
[[File:python_runge-kutta2.JPG]]
 +
 
 +
==ARTIFICIAL INTELEGENCE: NEURAL-NETWORK==
 +
 
 +
Seiring dengan berkembangnya zaman, saat ini pengembangan mengenai Artificial Intelegence sangat berkembang dengan pesat. Terlebih lagi sekarang Indonesia sudah mulai memasuki era industri 4.0. Diantara Artificial Intelegence yang sangat banyak diaplikasikan adalah Model Neural Network atau biasa disebut Artificial Neural Network. Prinsip dari Neural Network ini terinsipirasi dari sistem kerja sistem kerja otak manusia. Untuk mengetahui apa itu Neural Network, teman-teman dapat melakukan studi literatur lebih lanjut.
 +
 
 +
Di page ini, kita akan membahas bagaimana membangun sebuah model Neural Network dengan menggunakan python. Pertama, kita akan membuat model tersebut di python secara kasar atau ''scratch''. Contoh code Neural Network secara scratch dapat dilihat sebagai berikut:
 +
 
 +
import numpy as np
 +
from numpy import exp as exp
 +
 
 +
def sigmoid (x):
 +
    return 1/(1+exp(-x))
 +
 
 +
def sigmoid_derivative (x):
 +
    return x*(1-x)
 +
 
 +
 
 +
# input sebanyak 4 buah dengan 5 percobaan data
 +
training_input = np.array([[0,0,1,0,1],
 +
                          [1,1,1,0,1],
 +
                          [1,0,1,0,1],
 +
                          [0,1,1,0,1]])
 +
 
 +
# nilai output sebanyak 4 buah dengan 2 hasil mendekati nilai eksak
 +
training_output = np.array([[1,1,1,1],[0,0,0,0]]).T
 +
 
 +
print('training input')
 +
print(training_input)
 +
 
 +
print('training outputs')
 +
print(training_output)
 +
 
 +
# pseudo random untuk matrix weight
 +
np.random.seed(1)
 +
 
 +
# total synaptic weight di matrix neuron 5 kolom 2 baris
 +
# 5 untuk banyak data per input
 +
# 2 untuk banyaknya output
 +
 
 +
synaptic_weight =2*np.random.random((5,2))+1
 +
 
 +
 
 +
print('random starting synaptic weight')
 +
print(synaptic_weight)
 +
 
 +
for i in range (2000):
 +
    input_layer = training_input
 +
    output = sigmoid(np.dot(input_layer, synaptic_weight))
 +
    error = training_output - output
 +
    adjustment = error + sigmoid_derivative(output)
 +
    synaptic_weight += np.dot(input_layer.T, adjustment)
 +
 
 +
print('synaptic weight after training')
 +
print(synaptic_weight)   
 +
   
 +
print ('output hasil setelah iterasi')
 +
print(output)

Latest revision as of 11:48, 3 December 2019

Tanggal : 12/02/2019


PENDAHULUAN

Metode numerik merupakan sebuah metode yang digunakan untuk menyelesaikan berbagai kasus dan masalah matematis melalui komputasi. Metode numerik pada umumnya melibatkan jumlah komputasi yang sangat banyak, dengan melibatkan proses iterasi hitungan. Oleh karena itu, komputasi metode numerik dilakukan dengan menggunakan bantuan komputer. Metode numerik saat ini juga banyak diaplikasikan dalam berbagai bidang, salah satunya dibidang engineering.

Perhitungan metode numerik dapat dilakukan dengan bantuan komputer melalui software atau perangkat lunak yang digunakan khusus untuk perhitungan metode numerik.Software pemrograman juga telah banyak tersedia seecara gratis (Open Source). Salah satu software pemrograman yang cukup umum digunakan saat ini adalah Python. Python merupakan salah satu software yang dapat digunakan untuk melakukan perhitungan metode numerik. Selain bersifat gratis (Open Source), software ini juga banyak diminati karena banyak tersedia library yang memudahkan penggunanya.

Dalam page ini, akan dibahas beberapa bahasan yang telah dibahas di kelas metode numerik departemen teknik mesin FTUI. Diharapkan semua orang yang mengakses page ini dapat mengambil manfaat dan ilmu yang bermanfaat, terutama ilmu mengenai metode numerik. Masukan dan saran sangat diperlukan agar page ini bisa menjadi lebih baik lagi kedepannya.


PYTHON : BASIC

Pada aplikasinya, metodu numerikal dilakukan dengan bantuan software. Diantara software yang saat ini banyak digunakan, terutama didunia industri, khususnya pengembangan revolusi industri 4.0, adalah python Oleh karena itu, sebelum mempelajari metode numerik, ada baiknya terlebih dahulu kita mengenal lebih dekat mengenai software python itu sendiri.

Saat ini, sudah banyak tersebar informasi dan media untuk mempelajari software python, seperti di youtube, website, dan bahkan aplikasi. Salah satu website rujukan yang saya rekomendasikan untuk mempelajari python adalah [1]. Namun, di page ini saya juga akan memberikan beberapa materi dasar mengenai program python.


1. Menampilkan sesuatu menggunakan python "Hellow World"

menampilkan sesuatu pada python, misalnya, sebuah tulisan atau sebuah angka, dapat dilakukan dengan perintah print('tulisan') sebagai contoh berikut:

  • under construction

2. Variabel dan Types

-Strings -Number


3. Tupples dan List

4. konveri types

5. operasi aritmatika dasar

6. Condition

7. Loops

8. Input Data

9. Fungsi

-Lambda statement

10. Modules and Dictionary

11. membuat Array


APLIKASI PADA LIMIT FUNGSI

Pembahasan pertama, yaitu contoh sederhana bagaimana cara menyelesaikan persamaan menggunakan metode numerik. Materi singkat mengenai aplikasi metode numerik pada limit sebuah fungsi dapat dilihat sebagai berikut:

Python-limit1.PNG Python-limit2.PNG File:Python-miti3rev.PNG Python-limit4.PNG Python-limit5.PNG


Adapun contoh code syntax sederhana perhitungan limit fungsi pada software python adalah


Python-limit-syntax.PNG


Aplikasi Pada Aljabar Simultan : Eliminasi Gauss

Eliminasi Gauss dapat diaplikasikan untuk menyelesaikan kasus pada aljabar simultan. Eliminasi Gauss juga dapat dilakukan dengan menggunakan metode numerik. Dengan menggunakan metode numerik, perhitungan dapat dilakukan secara efisien dan cepat dengan menggunakan bantuan program python. Berikut dibawah ini merupakan video mengenai konsep dan penjelasan sederhana mengenai Eliminasi Gauss yang dilakukan dengan metode numerik dengan menggunakan program Python.


Aplikasi Aljabar Simultan pada sistem pegas

Sistem Pegas Seri

Sistem pegas seri dapat ditinjau melalu metode finite elemenet analysis (FEA). Dengan FEA, pegas ditinjau pada setiap elemen dengan setiap node yang ada pada masing-masing elemen pegas. Eliminasi Gauss, dengan menggunakan program Python juga dapat digunakan untuk menyelesaikan sistem pegas seri yang ditinjau dengan metode FEA. Tutorial dan penjelasan singkat mengenai penyelesaian sistem pegas seri dengan menggunakan python dapat dilihat pada video berikut:

Metode Numerik untuk persamaan diferrensial-Runge-Kutta

Metode Numerik juga dapat digunakan untuk menyelesaikan persaan diferrensial biasa (Oder Differential Equation) atau yang dikenal dengan ODE. Penggunakan metode numerik untuk menyelesaikan ODE didasarkan pada beberapa hal sebagai berikut: 1.Metode numerik dapat menyelesaikan persaaman differensial biasa secara effektif dan lebih mudah dibandingkan dengan penyelesain secara exact.

2.Terdapat banyak kasus dimana persamaan diferensial biasa tidak bisa diselesaikan secara exact, namun bisa diselesaikan secara numerikal.

3.Pada aplikasinya, sebagian besar persoalan mengenai persamaan differensial biasa diselesaikan menggunakan metode numerik, khususnya di era komputerisasi. Untuk menyelesaikan persamaan differensial biasa secara numerikal, ada beberapa metode yang dapat digunakan, diantaranya adalah metode runge-kutta. Secara mendasar, pendekatan dengan menggunakan metode runge-kutta dapat digambarkan sebgai berikut:

Runge-kutta1.JPG

Metode Runge-Kutta terdiri dari beberapa orde, dimuluai dari metode Runge-Kutta orde 2, yaitu metode Rungge-Kutta yang paling sederhana. Metode Rungge-Kutta orde 3 dapat menghasilkan akurasi yang lebih baik. Begitu juga dengan metode Rungge-Kutta orde 4 dapat menghasilkan hasil pendekatan dengan akurasi yang lebih baik dari pada metode Runge-Kutta orde 3 dan orde 2. Oleh karena itu, laman ini hanya akan membahas aplikasi metode Runge-Kutta orde 4. Untuk mendapatkan pemahaman yang lebih baik, mari lihat pemyelesaian persoalan berikut:

Runge-kutta2.JPG

Runge-kutta3.JPG

Runge-kutta4.JPG

Runge-kutta5.JPG

Selanjutnya, pengerjaan dapan dilanjutkandengan menggunakan bantuan spread sheet. Sebelum menggunakan bahasa pemrograman python. Dengan menggunakan Sperad Sheet (Ms.Excel) didapatkan hasil sebagai berikut:

Tabel runge-kutta1 rev.JPG

Tabel runge-kutta2.JPG


Lalu, selanjutnya metode runge kutta ini dapat diapliakasikan dengan bahasa pemrograman. Berikut algoritma beserta koding metode Runge-kutta untuk soal bola jatuh bebas:

Python runge-kutta1.JPG Python runge-kutta2.JPG

ARTIFICIAL INTELEGENCE: NEURAL-NETWORK

Seiring dengan berkembangnya zaman, saat ini pengembangan mengenai Artificial Intelegence sangat berkembang dengan pesat. Terlebih lagi sekarang Indonesia sudah mulai memasuki era industri 4.0. Diantara Artificial Intelegence yang sangat banyak diaplikasikan adalah Model Neural Network atau biasa disebut Artificial Neural Network. Prinsip dari Neural Network ini terinsipirasi dari sistem kerja sistem kerja otak manusia. Untuk mengetahui apa itu Neural Network, teman-teman dapat melakukan studi literatur lebih lanjut.

Di page ini, kita akan membahas bagaimana membangun sebuah model Neural Network dengan menggunakan python. Pertama, kita akan membuat model tersebut di python secara kasar atau scratch. Contoh code Neural Network secara scratch dapat dilihat sebagai berikut:

import numpy as np from numpy import exp as exp

def sigmoid (x):

   return 1/(1+exp(-x))

def sigmoid_derivative (x):

   return x*(1-x)


  1. input sebanyak 4 buah dengan 5 percobaan data

training_input = np.array([[0,0,1,0,1],

                         [1,1,1,0,1],
                         [1,0,1,0,1],
                         [0,1,1,0,1]])
  1. nilai output sebanyak 4 buah dengan 2 hasil mendekati nilai eksak

training_output = np.array([[1,1,1,1],[0,0,0,0]]).T

print('training input') print(training_input)

print('training outputs') print(training_output)

  1. pseudo random untuk matrix weight

np.random.seed(1)

  1. total synaptic weight di matrix neuron 5 kolom 2 baris
  2. 5 untuk banyak data per input
  3. 2 untuk banyaknya output

synaptic_weight =2*np.random.random((5,2))+1


print('random starting synaptic weight') print(synaptic_weight)

for i in range (2000):

   input_layer = training_input
   output = sigmoid(np.dot(input_layer, synaptic_weight))
   error = training_output - output
   adjustment = error + sigmoid_derivative(output)
   synaptic_weight += np.dot(input_layer.T, adjustment)

print('synaptic weight after training') print(synaptic_weight)

print ('output hasil setelah iterasi') print(output)