Minggu, 18 Mei 2014

Virtual Interface Menggunakan Ubuntu 12.04

Interface atau ethernet pada umum hanya bisa menggunakan 1 IP address untuk melakukan proses komunikasi. Maka dengan teknologi Virtual Interface kita dapat membuat banyak IP address pada 1 interface. Biasanya virtual interface digunakan untuk komputer server bukan untuk komputer desktop walaupun secara teknik kita dapat menerapkan teknologi ini pada komputer server dan desktop. Manfaat dari penggunaan virtual interface adalah cost dan effisiensi.

Pada percobaan ini akan menggunakan Ubuntu server 12.04 dengan interface eth1 yang akan dikonfigurasi virtual interface eth1:1, eth1:2 dan seterusnya, dapat disesuaikan dengan kebutuhan. Konfigurasi Virtual Interface sebagai berikut :
  • Buka file konfigurasi jaringan ubuntu menggunakan perintah dibawah ini :
    $ sudo nano /etc/network/interfaces
  • Kemudian masukan konfigurasi dibawah ini pada file interfaces

    auto eth1
    iface eth1 inet static
    address 192.168.56.2
    netmask 255.255.255.0
    broadcast 192.168.56.255
    network 192.168.56.0
    gateway 192.168.56.1

    auto eth1:1
    iface eth1:1 inet static
    address 192.168.56.3
    netmask 255.255.255.0
    broadcast 192.168.56.255
    network 192.168.56.0
    gateway 192.168.56.1

    auto eth1:2
    iface eth1:2 inet static
    address 192.168.56.4
    netmask 255.255.255.0
    broadcast 192.168.56.255
    network 192.168.56.0
    gateway 192.168.56.1
  • Restart jaringan komputer server
    $ sudo /etc/init.d/networking restart
  • Menampilkan IP address pada eth1, eth1:1 dan eth1:2 menggunakan perintah ifconfig

     

    Untuk melakukan pengujian konfigurasi yang telah dibuat, maka ping-lah IP adrress 192.168.56.2, 192.168.56.3 dan 192.168.56.4

Kamis, 15 Mei 2014

DHCP Server Dengan isc-dhcp-server Ubuntu 12.04

Server DHCP (Dinamic Host Control Protocol) adalah sebuah komputer yang melayani permintaan alamat IP address atau konfigurasi jaringan secara automatis dan dinamis. Sehingga tidak perlu melakukan konfigurasi jaringan secara manual pada client. Pada sistem operasi Linux sebagai client membutuhkan program dhclient  untuk meminta layanan dari server DHCP. 

Proses percobaan kali ini menggunakan Ubuntu server 12.04 sebagai DHCP server menggunakan aplikasi server isc-dhcp-server. Untuk mempersingkat waktu kita mulai saja sesi praktek sebagai berikut :
  • Instalasi aplikasi server isc-dhcp-server, jalankan perintah dibawah ini pada terminal.
        $sudo apt-get install isc-dhcp-server

  • Setelah paket isc-dhcp-server telah terinstall, konfigurasilah interface atau ethernet mana yang akan digunakan untuk server DHCP, tambahkan ethernet yang akan digunakan pada file konfigurasi isc-dhcp-server pada path folder /etc/default/, pada praktek ini menggunakan eth1. 
        $ sudo nano /etc/default/isc-dhcp-server

# Defaults for dhcp initscript
# sourced by /etc/init.d/dhcp
# installed at /etc/default/isc-dhcp-server by the maintainer scripts
#
# This is a POSIX shell fragment
#
# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
# Separate multiple interfaces with spaces, e.g. "eth0 eth1".
INTERFACES="eth1"

  • Konfigurasi file dhcp.conf pada path /etc/dhcp/dhcp.conf. Konfigurasi dapat dilihat dibawah ini.
        $ sudo nano /etc/dhcp/dhcp.conf

subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.50 192.168.1.60;
option domain-name-servers 192.168.1.1;
# option domain-name "internal.example.org";
option routers 192.168.1.1;
option broadcast-address 192.168.1.255;
default-lease-time 600;
max-lease-time 7200;
}                                                                                                  

