Tuesday, January 22, 2013

Tranformasi 3 Dimensi

Transformasi 3D pada dasarnya hampir sama dengan transformasi 2D, hanya pada 3D kita menghitung sumbu Z. Sama seperti pada 2D, ada tiga  transformasi dasar yang dapat dilakukan terhadap verteks, yaitu: 
  1. Translasi. 
  2. Pensekalaan. 
  3. Rotasi. 
Titik hasil transformasi dapat diperoleh melalui rumus affine transformation
Q = P * M + tr
Dimana: 
Q: (Qx, Qy, Qz) menyatakan matrix 1x3 yang berisi titik hasil transformasi.
P: (Px, Py, Pz) menyatakan matrik 1x3 yang berisi titik yang akan ditransformasi.
tr: (trx, try, trz) menyatakan matriks 1x3 yang berisi banyaknya pergeseran sumbuk x,y, z.
M: Matriks transformasi berukuran 3x3 seperti berikut








Translansi
Translasi dilakukan dengan menggunakan matriks sebagai berikut:






Scalling (Penskalaan)
Penskalaan dilakukan dengan mengisi tr = (0,0,0) dan matriks M diatur seperti beikut.







Rotasi
Berbeda dengan rotasi di 2D yang menggunakan titik pusat(0,0) sebagai pusat perputaran,
rotasi 3D menggunakan sumbu koordinat sebagai pusat perputaran. Dengan demikian ada 3
macam rotasi yang dapat dilakukan, yaitu:
  1. Rotasi terhadap sumbu X 
  2. Rotasi terhadap sumbu Y 
  3. Rotasi terhadap sumbu Z 
Rotasi terhadap sumbu X, Y, dan Z diperlihakan seperti pada gambar berikut









Mengingat ada 3 buah sumbu rotasi maka matriks transformasi yang digunakan juga bergantung kepada sumbu putar. Adapun isi masing-masing transformasi sesuai dengan sumbu putar didefinisikan sebagai berikut. 





Read More

Tranformasi 2 Dimensi

Setelah suatu objek grafis dibangun, kita dapat melakukan transformasi terhadap objek grafis tersebut dengan berbagai cara tanpa menambahkan komponen baru apapun pada objek grafis tersebut. Ada banyak cara untuk melakukan transformasi objek grafis, tapi beberapa cara transformasi yang umum adalah :
  1. Translasi : objek dipindahkan ke lokasi baru tanpa mengubah bentuk, ukuran atau orientasinya.
  2. Rotasi : objek dirotasi (diputar) terhadap titik tertentu tanpa mengubah bentuk dan ukurannya
  3. Scalling : objek diperbesar atau diperkecil. objek dapat diskalakan menggunakan
faktor yang sama baik secara horisontal maupun vertikal sehingga proporsinya tetap atau bisa menggunakan faktor yang berbeda yang akan menyebabkan objek tersebut menjadi lebih lebih tinggi, lebih pendek, lebih tipis atau lebih tebal. 
Translasi dan rotasi disebut juga sebagai rigid body transformation yaitu transformasi yang hanya mengubah posisi objek, tanpa mengubah bentuknya

Translasi
Translasi adalah transformasi paling sederhana yang dapat diterapkan pada suatu objek grafis. Secara sederhana translasi adalah memindahkan objek grafis dari satu tempat ke tempat lain tanpa mengubah tampilan dan orientasi.

Untuk menghasilkan translasi dari suatu objek grafis, kita menambahkan konstanta Tx pada koordinat x dan konstanta Ty pada koordinat Y, formula ini diterapkan pada semua titik pada objek yang akan ditranslasikan


Formula untuk mentranslasikan suatu titik (x,y) ke posisi baru (xi,yi) adalah sebagai
berikut :

xi = x + Tx dan yi = y + Ty






Rotasi
Rotasi suatu image adalah memutar objek terhadap titik tertentu di bidang xy. Bentuk dan ukuran objek tidak berubah. Untuk melakukan rotasi perlu diketahui sudut rotasi  θ dan pivot point (Xp,Yp) atau titik rotasi dimana objek dirotasi. Nilai positif dari sudut rotasi menentukan arah rotasi berlawanan dengan jarum jam dan sebaliknya nilai negative akan memutar objek searah jarum jam

Rotasi yang paling sederhana adalah rotasi dengan pivot point di titik pusat koordinat sistem yaitu (0,0). Pada gambar 5.xx terlihat titik (x,y) dirotasi terhadap titik pusat koordinat sistem dengan sudut θ, sudut terhadap sumbu x adalah sebesar Φ . Dengan menggunakan trigonometri dasar dapat dihitung bahwa :


x = r cos Φ dan y = r sin Φ











