Senin, 27 Maret 2017

Bilangan Prima (SCILAB)

Dalam matematika, bilangan prima adalah bilangan asli yang lebih besar dari angka 1, yang faktor pembaginya adalah 1 dan bilangan itu sendiri. 2 dan 3 adalah bilangan prima. 4 bukan bilangan prima karena 4 bisa dibagi 2. Sepuluh bilangan prima yang pertama adalah 2, 3, 5, 7, 11, 13, 17, 19, 23 dan 29. (https://id.wikipedia.org/wiki/Bilangan_prima)

Kali ini Saya share code untuk memperoleh 100 bilangan prima pertama dengan menggunakan Scilab. Ada beberapa code yang Saya tampilkan di sini, untuk membandingkan seberapa cepat dan efektif code tersebut untuk memperoleh 100 bilangan prima pertama.

code pertama:
1. Asumsi awal semua bilangan dianggap sebagai bilangan prima.

2. Kemudian bilangan tersebut dicek dengan cara dibagi dengan semua bilangan bulat sebelumnya (yang lebih kecil). Jika sisa pembagian (modulo) ada yang sama dengan nol maka bilangan tersebut bukan bilangan prima. Atau Jika sisa pembagian (modulo) tidak ada yang sama dengan nol maka bilangan tersebut adalah bilangan prima.

3. Step 1 dan 2 dilakukan berulang-ulang sampai diperoleh 100 bilangan prima.


clear
clc

tic()

i=1;
x=2;
prima(i)=x
while (i<100)
    i=i+1;
    x=x+1;
    prima(i)=x
    for j=2:(x-1)
        sisa=modulo(x,j);
        if(sisa==0) then
            i=i-1;
            break;
        end
    end
end
disp(prima)

disp(toc())



code kedua:
1. Asumsi awal semua bilangan dianggap sebagai bilangan prima.

2. Kemudian bilangan tersebut dicek dengan cara dibagi dengan semua bilangan prima sebelumnya (yang lebih kecil). Jika sisa pembagian (modulo) ada yang sama dengan nol maka bilangan tersebut bukan bilangan prima. Atau Jika sisa pembagian (modulo) tidak ada yang sama dengan nol maka bilangan tersebut adalah bilangan prima.

3. Step 1 dan 2 dilakukan berulang-ulang sampai diperoleh 100 bilangan prima.


clear
clc

tic()

i=1;
x=2;
prima(i)=x
while (i<100)
    i=i+1;
    x=x+1;
    prima(i)=x
    for j=1:(i-1)
        sisa=modulo(x,prima(j));
        if(sisa==0) then
            i=i-1;
            break;
        end
    end
end
disp(prima)

disp(toc())
 



code ketiga:
1. Asumsi awal semua bilangan dianggap sebagai bilangan prima.

2. Kemudian bilangan tersebut dicek dengan cara dibagi dengan semua bilangan prima sebelumnya yang nilainya maksimal setengah dari bilangan yang dicek. Jika sisa pembagian (modulo) ada yang sama dengan nol maka bilangan tersebut bukan bilangan prima. Atau Jika sisa pembagian (modulo) tidak ada yang sama dengan nol maka bilangan tersebut adalah bilangan prima.

3. Step 1 dan 2 dilakukan berulang-ulang sampai diperoleh 100 bilangan prima.


clear
clc

tic()

i=1;
k=i;
x=2;
prima(i)=x
while (i<100)
    i=i+1;
    x=x+1;
   
    if (ceil(x/2)>prima(k)) then        //ceil==>pembulatan ke atas
        k=k+1;
    end
   
    prima(i)=x
    for j=1:k
        sisa=modulo(x,prima(j));
        if(sisa==0) then
            i=i-1;
            break;
        end
    end
end
disp(prima)

disp(toc())
 

Hasil:
Berikut screenshot hasil 100 bilangan prima pertama yang diperoleh. (setelah di arrange dalam bentuk matriks 10x10, kalo dalam MATLAB bisa menggunakan fungsi reshape)

Hasil Running 100 bilangan prima pertama (setelah di arrange dalam matriks 10x10)
Perbandingan konsumsi waktu untuk ketiga code tersebut: (aproximately)
code pertama: 5.878969 s
code kedua  : 1.398557 s
code ketiga : 0.939001 s

Yang terakhir dibuat dalam bentuk function untuk bisa memperoleh bilangan prima ke n. 


dalam bentuk function:

function [y]= bil_prima(ke)

i=1;
k=i;
x=2;
prima(i)=x
while (i<ke)
    i=i+1;
    x=x+1;
   
    if (ceil(x/2)>prima(k)) then        //ceil==>pembulatan ke atas
        k=k+1;
    end
   
    prima(i)=x
    for j=1:k
        sisa=modulo(x,prima(j));
        if(sisa==0) then
            i=i-1;
            break;
        end
    end
end
y=prima(ke);

endfunction



cara pemanggilan function:

//cara memanggil function

clear
clc

exec('/home/muhammadpuji/Desktop/Scilab/Belajar/05_function_bil_prima.sce', -1)         //mengaktifkan function bil_prima(ke)

tic()
ke=100;
y=bil_prima(ke);
disp(strcat(["Bilangan prima ke ",string(ke)," = ",string(y)],"","c"));

disp(strcat([string(toc()), " s"]));





Developed by:
Muhammad Nurul Puji
Project-G











Kamis, 02 Maret 2017

SCILAB: Aplikasi modifikasi isi file (sederhana)

Scilab is free and open source software for numerical computation providing a powerful computing environment for engineering and scientific applications. Scilab is released as open source under the CeCILL license (GPL compatible), and is available for download free of charge. Scilab is available under GNU/Linux, Mac OS X and Windows XP/Vista/7/8 (see system requirements).

Pada postingan kali ini, Sy share mengenai cara memodifikasi isi file tertentu (misal txt). Kasus awalnya adalah terkadang kita memiliki file dengan isi yang bercampur antara header (judul file) dengan isi file (bagian utama) dari file itu sendiri. Sedangkan untuk proses (misal pengolahan data) yang diperlukan hanya bagian utama dari isi file tersebut saja, sehingga bagian header malah akan mengganggu proses pengolahan data tersebut.

Contoh isi file yang bercampur antara bagian isi dengan header

Oleh karena itu perlu dilakukan penghilangan bagian header dari file itu sendiri. Secara sederhana hal ini dapat dilakukan dengan mengetahui bahwa bagian header selalu di awali dengan non number (bisa huruf atau spasi - bukan number).

Inti dari kode yang Sy buat disini adalah dilakukan pembacaan file yang akan di edit, pembacaan dilakukan baris by baris. Yang mana pada masing masing baris akan dilakukan pengecekan apakah pada bagian pertamanya berupa number atau non number. Dan jika pada bagian pertamanya berupa non number maka baris tersebut akan dicopy ke file baru (file baru untuk menyimpan hasil editan). Hal ini dilakukan sampai akhir baris dari file tersebut.

Berikut adalah source code menggunakan Scilab + GUI.

Desain GUI menggunakan guibuilder (Atoms tambahan di Scilab)

Source code 1

Source code 2

Berikut adalah tampilan saat running:

Tampilan awal

Select file

Loading file

Processing file

Finish
Program ini akan sangat membantu untuk mengedit file dengan jumlah baris yang sangat banyak. Kalo sedikit kan tinggal didelete biasa.hehehe

Berikut adalah hasil output file setelah diedit menggunakan program di atas:





Developed by: 
Muhammad Nurul Puji
Project-G

Cara mengetahui ip address raspberry atau perangkat lain yg terhubung pada wifi yg sama

1. Install nmap [jika belum ada]: sudo apt install nmap 2. Cek ip address komputer (yg akses ke wifi yang sama): ip addr misal hasilnya 192....