Keterangan :
- subnet 192.168.1.0 netmask 255.255.255.0, kelas alamat IP yang akan               digunakan untuk DHCP.
- range 192.168.1.50 192.168.1.60, jumlah alamat IP host.
- option domain-name-servers 192.168.1.1, alamat IP dari DNS server
- option domain-name “ ”, nama DNS dari 192.168.1.1 jika ada.
- option routers 192.168.1.1, alamat IP dari server DHCP.
- option broadcast-address 192.168.1.255, alamat IP broadcast server DHCP.
- default-lease-time 600, dalam waktu 600 detik atau 10 menit, alamat IP bisa diganti.
- Max-lease-time 7200, dalam waktu 7200 detik atau 2 jam, alamat IP akan diperbarui.
  • Setelah selesai melakukan konfigurasi, maka restart aplikasi server isc-dhcp-server menggunakan perintah dibawah ini.
        $ sudo /etc/init.d/isc-dhcp-server restart

  • Pada sisi client, kita akan melakukan konfigurasi Automatic (DHCP) pada network manager.
       
          PilihLah Edit. Pada menu Method pilih Automatic (DHCP) dan save.

  • Buka terminal dan jalankan perintah ip addr, maka dapat dilihat alamat IP 192.168.1.50 pada eth0 komputer client. Alamat IP tersebut didapat dari server DHCP.

Rabu, 23 April 2014

DNS Server Menggunakan Bind9 Dengan Ubuntu 12.04

Pada kesempatan ini saya ingin share pengetahuan untuk konfigurasi DNS Server menggunakan aplikasi server bind9. Untuk latihan kita dapat menggunakan virtualbox, sebelum real implementasi di komputer server.

DNS merupakan singkatan dari Domain Name Server. fungsi dari server DNS adalah untuk menterjemahkan alamat IP address komputer menjadi sebuah domain name. manfaatnya adalah kita tidak perlu mengingat numerical ip address, karena pada dasarnya lebih mudah mengingat domain name. 

Untuk lebih jelasnya langsung praktek saja. kita akan membuat sebuah domain saos.repo dengan ip address 192.168.56.2/24, yuk langsung saja ke TKP :

  • Tahap awal instalasi aplikasi server bind9  
            $sudo apt-get install bind9

  • Lakukan pengecekan nama hostname komputer kemudian berilah nama domain komputer anda pada file /etc/hosts : 
             $sudo nano /etc/hostname

repo
  • Edit file /etc/hosts
              $sudo nano /etc/hosts

127.0.0.1 localhost
192.168.56.2 saos.repo repo
  • Edit file /etc/bind/named.conf.options, jika anda membutuhkan konfigurasi dns dan gateway dari ISP. Jika tidak maka kosongkan saja.
forwarders {
# Give here your ISP DNS IP
192.168.56.1; # gateway or router
8.8.8.8;
};
  •  Edit file /etc/bind/named.conf.local menjadi seperti contoh dibawah ini :
  • Copy file /etc/bind/db.local untuk file konfigurasi zone : 
                $sudo cp /etc/bind/db.local /etc/bind/db.saos.repo
                $sudo cp /etc/bind/db.local /etc/bind/db.56

  • Edit file db.saos.repo menjadi seperti contoh dibawah ini :
  • Edit file db.56 menjadi seperti contoh dibawah ini :
  • kemudian lakukan pengecekan konfigurasi yang telah dibuat sudah benar atau belum :
                $named-checkzone saos.repo /etc/bind/db.saos.repo
                $named-checkzone saos.repo /etc/bind/db.56

  • Konfigurasi ip address manual komputer server menjadi seperti contoh dibawah ini :         
                 $sudo nano /etc/network/interfaces 
auto eth0
iface eth0 inet static
address 192.168.56.2
netmask 255.255.255.0
network 192.168.56.0
broadcast 192.168.56.255
gateway 192.168.56.1
dns-nameservers 192.168.56.25
dns-search saos.repo
  • Restart service aplikasi bind9 dan jaringan :
                $sudo /etc/init.d/bind9 restart
                $sudo /etc/init.d/networking restart

  • Testlah DNS server yang dikonfigurasi telah sukses apa belum menggunakan aplikasi nslookup, jika tampilan seperti contoh dibawah ini maka kita telah sukses :