Scalling (Penskalaan)
Scalling atau penskalaan adalah proses untuk mengubah ukuran objek, dengan cara Mengubah jarak setiap titik pada objek terhadap titik acuan. Objek dapat diskalakan dengan arah horizontal maupun vertical dengan cara mengalikan koordinat tiap objek dengan factor konstanta. Pada proses ini perlu dispesifikasikan dua hal yaitu :

  1. Faktor penskalaan: sx & sy real: (0..N]
  2. Titik acuan (xf,yf)

Jenis penskalaan ada dua yaitu uniform dan diferensial. Penskalaan Uniform terjadi bila factor vertical sama dengan horizontal, sedangkan diferensial jika kedua factor tersebut berbeda.

Penskalaan terhadap titik (0,0)

x’=x.sx dan y’=y.sy



Penskalaan terhadap titik (0,0) dapat dirumuskan sebagai berikut, dengan konsekuensi bentuk dan posisi objek berubah. Jika 0<S<1: lebih dekat ke (0,0), S=1: ukuran tetap, 1<S: lebih jauh dari (0,0).



Read More

Objek Grafik 3 Dimensi


3 dimensi biasa disebut 3D atau adalah bentuk dari benda yang memiliki panjang, lebar, dan tinggi. Grafik 3 Dimensi merupakan teknik penggambaran yg berpatokan pada titik koordinat sumbu x(datar), sumbu y(tegak), dan sumbu z(miring). Representasi dari data geometrik 3 dimensi sebagai hasil dari pemrosesan dan pemberian efek cahaya terhadap grafika komputer 2D. Tiga Dimensi, biasanya digunakan dalam penanganan grafis. 3D secara umum merujuk pada kemampuan dari sebuah video card (link).

Grafik 3D merupakan perkembangan dari grafik 2D. Didalam grafika komputer, 3D merupakan bentuk grafik yang menggunakan representasi data geometri tiga dimensi.

Suatu objek rangka 3D apabila disinari dari arah tertentu akan membentuk bayangan pada permukaan gambar. 
Proses pembuatan grafik komputer 3D dapat dibagi ke dalam tiga fase, yaitu 3D modeling yang mendeskripsikan bentuk dari sebuah objek, layout dan animation yang mendeskripsikan gerakan dan tata letak sebuah objek, dan 3D rendering yang memproduksi image dari objek tersebut.

Istilah atau Pengertian Grafik 3D adalah sebuah gambar,garis,lengkungan,dan sebagainya yang memiliki titik-titik yang menghubungkan menjadi sebuah bentuk 3D. Di dalam dunia game, 3D secara umum merujuk pada kemampuan dari sebuah video card (link). Saat ini video card menggunakan variasi dari instruksi-instruksi yang ditanamkan dalam video card itu sendiri (bukan berasal dari software) untuk mencapai hasil grafik yang lebih realistis dalam memainkan game komputer.

Macam-macam objek 3 dimensi:
  • Box
  • Sphare
  • Cyllinder
  • Tube
  • Pyramid
  • Plane
  • Hedra

Saya akan membahas 3 diantaranya:

Box
Box adalah sebuah objek 3 dimensi yang terbuat dari kumpulan objek 2 dimensi, maksudnya sebuah box merupakan kumpulan dari sebuah bidang persegi yang saling dihubungkan satu sama lain. 



 Sphere            

Sphare atau bola merupakan suatu objek 3 dimensi yang awalnya  terbentuk dari kumpulan circle-cirle yang tak terhingga menjadi satu, Sehingga membentuk sebuah bola. 



Cylinder

Cylinder merupakan objek 3 dimensi yang awalnya terbentuk dari lingkaran yang memiliki ukuran panjang. Jadi pada cylinder terdapat ukuran jari-jari,diameter dan tinggi
Read More

Objek Grafik 2 Dimensi


Objek grafik 2 dimensi adalah sekumpulan titik-titik 2 dimensi yang dihubungkan dengan garis lurus, baik berupa polyline, polygon atau kurva. Objek grafik 2 dimensi didefinisikan sebagai kumpulan titik 2dimensi yang secara komputasi dinyatakan sebagai array 1D, atau linkedlist sesuai dengan struktur data yang digunakan dalam menyatakan kumpulan titik 2D ini. 
Objek grafik dimensi juga adalah gambar 2 dimensi yang  sumbu x dan sumbu y, atau sumbu koordinat cartesius dua dimensi. Dua sumbu yang saling bertegak lurus antar satu dengan yang lain, yang keduanya terletak dalam satu bidang (bidang xy).

Sedangkan Grafik komputer 2D adalah sebuah generasi gambar digital berbasis komputer, yang kebanyakan mengambil objek-objek dua dimensi (2D). Model Grafik 2D merupakan kombinasi dari model geometri (juga disebut sebagai grafik vektor), gambar digital (raster graphics), fungsi matematika, dan sebagainya. Komponen-komponen ini dapat dimodifikasi dan dimanipulasi oleh transformasi geometri dua dimensi, seperti translasi, rotasi, dan dilatasi. 