Kamis, 20 Maret 2014

ADT (Abstract Data Types) C++

Dalam bahasa C++ kita dapat melakukan enkapsulasi tipe data primitif yang dikenal dengan ADT (Abstract Data Types). Secara umum ADT dapat kita sebut sebagai interface yang menyatakan apa yang dapat dilihat dan digunakan oleh programer.

Secara Umum struktur ADT :

                   typedef struct { 
                            <statement>
                           <statement>
                    }<nama adt>; 

Sebagai latihan awal kita akan membuat program tanggal menggunakan ADT diimplementasikan mengunakan perintah struct. Pertama kita akan membuat file tanggal.h, kemudian buatlah file main.cpp yang akan mengakses tipe data ADT yang telah kita definisikan pada tanggal.h, berikut ini source codenya :
  • tanggal.h
typedef struct {
int tgl;
int bulan;
int tahun;
}tanggalan;
  • main.cpp
#include <iostream>
#include "tanggal.h"

using namespace std;

int main(){
tanggalan tang;
tang.tgl = 1;
tang.bulan = 12;
tang.tahun = 1990;
cout << "tanggal =" << tang.tgl << endl;
cout << "Bulan =" << tang.bulan << endl;
cout << "Tahun =" << tang.tahun << endl;
return 0;
}
Output Dari program


Sabtu, 15 Maret 2014

Konfigurasi Jaringan VirtualBox

VirtualBox merupakan aplikasi open source untuk membuat sistem operasi secara virtual, jadi tanpa ada CPU secara fisik dan bisa dikatakan mirip dengan aplikasi VMware. Banyak manfaat yang bisa didapatkan dengan menggunakan virtual sistem operasi, salah satunya kita bisa belajar menggunakan banyak komputer walau hanya memiliki 1 komputer secara fisik dan yang pastinya hemat biaya.

Kesempatan kali ini saya akan mencoba sharing pengalaman untuk konfigurasi jaringan pada virtual box. Beberapa fitur jaringan pada virtualbox, yaitu : NAT, Bridge Adapter, Host Only Adapter, Internal Network dan Generic Driver. Untuk kesempatan kali ini saya hanya membahas tentang NAT, Bridge Adapter dan Host Only Adapter. Berikut ini penjelasannya :

  • Konfigurasi NAT (Network Address Translation)
Pada fitur ini proses konfigurasi cukup untuk dilakukan, pilihlah menu    Setting->Network. Kemudian centang opsi Enable Network Adapter dan pilih opsi NAT, langkah selanjutnya klik OK. 


  • Konfigurasi  Bridged Adapter
    Pada fitur ini koneksi jaringan akan kita tentukan akan melalui jaringan LAN atau WIFI. Pilihlah Menu Setting->Network, kemudian centang opsi Enable Network Adapter, pilihlah opsi Bridged Adapter dan tentukan jaringan mana yang akan dipilih eth0 atau wlan0, jika telah selesai maka klik OK.
  • Konfigurasi  Host Only Adapter
    Pada fitur ini kita akan membuat sebuah Land card virtual yang akan digunakan sebagai gateway oleh komputer virtual untuk bisa saling komunikasi. Pilihlah Menu File->Preference->Network. kemudian add host network.
    Ubah lah konfigurasi Ip address jaringan sesuai kebutuhan dengan cara klik menu Edit Host Only Network. 

Rabu, 22 Januari 2014

Integrasi Numerik Metode Simpson 1/3 Menggunakan C++

Materi terakhir untuk integrasi numerik adalah metode Simpson 1/3. Sebutan 1/3 muncul pada metode simpson karena terdapat faktor 1/3 pada perhitungan metode Simpson sekaligus membedakan dengan metode Simpson 3/8.

Pada integrasi numerik metode Simpson 1/3 nilai pembagi (n) harus bernilai genap. hal ini berbeda dengan integrasi metode Trapezoida dan Reimann yang tidak membutuhkan persyaratan untuk nilai pembagi.

Algoritma integrasi numerik metode Simpson 1/3 :
  • Definisikan fungsi y = f(x)
  • Tentukan batas bawah (a) dan batas atas (b) integrasi
  • Tentukan jumlah pembagi  (n)
  • Jika iterasi habis dibagi 2 dan tidak sama dengan n, maka lakukan perhitungan dibawah ini :
  • Jika tidak maka fungsi f(x) akan dikalikan 4 kemudian dijumlahkan, dengan rumus :
  •  Hitunglah luas daerah :

Code Program metode Simpson 1/3 menggunakan c++ :


#include <iostream>
#include <math.h>
#include <stdio.h>

using namespace std;

void simpson(float n,int a,int b){
float h = (b-a)/n;
float l;
float sum = 0;
float x = 0;

for(int i= 0;i<=n;i++){
if(i == 0 || i == n){
sum = sum + (x*x);
x = h+x;
}
else if(i%2 ==0 && i!= n){
sum = sum + (x*x)*2;
x = h+x;
}else {
sum = sum + (x*x)*4;
x = h+x;
}
}
l = (h/3) * sum;
printf("Nilai h = %f dan Nilai L =%f\n", h, l);
}

int main(){
simpson(10, 0, 1);
simpson(20, 0, 1);
simpson(30, 0, 1);
simpson(50, 0, 1);
simpson(100, 0, 1);
simpson(1000, 0, 1);
simpson(10000, 0, 1);
return 0;
}

Integrasi Numerik Metode Trapezoida Menggunakan C++

Setelah membahas integrasi numerik metode Reimann, sekarang saya akan menulis tentang integrasi numerik metode Trapezoida. secara garis besar untuk langkah - langkah pengerjaan tidak jauh beda dengan metode Reimann hanya rumus yang digunakan berbeda.

Algoritma integrasi numerik metode Trapezoida :
  • Definisikan y = f(x)
  • Tentukan batas atas (a) dan batas atas (b) integrasi
  • Tentukan jumlah pembagi n
  • Hitung h = (b-a) / n
  • Hitung menggunakan rumus dibawah ini :

Code program metode Trapezoida menggunakan c++ :
#include <iostream>
#include <math.h>
#include <stdio.h>

using namespace std;

void trapezoida(float n,float a,float b){
float h = (b-a)/n;
float l;
float sum = 0;
float x = 0;
for(int i= 0;i<=n;i++)
{
if(i == 0 || i == n)
{
sum = sum + (x*x);
x = h+x;
}
else
{
sum = sum + (x*x)*2;
x = h+x;
}
}
l = (h/2) * sum;
printf("Nilai h = %f dan Nilai L =%f\n", h, l);
}

int main(){
printf("Metode Trapezoida\n");
trapezoida(10, 0, 1);
trapezoida(20, 0, 1);
trapezoida(30, 0, 1);
trapezoida(50, 0, 1);
trapezoida(100, 0, 1);
trapezoida(1000, 0, 1);
trapezoida(10000, 0, 1);
printf("\n");
return 0;
}
  

Selasa, 21 Januari 2014

Integrasi Numerik Metode Reimann Menggunakan C++

Integral numerik merupakan cara atau alat bantu yang digunakan oleh para ilmuwan untuk memperoleh solusi hampiran, yang tidak mungkin untuk diselesaikan secara perhitungan analitik. 

Perhitungan integral adalah perhitungan dasar yang digunakan dalam kalkulus, Perhitungan integral juga dapat digunakan untuk menghitung luas daerah yang dibatasi menggunakan fungsi y = f(x) dan sumbu x. Salah satu metode untuk menghitung luas daerah menggunakan integral adalah metode Reimann. Berikut ini penjelasan Metode Reimann :

Algoritma Metode Reimann :
  • Definisikan fungsi f(x)
  • Tentukan batas bawah dan atas integral
  • Tentukan pembagi area n
  • Hitung h = (a-b) / n.
  • Hitunglah menggunakan rumus, dibawah ini :

code program metode Reimann dalam bahasa C++ :
 
#include <iostream>
#include <math.h>
#include <stdio.h>
using namespace std;

void reimann(float n, float a,float b){
float h = (b-a)/n;
float l;
float sum=0;
float x=0;
for(int i=0;i<=n;i++)
{
sum = sum + (x*x);
x = h+x;
}
l = h*sum;
printf("Nilai h = %f dan Nilai L =%f\n", h, l);
}