Model-model yang digunakan pada disain grafis 2D biasanya tidak mendukung bentuk-bentuk tiga-dimensi, atau fenomena yang bersifat tiga dimensi, seperti pencahayaan, bayangan, pantulan, refraksi, dan sebagainya. Namun demikian, mereka dapat membuat model berlapis-lapis (layer); nyata, translusen, dan transparan, yang dapat ditumpuk dalam urutan tertentu. Urutan tersebut biasanya didefinisikan dengan angka (kedalaman lapisan, atau jarak dari si penglihat).

Macam-Macam objek 2D :

  • Line
  • Circle
  • Arc
  • Polygon
  • Text
  • Section
  • Rectangle
  • Ellips
  • Donut
  • Star
  • Helix

Dari macam-macam objek 2d ini saya akan membahas 3 macam:

Circle



Circle atau lingkaran adalah object 2 dimensi yang memiliki ukuran diameter dan jari-jari. Circle atau lingkaran merupakan kumpulan titik-titik yang tak berhingga dan saling berhubung.






Line


Objek line/garis adalah objek salah satu 2 dimensi yang sangat mendasar dan sering digunakan untuk perancangan gambar kerja. Line berasal dari 2 titik yang saling terhubung.




Polygon


Polygon adalah suatu fungsi yang mirip dengan polyline, hanya sajahasilnya adalah kurva tertutup. Pada polygon digunakan konsep array dalam menyatakan objek 2D sebagaikumpulan titik 2D. Polygon digunakan untuk merepresentasikan objek-objek duadimensi.
Read More

Monday, January 21, 2013

Primitive Drawing

Primitive Drawing merupakan cara mudah untuk menggambar pada layar monitor menggunakan teori geometri sederhana. Macam-macam primitive drawing seperti menggambar sebuah titik, garis, atau gabungan antar keduanya. 

Grafika Komputer berawal dari primitif-primitif dasar grafis (titik, garis, lingkaran dll) yang mendeskripsikan objek-objek yang kemudian akan membentuk suatu citra dua dimensi maupun tiga dimensi. 

Jika dipandang sebagai bitmap (BMP) dalam citra, maka gambar tersebut direpresentasikan sbg :









Tapi jika di pandang sebagai vektor dalam grafik, maka gambar tersebut direpresentasikan sbg :

1. Cara pertama : (3,Timur),(4,Selatan),(3,Barat),(4,Utara).
Kelemahan : kita tidak dapat menentukan titik asal dari vektor.

2. Cara kedua : [(0,1),(0,3)], [(0,3),(4,3)], [(4,3),(4,1)], [(4,1),(0,1)]
Dengan cara ini, maka kita mengetahui titik asal dan tujuan sehingga kita dapat memperoleh arah dan besar dari vektor tersebut.

Arah = tan-1[(Y2-Y1)/(X2-X1)]                       Besar = Ö (X1-X2)2 + (Y1-Y2)2

3. Cara ketiga : Menggunakan informasi atribut segi empat. [(0,1),(4,3)] atau (0,1,4,3) Jika ada suatu gambar yang terdiri dari grafik dan area dapat diisi dengan warna tertentu, maka itu disebut grafik juga. Intinya grafik adalah gambar yang koordinatnya dapat diubah

Berikut akan Saya share script tentang primitive drawing (membuat Titik) dalam Bahasa Java


import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Insets;

import javax.swing.JPanel;
import javax.swing.JFrame;

import java.util.Random;

public class Points extends JPanel {

  public void paintComponent(Graphics g) {
      super.paintComponent(g);

      Graphics2D g2d = (Graphics2D) g;

      g2d.setColor(Color.blue);

      Dimension size = getSize();
      Insets insets = getInsets();

      int w =  size.width - insets.left - insets.right;
      int h =  size.height - insets.top - insets.bottom;

      Random r = new Random();

      for (int i=0; i<1000; i++) {
          int x = Math.abs(r.nextInt()) % w;
          int y = Math.abs(r.nextInt()) % h;
          g2d.drawLine(x, y, x, y);
      }
  }

  public static void main(String[] args) {

      JFrame frame = new JFrame("Points");
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.add(new Points());
      frame.setSize(250, 200);
      frame.setLocationRelativeTo(null);
      frame.setVisible(true);
  }
}

Output


Read More

Materi Grafika Komputer

Materi - materi Grafika Komputer yang akan Kita Bahas Adalah

Grafika 1

Grafika 2
  • Z-Order dan Z-buffer
  • Morphing
  • Color Map
  • Texture Map
  • Curve
  • Camera View
  • Tranformasi Geometri 


Read More

PENGENALAN GRAFIKA KOMPUTER

Grafika komputer adalah bagian dari ilmu komputer yang berkaitan dengan pembuatan dan manipulasi gambar (visual) secara digital.  Bentuk sederhana dari grafika komputer adalah grafika komputer 2D yang kemudian berkembang menjadi grafika komputer 3D, pemrosesan citra (image processing), dan pengenalan pola (pattern recognition). Grafika komputer sering dikenal juga dengan istilah visualisasi data.

Grafika komputer pada dasarnya adalah suatu bidang ilmu komputer yang mempelajari tentang cara-cara untuk meningkatkan dan memudahkan komunikasi antara manusia dengan mesin (komputer) dengan jalan membangkitkan, menyimpan dan memanipulasi gambar model suatu obyek menggunakan komputer. Grafika komputer memungkinkan kita berkomunikasi lewat gambar-gambar, bagan-bagan dan diagram-diagram

Perbedaan Antara Grafika & Image Processing

Grafika
Image Processing
Grafika komputer menghasilkan suatu gambar Image processing mengolah suatu gambar
Materinya berisi teknik teknik menggambar Materinya berisi teknik memperbaiki dan menyajikan informasi darigambar
Hasilnya gambar Hasilnya bisa gambar atau informasi


Perbedaan Photo & Gambar

Photo
Gambar
Photo  dihasilkan dari capture (mengambil) gambar yang ada
Gambar dihasilkan dari proses pembuatan atau peniruan
Detail dari setiap obyek lengkap. Misalnya jumlah kumis pada kucing tertangkap apa adanya.
Detail tidak lengkap. Misalnya siapa yang mau menghitung jumlah kumis kucing baru digambarkan sesuai dengan jumlahnya


Elemen - Elemen Grafis


Read More

Sunday, January 20, 2013

PERBEDAAN PROGRAM DAN ALGORITMA


Program adalah kompulan instruksi komputer, sedangkan metode dan tahapan sistematis dalam program adalah algoritma. Program ini ditulis dengan menggunakan bahasa pemrograman. Jadi bisa kita sebut bahwa program adalah suatu implementasi dari bahasa pemrograman.
Beberapa pakar memberi formula bahwa:

Program = Struktur Data + Algoritma

Bagaimanapun juga struktur data dan algoritma berhubungan sangat erat pada sebuah program. Algoritma yang baik tanpa pemilihan struktur data yang tepat akan membuat program menjadi kurang baik, semikian juga sebaliknya. Pembuatan algoritma mempunyai banyak keuntungan diantaranya:
  • Pembuatan atau penulisan algoritma tidak tergantung pada bahasa pemrogramanmanapun, artinya penulisan algoritma independen dari bahasa pemrograman dankomputer yang mengeksekusinya.
  • Notasi algoritmik dapat diterjemahkan ke dalam berbagai bahasa pemrograman.
  • Apapun bahasa pemrogramannya, output yang akan dikeluarkan sama karena algoritmanya sama.

Beberapa hal yang perlu dalam membuat algoritma diperhatikan:
  • Teks algoritma berisi deskripsi langkah-langkah penyelesaian masalah. Deskripsi tersebut dapat ditulis dalam notasi apapun asalkan mudah dimengerti dan dipahami.
  • Tidak ada notasi yang baku dalam penulisan teks algoritma seperti pada notasibahasa pemrograman. Notasi yang digunakan dalam menulis algoritma disebut notasi algoritmik.
  • Tiap orang dapat membuat aturan penulisan dan notasi algoritmik sendiri. Hal ini karena teks algoritma tidak sama dengan teks program. Namun supaya notasi algoritmik mudah ditranslasikan ke dalam notasi bahasa pemrograman tertentu, maka sebaiknya notasi algoritmik tersebut berkorespondensi dengan notasi bahasa pemrograman secara umum.
  • Notasi algoritmik bukan notasi bahasa pemrograman, karena itu pseudocode dalam notasi algoritmik tidak dapat dijalankan oleh komputer. Agar dapat dijalankan olehkomputer, pseudocode dalam notasi algoritmik harus ditranslasikan atau diterjemahkan ke dalam notasi bahasa pemrograman yang dipilih. Perlu diingat bahwa orang yang menulis program sangat terikat dalam aturan tata bahasanya dan spesifikasi mesin yang menjalankannya.
  • Algoritma sebenarnya digunakan untuk membantu kita dalam mengkonversikansuatu permasalahan ke dalam bahasa pemrograman.