int main(){
printf("Metode Reimann\n");
reimann(10, 0, 1);
reimann(20, 0, 1);
reimann(30, 0, 1);
reimann(50, 0, 1);
reimann(100, 0, 1);
reimann(1000, 0, 1);
reimann(10000, 0, 1);
printf("\n");
return 0;
}

Minggu, 19 Januari 2014

Instalasi Bleachbit Cleaner On Linux (Ubuntu)

Komputer yang kita gunakan biasanya semakin sering digunakan akan mengalami gangguan menjadi lambat. Untuk mengatasi masalah tersebut kita perlu melakukan pembersihan sistem komputer kita dari cache atau sampah sistem yang tidak dibutuhkan. 

Pada sistem operasi Linux ada aplikasi Bleachbit yang dapat melakukan tugas pembersihan sistem, klo di windows namanya c-cleaner. Untuk mudahnya langsung install saja. Contoh kali ini menggunakan sistem operasi Linux Ubuntu 12.04 :
  • Buka terminal dan jalankan perintah dibawah ini :
          $sudo apt-get install bleachbit
  • proses instalasi telah selesai, coba jalankan aplikasi bleachbit. Untuk jalan mudahnya ketikan perintah "bleachbit" pada terminal tanpa tanda petik. cara menggunakan aplikasi bleachbit cukup mudah hanya dengan memilih cache mana yang ingin dibersihkan kemudian klik menu clean :
     

Selasa, 14 Januari 2014

Pointer Pada Bahasa Pemrograman C++

Pada pemrograman C++ sangat penting pemahaman tentang pointer karena dapat digunakan untuk mengkases alamat pada memori dan meningkatkan kinerja yang dilakukan secara berulang. Pointer adalah sebuah variable yang nilainya merupakan lokasi memori dari variabel lain. Variabel biasa sifatnya statis, sedangkan pointer sifatnya dinamis dan lebih fleksibel. Jika variabel pointer tidak memiliki nilai berarti pointer tersebut bernilai null, disebut sebagai dangling pointer karena nilainya tidak diinisialisasi dan tidak dapat diprediksi.
  • Deklarasi Variabel Pointer 
    Pendeklarasian variabel pointer menggunakan tanda * (asterik), jika ingin menampilkan nilai dari alamat yang dirujuk oleh variabel pointer menggunakan tanda & (ampersand). Pada tipe data array dapat dikatakan sebagai constant pointer.
  • Contoh Penggunaan Pointer
#include <iostream>
using namespace std;

int main(){
int *to_a; //variable pointer
float *to_b; //variable pointer
int a = 5;
float b = 7.8;
to_a = &a;
to_b = &b;
cout << "alamat a =" << to_a << " nilai a =" << *to_a << endl;
cout << "alamat b =" << to_b << " nilai b =" << *to_b << endl;
return 0;
}
          Keluaran Program :





Gabungkan File PDF menggunakan PDF-Shuffler Pada Linux Ubuntu 12.04

Aplikasi PDF-Shuffler merupakan aplikasi yang cukup mudah untuk digunakan karena sudah menggunakan GUI (Grafik User Interface) jadi tidak main terminal lagi. Aplikasi PDF-Shuffler dibuat menggunakan python yang memiliki fungsi untuk menggabungkan, Split, rotasi, crop dan menyusun kembali halaman file PDF. 

Proses instalasi dan penggunaan cukup mudah, untuk lebih jelasnya kita langsung praktek saja :
  • Bukalah terminal anda, kemudian jalankan perintah dibawah ini. 
           $ sudo apt-get install pdfshuffler
  •  Jika proses instalasi berhasil, bukalah aplikasi PDF-Shuffler kemudian gabungkanlah file - file pdf yang ingin digabungkan. Pertama klik tanda + pada menu PDF-Shuffler, jika telah selesah memilih file yang ingin digabungkan klik menu export. 


Gabungkan File Jadi 1 Menggunakan Perintah cat Pada Linux

Para netter yang suka online sambil download - download game, film dll, tapi data yang didownload bagian perbagian jadi perlu dilakukan penggabungan menjadi 1. Pada sistem operasi Linux terdapat perintah cat yang dijalankan melalui terminal dapat melakukan penggabungan file menjadi 1. 