Algoritma merupakan hasil pemikiran konseptual, supaya dapat dilaksanakan olehkomputer, algoritma harus ditranslasi ke dalam notasi bahasa pemrograman. Ada beberapa hal yang harus diperhatikan ketika translasi tersebut yaitu:
  1. Pendeklarasian variabel : Apakah bahasa pemrograman yang akan digunakan membutuhkan pendeklarasian variabel karena tidak semua bahasa pemrograman membutuhkannya.
  2. Pemilihan tipe data : Apabila bahasa pemrograman yang akan digunakan membutuhkan pendeklarasian variabel maka perlu dipertimbangkan pada saat pemilihan tipe data.
  3. Pemakaian instruksi-instruksi : Beberapa instruksi mempunyai kegunaan yang sama tetapi masing-masing memiliki kelebihan dan kekurangan yang berbeda.
  4. Aturan sintaks : Pada saat menulis program kita terikat dengan aturan sintaks dari bahasa pemrograman yang akan digunakan.
  5. Tampilan hasil : Pada saat membuat algoritma kita tidak memikirkan tampilan hasil yang akan disajikan. Hal-hal teknis ini kita perhatikan ketika mengkonversikannya menjadi program.
  6. Cara pengopersian compiler atau interpreter. Bahasa pemrograman yang digunakan termasuk kelompok compiler atau interpreter.

Beberapa persyaratan untuk membuat algoritma yang baik adalah:
  • Tingkat kepercayaannya tinggi (realibility). Hasil yang diperoleh dari proses harus berakurasi tinggi dan benar.
  • Pemrosesan yang efisien (cost rendah). Proses harus diselesaikan secepat mungkin dan frekuensi kalkulasi yang sependek mungkin.
  • Sifatnya general. Bukan sesuatu yang hanya untuk menyelesaikan satu kasus saja, tapi juga untuk kasus lain yang lebih general.
  • Bisa dikembangkan (expandable). Haruslah sesuatu yang dapat kita kembangkan lebih jauh berdasarkan perubahan requirement yang ada.
  • Mudah dimengerti. Siapapun yang melihat, dia akan bisa memahami algoritma anda. Susah dimengertinya suatu program akan membuat susah di-maintenance (dikelola).
  • Portabilitas yang tinggi (Portability). Bisa dengan mudah diimplementasikan di berbagai platform komputer.
Contoh Algoritma Kehiudpan Sehari-hari



Read More

Mencari Bilangan Faktorial Menggunakan Pemrograman JAVA


Dalam matematika, faktorial dari bilangan asli n adalah hasil perkalian antara bilangan bulat positif yang kurang dari atau sama dengan n. Faktorial ditulis sebagai n! dan disebut n faktorial. Sebagai contoh, 7! adalah bernilai 7×6×5×4×3×2×1 = 5040.

Berikut Flowchart Untuk Mencari bilangan Faktorial




Berikut Source Code untuk Mencari Bilangan Faktorial

public class Faktorial {
    public static void main(String [ ] args) {

String hasilX=" ";
boolean angka=false;
int hasil=1;
int f = 0;


while (!angka) {
    try {
     f=Integer.parseInt(JOptionPane.showInputDialog("Masukkan Angka : "));

    angka=true;
    } catch (Exception e) {
    JOptionPane.showMessageDialog(null,"Bukan Angka");
    }
 }
     for(int i=f;i>=1;i--) {
    
    hasil=hasil*i;
    if (1<i)
    hasilX=hasilX+i + " x ";
    else
    hasilX= hasilX+i ;
    }
     
JOptionPane.showMessageDialog(null,"Hasil dari "+f+"! adalah "+hasilX +" = " +hasil);
System.exit(0);
}
}


output :







Source Code Dapat Di Download Disini

Read More

Program Single Layer Perceptron dengan Java

Ini adalah pemrograman sederhana dengan menggunakan algoritma Perceptron untuk pembelajaran fungsi OR.

Source Code Dapat di download Disini
Read More

Algoritma Pembelajaran Perceptron


Perceptron termasuk salah satu bentuk jaringan yang cukup sederhana. Algoritma ini sering digunakan untuk mengklasifikasikan input yang bersifat linearly separable. Jaringan syaraf perceptron mempunyai satu layer dan bobot¬bobot sinaptik dan threshold yang bisa diatur. Selama proses pembelajaran, perceptron akan mengatur parameter secara continue selama iterasi, dan akan menghasilkan garis pemisah (Decision Boundar y) yang berfungsi untuk mengklasifikasikan himpunan stimulus yang diaplikasikan secara eksternal x 1, x 2, ... , x nke dalam salah satu dari dua kelas C1 dan C2. Kelas C1 adalah daerah positif dimana nilai = threshold (Φ), sedangkan kelas C2 adalah daerah negatif dimana nilai < threshold (Φ).

Secara teori, persamaan ini berfungsi untuk menciptakan decision boundar y yang membedakan kedua kelas secara akurat. Pengaturan threshold dapat mengatur pergeseran garis batasan keputusan.





Gb. Perceptron dengan decision boundaries untuk mengklasifikasikan dua kelas positif dan negatif.


Algoritma perceptron adalah proses pembelajaran yang melakukan perbaikan bobot-bobotnya pada setiap epoch (proses perulangan 1 kali untuk setiap data set input-output). Pada setiap epoch, jaringan akan mengkalkulasi error yang terjadi, kemudian nilai errorakan dijadikan parameter untuk proses perbaikan bobot sehingga tercipta nilai bobot yang baru. Proses ini akan berhenti jika errorsudah mencapai nilai minimum atau perulangan sudah mencapaimaximum epoch yang sudah ditentukan sebelumnya. Selain itu, proses pelatihan juga dipengaruhi oleh nilai laju pembelajaran(learning rate)
Read More

Fungsi Aktivasi


Fungsi Aktivasi (μ) mendefinisikan nilai output dari sebuah neuron pada level aktivasi tertentu berdasarkan nilai output dari pengombinasi linier. Fungsi ini dipakai untuk menentukan keluaran suatu neuron. Ada beberapa jenis fungsi aktivasi yang sering dipakai, yaitu :

A. Hard Limit (Tangga Biner)
Fungsi ini sering dipakai oleh jaringan dengan lapisan tunggal (single neural network) untuk penyelesaian masalah yang bersifat linier. Output dari fungsi ini adalah pengkonversian input yang bernilai continue menjadi bilangan biner (0 atau 1).

B. Symetric Hard Limit (Bipolar)
Fungsi ini adalah pengembangan dari fungsi Hard Limit, hanya saja fungsi ini mempunyai output antara 1, 0 atau 1.

C. Threshold
Fungsi ini adalah fungsi hasil modifikasi dari fungsi Hard Limit dengan menambahkan nilai threshold ( Ѳ ).

D. Bipolar Threshold
Fungsi hasil pengembangan dari fungsi threshold, dimana fungsi ini memiliki 3 nilai keluaran, yaitu 1, 0 atau 1.

E. Linear (Identity)
Fungsi ini mempunyai nilai keluaran yang sama dengan nalai masukannya (y = x).

F. Sigmoid Biner
Fungsi ini sering digunakan dalam jaringan Backpropagation. Fungsi ini memiliki sifat nonlinear sehingga sangat baik untuk diterapkan dalam penyelesaian masalah yang kompleks. Output dari fungsi Sigmoid Biner berupa bilangan biner (0 atau 1) atau output berupa nilai-nilai yang berada pada interval 0 sampai 1.

G. Sigmoid Bipolar (Symetric Sigmoid)
Fungsi ini fungsi sigmoid yang mempunyai interval nilai antara 1 sampai 1.

Read More

STRUKTUR DASAR JST


Sel syaraf atau neuron terdiri dari 3 elemen penting :
1. Fungsi Aktivasi yang mengatur output dari setiap neuron.
2. Mempunyai jalur / sinapsis yang berhubungan satu dengan yang lain dimana setiap hubungan memiliki weight / bobot.
3. Suatu fungsi tertentu untuk perhitungan nilai input (fungsi aktivasi).

Arsitektur Jaringan

a. Single Layer Network
Model ini adalah teknik matematis yang paling sederhana. Model ini pertama kali diperkenalkan oleh McCulloch dan Pitts.




Gb 1. Single Layer Network dengan 2 layer (input output)

Dalam jaringan ini, beberpa neuron(x) berhubungan langsung dengan layer output (y). Masing-masing input terhubung dengan bobot (w) dan menghasilkan output yang berbeda tergantung dari input yang ada. Selama proses learning, bobot-bobot akan dimodifikasi berdasarkan aturan tertentu guna menghasilkan keakuratan yang tepat. Model ini sangat cocok untuk teknik pengenalan pola dilihat dari tingkat kesederhanaannya.

b. Multi Layer Network
Jaringan ini merupakan pengembangan dari single layer network. Pada Model ini, jaringan mempunyai layer tambahan atau yang sering disebut dengan hidden layer. Keunggulan model ini adalah kemampuannya yang lebih untuk menghasilkan output yang lebih akurat dari model pertama. Tentunya dengan penambahan jumlah layer, teknik matematisnya pun akan semakin kompleks.





Gb 2. Multi Layer Network dengan 3 layer (input – hidden output)

c. Recurrent Networks
Arsitektur ini mempunyai alur untuk mengembalikan nilai output untuk memberikan sinyal ke layer input (feedback loop). Model ini setidakny harus memiliki minimal satu feedback loop. Recurrent Networks bisa ditingkatkan akurasinya dengan menambahkan hidden layer.