Untuk lebih mudahnya kita langsung saja praktek untuk menggabungkan 3 part film yang telah saya download. 
  • Pertama masukalah kedalam folder dimana bagian - perbagian film tersebut berada, kemudian jalankan perintah cat (bagian1) (bagian2) (bagian3) > namaFilm <tanpa kurang buka dan tutup>. untuk lebih jelasnya bisa lihat gambar dibawah ini :        


  • Hasil dari penggabungan bagian - perbagian file film siap untuk kita tonton

Metode Numerik Diferensiasi Metode Selisih Tengahan Dengan C++

Metode selisih tengahan merupakan metode yang mengambil nilai dari dua titik sekitar dari titik yang akan diukur. Rumus metode selisih tengahan :
Tafsiran geometri metode selisih tengahan :
Contoh kode program C++ penyelesaian metode selisih tengahan untuk persamaan f = x^x^x.
 
#include <iostream>
#include <math.h>
#include <stdio.h>


using namespace std;
float tengahan(float x, float h);


int main(){
float x1,h1;
cout << "masukan nilai h :";
cin >> h1;
cout << "masukan nilai x :";
cin >> x1;
cout << "selisih tengahan fungsi x^x^x :";
cout << tengahan(x1,h1);
return 0;
}


float tengahan(float x, float h){
float f,f1,f2,f3,f4,f5,f6;
f = x+h;
f1 =pow(f,f);
f2 =pow(f,f1);
f3= x-h;
f4 =pow(f3,f3);
f5 =pow(f3,f4);
f6= (f2 - f5)/(2*h);
return f6;
}

keluaran program :

Metode Numerik Diferensiasi Metode Selisih Mundur Dengan C++

Metode selisih mundur merupakan kebalikan dari metode selisih maju. Rumus metode selisih mundur :
Tafsiran geometri untuk metode selisih mundur :

Contoh kode program C++ penyelesaian metode selisih mundur untuk persamaan f = x^x^x.
#include <iostream>
#include <math.h>
#include <stdio.h>
using namespace std;
float selisihMundur(float x, float h);


int main(){
float x1,h1;
cout << "masukan nilai h :";
cin >> h1;
cout << "masukan nilai x :";
cin >> x1;
cout << "selisih mundur fungsi x^x^x :";
cout << selisihMundur(x1,h1);
return 0;
}


float selisihMundur(float x, float h){
float f,f2,f3,f4;

f = x-h;
f2 =pow(f,f);
f3 =pow(f,f2);
f4 = (x-f3)/h;
return f4;
}

keluaran program



Metode Numerik Diferensiasi Metode Selisih Maju Dengan C++

Metode selisih maju merupakan metode yang mengadopsi secara langsung rumus diferensial :
Pemberian nilai h diharapkan pada nilai yang kecil agar errornya kecil, kemudian untuk menghitung error yang dihasilkan menggunakan rumus dibawah ini :
Untuk mempermudah pemahaman maka lebih baik kita berlatih untuk menghitung persamaan menggunakan metode selisih maju pada kesempatan kali ini saya akan menggunakan bahasa pemrograman c++. Pada kasus ini kita akan menyelesaikan permasalahan dari persamaan f = x^x^x,

Implementasi penyelesaian dalam bahasa pemrograman C++.

#include <iostream>
#include <math.h>
#include <stdio.h>
using namespace std;
float selisihMaju(float x, float h);

int main(){
float x1,h1;
cout << "masukan nilai h :";
cin >> h1;
cout << "masukan nilai x :";
cin >> x1;
cout << "selisih maju fungsi x^x^x :";
cout << selisihMaju(x1,h1);
return 0;
}

float selisihMundur(float x, float h){
float f,f2,f3,f4;
f = x-h;
f2 =pow(f,f);
f3 =pow(f,f2);
f4 = (x-f3)/h;
return f4;
}

keluaran program

Senin, 13 Januari 2014

Pengenalan Metode Numerik

Walau saya bukan ahli matematika, bahkan bisa dibilang jika bertemu pelajaran atau mata kuliah yang berhubungan dengan matematika adalah mimpi buruk. Tapi karena saya sudah menetapkan hati untuk mengambil jurusan Teknik Informatika jadi mau gak mau harus bisa dan belajar yang namanya matematika dan metode numerik sangat erat hubungannya dengan matematika. So jangan menyerah !