d. Competitive Layer Network
Arsitektur jaringan ini mempunyai bentuk yang unik, dimana semua neuron saling terhubung satu dengan yang lain.


Gb 4. Competitive Layer Network

Read More

Pengantar JST (Jaringan Saraf Tiruan)


Jaringan Syaraf Tiruan (JST) atau dalam bahasa inggris disebut Artificial Neural Networks (ANN) adalah sebuah metode yang sering diterapkan untuk teknik optimasi atau pengenalan pola (pattern recognition) dalam usaha untuk memecahkan suatu permasalahan. 

JST adalah salah satu metode yang termasuk dalam beberapa metode yang sudah diperkenalkan dalam bidang Soft Computing (SC). 

JST adalah suatu arsitektur jaringan yang terinspirasi oleh sistem kerja syaraf manusia (otak) dalam melaksanakan tugas. Para ilmuwan terinspirasi dengan sistem kerja otak yang mampu menangani berbagai permasalahan mulai dari yang sederhana sampai permasalahan yang kompleks dimana sebuah kemampuan learning yang efektif sangat dibutuhkan. Otak manusia dipenuhi selsel yang disebut neuron yang terhubung satu dengan yang lain. Manusia dewasa memiliki sekitar 100 milyar sel syaraf dan setiap sel syaraf terhubung dengan sekitar seribu hingga seratus ribu sel syaraf yang lain (sumber Tettamanzi.A, Tommasini.M, 2001, “Soft Computing”, Germany). Sistem syaraf yang sangat rumit ini mampu memberikan manfaat yang luar biasa bagi manusia. Sebagai contoh, manusia mampu mengenali sesuatu hanya dengan mendengar suaranya saja, atau hanya dengan melihat sebagian saja dari objek (informasi tidak lengkap). Kemudian, otak mempunyai “memori” yang mampu dibangkitkan kembali utuk mengenali objek-objek yang telah lalu.

Read More

Saturday, January 19, 2013

Mencari Bilangan Prima Menggunakan Pemrograman JAVA

Bilangan prima termasuk bilangan yang cukup unik, kita sudah mempelajari bilangan ini sejak masuk sekolah dasar.  

Beberapa referensi yang penulis dapat menyatakan bahwa bilangan prima merupakan bilangan positif yang hanya bisa dibagi oleh tepat 2 pembagi, yaitu angka 1 dan angka tersebut sendiri. Ada juga yang menyatakan sebagai suatu bilangan yang hanya bisa dibagi oleh dirinya sendiri tanpa menyertakan angka 1. 


Contoh: 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97 dan seterusnya.


Dalam logika pemrograman, kita cuma perlu memperhatikan mulai angka 2 dan seterusnya. Angka 0 jelas tidak mungkin, karena bilangan ini dibagi angka berapapun akan menghasilkan angka 0. Dan angka 1 juga kita abaikan saja, sebab angka 1 hanya bisa dibagi oleh dirinya sendiri, padahal bilangan prima itu syarat utamanya bisa dibagi oleh 2 bilangan natural yang nyata, yaitu angka 1 dan dirinya sendiri. (Note: bisa dibagi ini dalam artian menghasilkan bilangan bulat positif, bukan bilangan pecahan.)
Berikutnya akan penulis ilustrasikan contoh pembagiannya, dimana kita sepakati bahwa angka pembagi tidak melibatkan angka 1.

2: hanya bisa dibagi 2.
3: hanya bisa dibagi 3.
4: bisa dibagi 2 dan 4 (lebih dari 1 pembagian, maka tidak termasuk bilangan prima).
5: hanya bisa dibagi 5.
6: bisa dibagi 2,3, dan 6 (bukan bilangan prima).
Dan seterusnya.

Misalkan diketahui sebuah bilangan X, bagaimana cara menentukan bahwa bilangan X itu termasuk bilangan prima atau bukan?

Asumsi: X adalah bilangan yang lebih besar dari 2
Berarti bilangan-bilangan yang akan menjadi pembagi adalah mulai angka 2sampai X-1.
Jika bilangan X bisa dibagi oleh minimal salah satu dari bilangan-bilangan mulai 2 sampai X-1, maka dapat dikatakan bahwa bilangan X adalah bukan bilangan prima.

Contoh: 9 Bilangan sebagai pembagi adalah 2 3 4 5 6 7 8
Untuk mengetahui bahwa suatu bilangan bisa dibagi atau tidak, paling mudah kita menggunakan bantuan mod, yang menyatakan sisa hasil bagi. Jika sisa hasil bagi 0 berarti bisa dibagi.

Kembali ke contoh.