Metode numerik merupakan suatu penyelesaian masalah berbentuk angka dan solusi yang didapat menghampiri atau mendekati solusi sejati sehingga bisa dikatakan juga metode numerik adalah solusi hampiran atau pendekatan, akan tetapi solusi yang dihasilkan dapat dibuat seteliti yang kita inginkan. misalkan solusi sejati adalah 1 maka metode numerik memberikan solusi 0.999. Solusi yang diberikan oleh metode numerik tidak tepat sama dengan solusi sejati, sehingga terdapat selisih antara keduanya, yang disebut dengan galat (error).

Metode numerik digunakan untuk menyelesaikan permasalahan dalam dunia sains dan teknologi menggunakan persamaan metematika. Pedekatan metode numerik digunakan karena tidak mungkin untuk dilakukan perhitungan oleh manusia dan analitik. Berikut gambaran proses penyelesaian menggunakan metode numerik :

   


Minggu, 12 Januari 2014

Deteksi Tepi Metode Sobel Menggunakan C++

Dalam proses segmentasi gambar citra dapat dilakukan menggunakan deteksi tepi salah satunya menggunakan metode sobel. Metode sobel merupakan pengembangan metode deteksi tepi Robert dengan menggunakan filter HPF (High Pass Filter) yang diberi 1 angka 0 penyangga. kelebihan dari metode sobel adalah kemampuan untuk mengurangi noise sebelum melakukan perhitangan deteksi tepi.

Metode sobel menggunakan kernel dengan ukuran 3x3 piksel untuk perhitungan gradientnya. 


Metode sobel melakukan deteksi tepi dengan memperhatikan tepi vertikal dan horisontal, berikut ini susunan piksel (x,y) metode sobel.


Kemudian untuk tahap akhir akan dilakukan proses perhitungan besaran gradient menggunakan rumus dibawah ini. 


Berikut ini adalah kode program implemtasi metode sobel menggunakan c++ dikombinasikan dengan OpenCV.
 
#include<iostream>
#include<cmath>
#include<opencv2/imgproc/imgproc.hpp>
#include<opencv2/highgui/highgui.hpp>

using namespace std;
using namespace cv;
 //hitung gradient x
int xGradient(Mat image, int x, int y){
    return image.at<uchar>(y-1, x-1) +
                2*image.at<uchar>(y, x-1) +
                image.at<uchar>(y+1, x-1) -
                image.at<uchar>(y-1, x+1) -
                2*image.at<uchar>(y, x+1) -
                image.at<uchar>(y+1, x+1);
}
//hitung gradient y
int yGradient(Mat image, int x, int y){
    return image.at<uchar>(y-1, x-1) +
                2*image.at<uchar>(y-1, x) +
                image.at<uchar>(y-1, x+1) -
                image.at<uchar>(y+1, x-1) -
                2*image.at<uchar>(y+1, x) -
                image.at<uchar>(y+1, x+1);
}

int main(){
      Mat src, dst;
      int gx, gy, sum;

      // Load gambar
      src = imread("moko/3.5.jpg", CV_LOAD_IMAGE_GRAYSCALE);
      dst = src.clone();
      if( !src.data )
      { return -1; }

        for(int y = 0; y < src.rows; y++)
            for(int x = 0; x < src.cols; x++)
                dst.at<uchar>(y,x) = 0.0;

        for(int y = 1; y < src.rows - 1; y++){
            for(int x = 1; x < src.cols - 1; x++){
                gx = xGradient(src, x, y);
                gy = yGradient(src, x, y);
                sum = sqrt(gx*gx + gy*gy);
                sum = sum > 255 ? 255:sum;
                sum = sum < 0 ? 0 : sum;
                dst.at<uchar>(y,x) = sum;
            }
        }

        namedWindow("final");
        imshow("final", dst);

        namedWindow("initial");
        imshow("initial", src);

      waitKey();

    return 0;
}

Gambar asli moko (benda budaya kepulauan Alor)


Gambar hasil inisialisasi


Gambar hasil perhitungan metode Sobel