9 mod 2 = 1 (hasil bukan 0, artinya tidak habis/bisa dibagi), lanjutkan,
9 mod 3 =0 (sudah cukup untuk menyimpulkan bahwa 9 adalah bukan bilangan prima.)
Tidak perlu kita uji dengan membagi 9 dengan angka 4 dan seterusnya.
Contoh lain: 11
11 mod 2 = 1
11 mod 3 = 2
11 mod 4 = 3
11 mod 5 = 1
11 mod 6 = 5
11 mod 7 = 4
11 mod 8 = 3
11 mod 9 = 2
11 mod 10 = 1

Tidak ada yang menghasilkan angka 0, berarti 11 termasuk bilangan prima. 

Flowchart Untuk Program mencari Bilangan Prima Sebagai Berikut :


Source Code Program Pencarian Bilangan Prima

public class Prima {
    public static void main(String[] args){
        {
       //initialisasi variabel4
       String angka[]={"0","1","2","3","4","5","6","7","8","9"};
       String inputan="";
       boolean hasil = false;
       boolean prima=false;
       String genap_ganjil="";

       int nilai = 0; //memasukan inputan berupa tipe int

       boolean lompat=false;
       boolean cekAngka=false;
       //end initialisasi
      
        //objek buffered reader untuk inputan
        InputStreamReader keyreader=new InputStreamReader(System.in);
        BufferedReader input=new BufferedReader(keyreader);
        //end objek
        try {
        System.out.print("Input -> ");
        inputan=input.readLine();
         } catch (Exception e) {
         }
        
         //int panjang=inputan.length();
        
         for (int i=0;i<inputan.length();i++){
           if (lompat)break;
           char chr= inputan.charAt(i);
                for (int j=0;j<angka.length;j++){
                if (chr==angka[j].charAt(0))
                   {
                    cekAngka=true;
                    lompat=false;
                    break;
                   }else{
                       
                        }
                    if (j==angka.length-1);
                        cekAngka=false;
                        lompat=true;
                }
         }

        if (!cekAngka)
             System.out.print("Output -> Bukan Bilangan"+"\n");
        else
        {
        nilai=Integer.valueOf(inputan.toString());
        //memeriksa bilangan itu ganjil atau genap
        if (nilai%2==0)genap_ganjil=" Genap ";  
        else genap_ganjil=" Ganjil ";

        if (nilai==2)prima=true;
        else
        {
           for(int i = 2; i <= nilai ; i++) {
                                                if(nilai % i == 0) {
                        if (nilai==i){prima=true;break;}
                        else
                        break;
                         }
                     }

        }

        if (prima)
        System.out.print("Output -> Benar, "+inputan.toString() + " adalah bilangan"+genap_ganjil+ "dan Prima"+"\n");
        else{
        if (nilai%2!=0)genap_ganjil=" Genap ";else genap_ganjil=" Ganjil ";
        System.out.print("Output -> Bukan Prima dan bukan"+genap_ganjil+ "\n");
       
        } 
        }
    }
    }
}



OUTPUT :


Jika Kita Menginputkan Yang Benar



Jika Kita menginputkan Bilangan Yang salah



SOURCE CODE DAPAT DI DOWNLOAD DISINI

Read More

SORTING


Pengertian Algoritma Pengurutan (sorting)
Sorting merupakan suatu proses untuk menyusun kembali humpunan obyek menggunakan aturan tertentu. Sorting disebut juga sebagai suatu algoritma untuk meletakkan kumpulan elemen data kedalam urutan tertentu berdasarkan satu atau beberapa kunci dalam tiap-tiap elemen. Pada dasarnya ada dua macam urutan yang biasa digunakan dalam suatu proses sorting:

  1. urut naik (ascending) : Mengurutkan dari data yang mempunyai nilai paling kecil sampai paling besar 
  2. urut turun (descending) : Mengurutkan dari data yang mempunyai nilai paling besar sampai paling kecil.

Mengapa harus melakukan sorting data? Ada banyak alasan dan keuntungan dengan mengurutkan data. Data yang terurut mudah untuk dicari, mudah untuk diperiksa, dan mudah untuk dibetulkan jika terdapat kesalahan. Data yang terurut dengan baik juga mudah untuk dihapus jika sewaktu-waktu data tersebut tidak diperlukan lagi. Selain itu, dengan mengurutkan data maka kita semakin mudah untuk menyisipkan data atapun melakukan penggabungan data.

Metode-metode sorting yang akan saya bahas kali ini meliputi:

  1. Insertion Sort (Metode Penyisipan)
  2. Selection Sort (Metode Seleksi)
  3. Bubble sort(Metode Gelembung)
  4. Shell Sort (Metode Shell)
  5. Quick Sort (Metode Quick)
  6. Merge Sort (Metode Penggabungan)

Disini Saya Sudah Membuat Source Code Sorting Sederhana Menggunakan Bahasa Pemrograman Java, Yang dapat di download DISINI
Read More