• RSS
  • Facebook
  • Twitter
Comments

Saat puji menyanjung diri..
Ku ucap hamdalah atasnya..
Karena segala puji hanya pantas untuk Diri-Nya..
Sedangkan diri hanya terpuji karena Ia menutupi aib diri ini..

Sekalipun cela mendera diri..
Ku ucap hamdalah pula atasnya..
Karena jika bukan atas rahmat-Nya menutupi aib lainnya....
Maka jutaan aib yang lebih cela akan terungkap dari diri yang hina ini..

Alhamdulillah..
Segala puji hanya bagi Allah..
Semoga Ia mengampuni hamba-Nya yang berlumur dosa ini..
[...]

Categories:
Comments



Komputasi Teknik untuk Solusi bagi Jakarta:
Perancangan Ergonomisme Filter Portable Bertenaga Manusia untuk Lokasi Bencana Banjir Terisolir
Disusun oleh: Ihsan Ahmad Zulkarnain
Email: ihsan.a.zulkarnain@gmail.com

Abstraksi

Pengadaan air bersih bagi korban bencana banjir di lokasi yang terisolir, khususnya daerah rawan bencana di Jakarta, sangatlah penting untuk menjaga kesehatan dan kebersihan para korban bencana. Berangkat dari latar belakang itu, tim PKM-KC dari Teknik Industri berinisiatif untuk merancang alat filter portable bertenaga manusia agar penggunaannya dapat menjangkau daerah yang terisolir, yakni daerah bencana dimana listrik terputus dan lokasi tidak dapat dijangkau oleh truk penyuling air bersih. Perancangan alat filter portable tersebut harus dianalisa terlebih dahulu mengenai beban tekanannya agar tetap ergonomis untuk menghasilkan laju produksi air bersih yang cukup. Komputasi Teknik adalah solusinya. Dengan komputasi teknik, dinamika aliran melalui media berpori (filter) dapat dilakukan dengan bantuan perangkat lunak CFDSOF. Pola jatuh tekanan terhadap aliran dan ukuran-mesh juga dapat direpresentasikan ke dalam persamaan dengan membuat program metode least square dengan penyelesaian sistem persamaan linear metode Gauss Jordan.
Keywords: Filter portable, jatuh tekanan, aliran media berpori

Latar Belakang

Pentingnya air dalam kehidupan manusia adalah mutlak. Air merupakan sumber kehidupan. Bumi tempat manusia tinggal, 2/3 komponennya adalah air. 70% komposisi tubuh manusia sendiri tersusun dari air. Air juga merupakan kebutuhan dasar manusia. PBB memperkirakan bahwa setiap orang membutuhkan 20-50 liter per hari untuk minum dan pekerjaan harian seperti memasak dan mencuci.
Dalam kondisi teraktual, Indonesia masih berhadapan dengan musim kemarau yang berkepanjangan dan musim hujan dengan curah hujan tinggi. Pada musim kemarau sumber air yang dapat diandalkan oleh masyarakat adalah sumber-sumber air primer seperti air tanah dan air sungai. Namun, air tersebut cenderung keruh. Di lain sisi, pada musim hujan air berlimpah, tetapi juga dalam keadaan keruh dan tidak laik guna.
Sebagai contoh kasus adalah kekeringan yang terjadi di Jogjakarta. Dikutip dari antaranews.com, sebanyak 2.096 warga Sleman, Jogjakarta terancam kekurangan air bersih. Air yang tersedia tidak laik pakai, sebagai solusi pemerintah setempat menyediakan 9 – 10 tangki. Namun hal tersebut belum juga cukup.
Di sisi lain, curah hujan yang tinggi tidak menjadi “obat” bagi masalah kekeringan yang terjadi hampir di seluruh wilayah di Indonesia. Curah hujan yang tinggi justru menjadi masalah baru. Pasalnya, air hujan yang turun tidak mampu diserap oleh tanah dengan baik seiring dengan berkurangnya lahan resapan air di Indonesia terlebih di kota-kota besar seperti Jakarta.
Ketidaktersediaan air baku saat musim kemarau dan banjir biasanya diatasi pemerintah dengan mengirim tangki-tangki air yang kemudian dibagikan ke masyarakat. Ada pula orang-orang yang menjual air keliling menggunakan jerigen. Namun, hal tersebut tidak efektif dan tidak menjangkau ke semua penduduk.
Dikutip dari portal berita Media Indonesia online (www.mediaindonesia.com) yang ditulis pada 22 Juni 2012 lalu, sebanyak 18 kecamatan di Kabupaten Gunungkidul, DI Yogyakarta, rawan kekeringan saat musim kemarau. Kepala Dinas Sosial, Tenaga Kerja, dan Transmigrasi (Dinsoskertrans) Kabupaten Gunungkidul Dwi Warna Nugraha mengatakan akan mengajukan permohonan mengedrop bantuan air ke semua kecamatan seperti tahun 2011 lalu.
Dikutip dari artikel pada portal berita www.metrotvnews.com, pada bulan Juli 2012 terjadi banjir bandang di Sumatra Barat yang mengakibatkan krisis air bersih, utamanya di daerah Padang. Akibatnya, ratusan warga berebut air bersih yang disupalai donatur. Setiap harinya, dua mobil tangki air bersihkan dibagi-bagikan secara gartis kepada masyarakat. Sumber air itu sendiri diperoleh dari bawah Gunung Talang, Kabupaten Solok yang letaknya jauh dari kota Padang.
Berangkat dari latar belakang tersebut, tim Program Kreatifitas Mahasiswa – Karya Cipta (PKM-KC) dari Teknik Industri berinisiatif untuk menciptakan sebuah filter portable yang dapat menjangkau daerah terisolir dan hanya bertenagakan manusia untuk pengoperasiannya.
Dalam perancangan karya ciptanya, tim PKM-KC yang beranggotakan dua orang mahasiswa Teknik Industri, satu orang mahasiswa Fakultas Kesehatan Masyarakat, dan satu orang mahasiswa Fakultas Ilmu Budaya ini kemudian mencoba berkonsultasi kepada mahasiswa-mahasiswa dari Teknik Mesin yang dapat membantu mereka membuat simulasi untuk memperkirakan performa dari rancangan mereka terlebih dahulu sebelum akhirnya mereka membuat prototipe dari produk mereka. Setelah berkonsultasi ke beberapa mahasiswa dan dosen Teknik Mesin, akhirnya mereka mendapat rekomendasi untuk berkonsultasi kepada saya. Berhubung saya juga sedang mempersiapkan konsep tugas besar mata kuliah komputasi teknik, maka saya sangat antusias untuk membantu mereka dan menjadikan permasalahan “Perancangan Ergonomisme Filter Portable Bertenaga Manusia untuk Lokasi Bencana Banjir Terisolir” ini sebagai topik dari tugas besar saya untuk mata kuliah komputasi teknik.

Deskripsi Permasalahan

Permasalahan yang ingin diangkat pada tugas besar mata kuliah komputasi teknik ini adalah simulasi performa rancangan produk filter portable seperti pada gambar 1.
Gambar 1. Gambar rancangan produk filter portable.
(a) adalah bagian masuk aliran air yang masih kotor, (b) adalah bagian keluar aliran air yang telah disaring, (c) adalah pompa tangan manual untuk memompakan air dengan tenaga manusia, (d) adalah filter pertama dengan ukuran mesh-filter yang relatif lebih besar sebagai media penyaring tingkat pertama, dan (e) adalah filter kedua dengan ukuran mesh-filter yang relatif lebih kecil sebagai media penyaring tingkat kedua.
Untuk membuat simulasi performa ini, hal-hal yang harus dipertimbangkan antara lain:
1.      Besar jatuh tekanan akibat aliran melalui mesh filter yang divariasikan ukuran mesh-nya.
2.      Batas ergonomisme berdasarkan standar kerja, kecepatan, dan gaya lengan manusia mengoperasikan pompa tangan manual untuk produk filter portable ini.
Adapun dari ketiga permasalahan tersebut, keluaran yang ingin dihasilkan dari pembuatan simulasi ini adalah berupa spesifikasi performa produk filter portable, yakni laju produksi volume air bersih per menit, untuk berbagai variasi kombinasi ukuran mesh filter.

Metode

Sesuai dengan beberapa hal yang harus dipertimbangkan dalam permasalahan ini, maka metode penyelesaiannya pun dilakukan bertahap sesuai dengan hal-hal tersebut.
Pertama, untuk mengestimasi besarnya jatuh tekanan akibat aliran melalui mesh-filter, maka akan dilakukan pemodelan aliran berdasarkan dinamika fluida komputasional dengan memanfaatkan perangkat lunak CFDSOF sesuai dengan dimensi dari filter dan juga rumah filternya.
Gambar 2. Tampilan perangkat lunak dinamika fluida komputasional CFDSOF
Jatuh tekanan yang dihasilkan adalah fungsi dari kecepatan aliran yang dihasilkan oleh pompa. Oleh karena itu, perlu juga dihitung besar kecepatan aliran air yang dihasilkan pompa tangan manual tersebut berdasarkan kecepatan putaran yang dioperasikan oleh pengguna.
Kemudian, hasil kalkulasi kecepatan putaran pompa, kecepatan aliran, dan tekanan itu digunakan untuk menghitung beban gaya dan kerja yang harus ditanggung oleh pengguna yang mengoperasikan produk filter portable ini. Dengan mempertimbangkan faktor ergonomis, maka akan dihasilkan spesifikasi performa produksi air bersih oleh filter portable tersebut.

Landasan Teori dan Studi Literatur

Dinamika aliran melalui media berpori

Pada dinamika aliran melalui media berpori, landasan teori yang paling sering digunakan adalah hukum Darcy mengenai aliran melalui media berpori. Walaupun hukum Darcy pertama kali ditentukan berdasarkan hasil eksperimen oleh Darcy, namun sebenarnya hukum Darcy adalah penurunan dari hukum kekekalan momentum, yakni persamaan Navier-Stokes melalui homogenisasi.
 
Gambar 3. Diagram skematik Hukum Darcy untuk analisa dinamika aliran melalui media berpori
Hukum Darcy adalah hubungan proporsional sederhana antara laju aliran melalui media berpori, viskositas fluida, dan jatuh tekanan sepanjang jarak yang dilalui. Hukum Darcy dapat direpresentasikan dalam gambar 3 dan persamaan berikut,
Dimana, Q adalah laju aliran volumetrik (m3/s), k adalah konduktivitas aliran pada media berpori (fungsi dari permeabilitas) (m2), A adalah luas penampang aliran (m2), µ adalah viskositas dinamik fluida (Pa.s), dP adalah jatuh tekanan (Pa), dan dx adalah jarak yang dilalui aliran pada media berpori (m).

Ergonomisme tangan manusia

Ukuran ergonomisme tangan manusia dalam memberikan gaya itu tergantung pada posisi tangan terhadap pundak seperti pada gambar 4.
Gambar 4. Posisi tangan memberikan gaya terhadap pundak
Pada setiap posisinya, gaya maksimum yang dapat diberikan oleh manusia terangkum pada tabel 1.
Tabel 1. Ergonomisme gaya tangan manusia
Sudut A
% jangkauan
sudut B
Tipe
Gaya
[lbF]
[N]
30
100
0
Dorong
28
125


0
Tarik
23
102


60
Dorong
35
156


60
Tarik
33
147

50
0
Dorong
20
89


0
Tarik
19
85


60
Dorong
25
111


60
Tarik
28
125
0
100
0
Dorong
30
133


0
Tarik
25
111


60
Dorong
38
169


60
Tarik
33
147

50
30
Dorong
25
111


30
Tarik
25
111


60
Dorong
32
142


60
Tarik
33
147
-30
100
0
Dorong
27
120


0
Tarik
29
129


60
Dorong
33
147


60
Tarik
39
173

50
0
Dorong
27
120


0
Tarik
25
111


60
Dorong
34
151


60
Tarik
36
160

Model Komputasi dan Simulasi

Pembuatan simulasi aliran dengan CFDSOF

Pertama, buat pemodelan terlebih dahulu dari sistem filter portable ini. Saya memberi batasan aliran yang disimulasikan adalah aliran pada housing filter seperti pada gambar 5 dan 6.
Description: D:\My Study\My Master Degree\Engineering Computation\Grand Task\Images\ZHD0SDiagram.jpg
Gambar 5. Gambar rinci housing filter portable
Description: D:\My Study\My Master Degree\Engineering Computation\Grand Task\Images\7160446-0-large.jpg
Gambar 6. Gambar potongan housing filter portable
Dengan rancangan seperti gambar tersebut, dibuatlah model grid yang disederhanakan menjadi 2 dimensi dengan memanfaatkan boundary layer jenis axis-symmetry (lihat gambar 7).
Gambar 7. Boundary layers axis-symmetry
Sehingga penyederhanaan gridnya menjadi domain seperti pada gambar 8 dan gambar 9.
Gambar 8. Setting input domain
Gambar 9. Susunan grid pada CFDSOF
Kemudian, kondisi sempadan yang diset antara lain kecepatan masuk inlet divariasikan sebesar: 0,0242 m/s (setara 5 liter/menit) 0,0484 m/s (setara 10 liter/menit), dan 0,0726 m/s setara (15 liter/menit); dan permeabilitas media berpori (kuadrat dari ukuran mesh filter) divariasikan sebesar: 1 x 10-12 m2 (untuk ukuran mesh 1 µm)  9 x 10-12 m2 (untuk ukuran mesh 3 µm), dan 2,5 x 10-11 m2 (untuk ukuran mesh 5 µm)
Hasil simulasi pada CFDSOF tersebut kemudian akan dibuatkan regresinya dalam bentuk persamaan:
Dimana,  adalah jatuh tekanan [mbar], Q adalah laju aliran volumetrik [m3/s], dan X adalah ukuran mesh [µm]

Hasil dan Pembahasan / Analisis

Hasil Simulasi CFD

Berikut ini adalah kilasan-kilasan hasil simulasi dinamika aliran melalui media berpori dengan memanfaatkan perangkat lunak CFDSOF.
Gambar 10. Plot residu iterasi
Pada gambar 10, ditunjukkan bahwa simulasi berlangsung konvergen hingga 10-4 satuan, kecuali tekanan. Residu tekanan yang masih cukup tinggi, antara 10-2 sampai dengan 10-1 satuan ini dikarenakan besarnya jatuh tekanan yang cukup tinggi pada simulasi (hingga puluhan ribu Pascal). Oleh karena itu, residu tekanan dengan nilai tersebut masih dapat dikatakan konvergen juga.
Gambar 11. Vektor besar kecepatan aliran (tampak cermin)
Gambar 12. Kontur besar kecepatan aliran (tampak cermin)
Gambar 13. Kontur fungsi aliran - Stream function (tampak cermin)
Pada gambar 11, 12, dan 13, ditunjukkan bahwa kecepatan aliran ketika melalui filter hampir seragam. Hal ini dikarenakan besarnya jatuh tekanan ketika melalui filter sangat besar (lihat gambar 14), sehingga aliran cenderung mengalir ke bawah terlebih dahulu, baru kemudian menembus filter dengan kecepatan yang hampir seragam searah radial.
Jatuh tekanan yang terjadi pun didominasi oleh jatuh tekanan yang diakibatkan aliran melalui media berpori (hingga 557 mbar) seperti yang ditunjukkan dalam kontur tekanan statik relatif pada gambar 14 dan profil tekanan pada gambar 15.  Tampak bahwa tekanan menurun sangat drastis ketika aliran melalui filter.
Gambar 14. Kontur tekanan statik relatif (tampak cermin)
Gambar 15. Profil tekanan statik relatif (tampak cermin)
Hasil-hasil tersebut adalah hasil dinamika aliran untuk kondisi sempadan aliran masuk 0,0484 m/s (setara 10 liter/menit) dan permeabilitas media berpori (kuadrat dari ukuran mesh filter) divariasikan sebesar: 1 x 10-12 m2 (untuk ukuran mesh 1 µm). Sedangkan untuk kondisi sempadan lainnya, berikut ini adalah perbandingan hasilnya.
  
Gambar 15. Profil tekanan statik relatif dengan variasi kecepatan inlet (dari kiri ke kanan): 0,0242 m/s, 0,0484 m/s, dan 0,0726 m/s) pada filter ukurun 1 µm dengan permeabilitas 1 x 10-12 m2

  
Gambar 16. Profil tekanan statik relatif dengan variasi kecepatan inlet pada filter ukurun 3 µm dengan permeabilitas filter  9 x 10-12 m2
  
Gambar 17. Profil tekanan statik relatif dengan variasi kecepatan inlet pada filter ukurun 5 µm dengan permeabilitas filter  25 x 10-12 m2
Pada gambar 15, 16, dan 17, ditunjukkan bahwa jatuh tekanan menaik relatif terhadap kenaikan kecepatan aliran. Dan ditunjukkan juga bahwa jatuh tekanan menurun seiring dengan kenaikan ukuran mesh-filter. Hasil jatuh tekanan pada setiap kondisi dirangkum pada tabel 2 berikut.
Tabel 2. Hasil jatuh tekanan dengan variasi debit dan ukuran mesh-filter.
kecepatan aliran [m/s]
Debit [lt/menit]
Jatuh tekanan [mbar]
Ukuran Mesh-filter
1 µm
3 µm
5 µm
0.0242
5
279
31
11.2
0.0484
10
557
62
22.4
0.0726
15
836
93
33.5

Hasil tersebut kemudian diregresi untuk mendapatkan persamaan sebagai berikut,
Dimana,  adalah jatuh tekanan [mbar], Q adalah laju aliran volumetrik [m3/s], dan X adalah ukuran mesh [µm]
Untku melakukan regresi pangkat tersebut, maka kedua ruas persamaan diberi logaritma basis 10, sehingga persamaan menjadi:
Sehingga persamaan tersebut diregresi dengan menggunakan metode least square error, yakni dengan menyelesaikan sistem persamaan berikut:


Sistem persamaan tersebut dapat diselesaikan dengan menggunakan metode Gauss-Jordan. Sehingga, penyelesaian sistem persamaan linear tersebut dapat diselesaikan dengan membuat script programming sebagai berikut:
Script Gauss Jordan:
function y=gaussjordan_by_ihsan(B)
    for m=1:size(B,1) //row
        if B(m,m)==0
               for p = 1:size(B,1)
                   if B(p,m)~=0
                       temp=B(m,:);
                       B(m,:)=B(p,:);
                       B(p,:)=temp;
                       disp(B);
                       break;
                   end
               end
           end
           B(m,:)=B(m,:)./B(m,m);
           disp(B);
           for ma=m+1:size(B,1)
              B(ma,:)=B(ma,:)-(B(ma,m)./B(m,m)).*B(m,:);
              disp(B);
           end
    end
    for m=1:size(B,1) //row
        for n=m+1:size(B,1)
            B(m,:)=B(m,:)-(B(m,n)./B(n,n)).*B(n,:);
            disp(B);
        end
    end
    y=B(:,size(B,2));
endfunction


Script Sistem Persamaan Linear:
function y=lin_equa_sys_by_ihsan()
    a=input('jumlah variabel bebas = ')
    tampil='';
    for p = 1:a
        if p==a then
            tampil=tampil+' a'+string(p)+'.x'+string(p);
            break;
        end
        tampil=tampil+' a'+string(p)+'.x'+string(p)+' +';
    end
    tampil=tampil+ ' = y';
    mprintf(tampil+'\n');
    for m = 1:a //row
        mprintf('persamaan ke-%d', m)
        for n = 1:a //column
            A(m,n)=input('masukkan nilai koefisien a'+string(n)+' = ');
        end
        A(m,a+1)=input('masukkan nilai y = ')
    end
    mprintf('\n');
    for m=1:a
        tampila='';
        for n = 1:a
            if n==a then
                tampila=tampila+string(A(m,n))+'.x'+string(n);
                break;
            end
            tampila=tampila+string(A(m,n))+'.x'+string(n)+' +';
        end
        tampila=tampila+ ' = '+string(A(m,a+1));
        mprintf(tampila+'\n');
    end
    y=gaussjordan_by_ihsan(A);
endfunction


Script regresi pangkat:
function y=powerfit_by_ihsan()
    Q=input('masukkan data Q = ');
    X=input('masukkan data X = ');
    dP=input('masukkan data dP = ');
    n=length(dP);
    logQ=log10(Q);
    logX=log10(X);
    logdP=log10(dP);
    A(1,1)=n;
    A(1,2)=sum(logQ);
    A(1,3)=sum(logX);
    A(2,1)=sum(logQ);
    A(2,2)=sum(logQ.*logQ);
    A(2,3)=sum(logQ.*logX);
    A(3,1)=sum(logX);
    A(3,2)=sum(logX.*logQ);
    A(3,3)=sum(logX.*logX);
    B(1,1)=sum(logdP);
    B(2,1)=sum(logdP.*logQ);
    B(3,1)=sum(logdP.*logX);
    Hasil=gaussjordan_by_ihsan([A,B]);
    a=10.^Hasil(1);
    b=Hasil(2);
    c=Hasil(3);
    y=[a;b;c];
endfunction


Demonstrasi:
-->powerfit_by_ihsan()
masukkan data Q = Q
masukkan data X = X
masukkan data dP = dP

    1.           0.9583538    0.3920304    1.921157  
    8.6251838    8.6152491    3.3813344    16.919177 
    3.5282738    3.3813344    2.1486113    5.249069  

    1.           0.9583538    0.3920304    1.921157  
    0.           0.3492719    4.441D-16    0.3488445 
    3.5282738    3.3813344    2.1486113    5.249069  

    1.    0.9583538    0.3920304    1.921157  
    0.    0.3492719    4.441D-16    0.3488445 
    0.    0.           0.7654206  - 1.5292989 

    1.    0.9583538    0.3920304    1.921157  
    0.    1.           1.271D-15    0.9987765 
    0.    0.           0.7654206  - 1.5292989 

    1.    0.9583538    0.3920304    1.921157  
    0.    1.           1.271D-15    0.9987765 
    0.    0.           0.7654206  - 1.5292989 

    1.    0.9583538    0.3920304    1.921157  
    0.    1.           1.271D-15    0.9987765 
    0.    0.           1.         - 1.9979849 

    1.    0.    0.3920304    0.9639758 
    0.    1.    1.271D-15    0.9987765 
    0.    0.    1.         - 1.9979849 

    1.    0.    0.           1.7472467 
    0.    1.    1.271D-15    0.9987765 
    0.    0.    1.         - 1.9979849 

    1.    0.    0.    1.7472467 
    0.    1.    0.    0.9987765 
    0.    0.    1.  - 1.9979849 
 ans  =

    55.878747 
    0.9987765 
  - 1.9979849

Sehingga, didapatkan persamaan hasil regresi,
Dimana,  adalah jatuh tekanan [mbar], Q adalah laju aliran volumetrik [liter/menit], dan X adalah ukuran mesh [µm].

Penutup

Kesimpulan

Jatuh tekanan aliran melalui media berpori untuk rancangan produk filter portable tersebut direpresentasikan dalam persamaan berikut

Saran

Pada simulasi CFD yang dilakukan, ada sedikit kekeliruan dalam membuat setting boundary layer axis symmetry. Untuk hasil komputasi yang lebih akurat, maka sebaiknya diperbaiki setting boundary layer axis symmetry tersebut agar hasil komputasi memang menunjukkan keseragaman searah tangensial.

Daftar Pustaka

Rietsch. 2010. An Introduction to Scilab from a Matlab User’s Point of View.
Zimmerman, R. W. 2002. Flow in Porous Media.



Lampiran

Mini Task
Task 1: Factorial
Script:
function [y]=factorial_by_ihsan()
    ulang = 1;
    while ulang == 1
        n=input('masukkan nilai faktorial yang ingin anda hitung -->')
        y=1;
        for i=1:n
            if i == 1 then
                mprintf('loop ke-%d , %d!',i, i)
            else
                mprintf('loop ke-%d , %d! = %d! x %d',i, i, i-1, i)
            end
            y=y*i;
            mprintf(' = %3.0f\n', y);
        end
        ulangkah=input('hitung lagi? (y/n) default:y -->','string');
        if ulangkah == 'n'
            ulang = 0;
        end
    end
endfunction


Demonstration:
-->exec('C:\Users\IHSAN AHMAD Z\Documents\Scilab\factorial_by_ihsan.sci', -1)

-->factorial_by_ihsan
masukkan nilai faktorial yang ingin anda hitung -->7
loop ke-1 , 1! =   1
loop ke-2 , 2! = 1! x 2 =   2
loop ke-3 , 3! = 2! x 3 =   6
loop ke-4 , 4! = 3! x 4 =  24
loop ke-5 , 5! = 4! x 5 = 120
loop ke-6 , 6! = 5! x 6 = 720
loop ke-7 , 7! = 6! x 7 = 5040
hitung lagi? (y/n) default:y -->n
 ans  =

    5040. 



Task 2: Distance Measurement
Script:
function Rmin=distance_by_ihsan()
    clear;
    A=zeros(input('masukkan jumlah titik lokasi = '),2);
    for m = 1:size(A,1)
        A(m,1)=input('masukkan koordinat-x lokasi titik ke-'+string(m)+' = ');
        A(m,2)=input('masukkan koordinat-y lokasi titik ke-'+string(m)+' = ');
    end
    b=input('tentukan titik lokasi terdekat dengan titik ke-');
    xmin=min(A(:,1));
    ymin=min(A(:,2));
    xmax=max(A(:,1));
    ymax=max(A(:,2));
    axesmin=min([xmin,ymin])-max([xmax-xmin,ymax-ymin])*0.2;
    axesmax=max([xmax,ymax])+max([xmax-xmin,ymax-ymin])*0.2;
    disp(A);
    figure(1);
    clf();
    plot(A(:,1),A(:,2),'gd');
    plot(A(b,1),A(b,2),'rx');
    a=gca()
    a.parent.figure_size=[400,400];
    a.isoview="on"
    a.data_bounds=[axesmin,axesmin;axesmax,axesmax];
    R=zeros(size(A));
    for m=1:b-1
        R(m,1)=((A(m,1)-A(b,1))^2+(A(m,2)-A(b,2))^2)^0.5;
    end
    R(b,1)=[%nan];
    for m=b+1:size(A,1)
        R(m,1)=((A(m,1)-A(b,1))^2+(A(m,2)-A(b,2))^2)^0.5;
    end
    Rmin=min(R(:,1));
    for m=1:size(R,1)
        if R(m,1)==Rmin
            titikke=m;
        end
    end
        plot(A(titikke,1),A(titikke,2),'bx');
    mprintf('titik terdekat dengan titik ke-%d adalah titik ke-%d\n',b,titikke);
    mprintf('dengan besar jarak %4.2f satuan jarak\n',Rmin);
endfunction



Demonstration:
 
-->exec('C:\Users\IHSAN AHMAD Z\Documents\Scilab\distance_by_ihsan.sci', -1)

-->distance_by_ihsan
masukkan jumlah titik lokasi = 4
masukkan koordinat-x lokasi titik ke-1 = 1
masukkan koordinat-y lokasi titik ke-1 = 3
masukkan koordinat-x lokasi titik ke-2 = 2
masukkan koordinat-y lokasi titik ke-2 = 2
masukkan koordinat-x lokasi titik ke-3 = 3
masukkan koordinat-y lokasi titik ke-3 = 1
masukkan koordinat-x lokasi titik ke-4 = 3
masukkan koordinat-y lokasi titik ke-4 = 5
tentukan titik lokasi terdekat dengan titik ke-2

    1.    3. 
    2.    2. 
    3.    1. 
    3.    5. 
titik terdekat dengan titik ke-2 adalah titik ke-3
dengan besar jarak 1.41 satuan jarak
 ans  =

    1.4142136 


Description: C:\Users\IHSAN AHMAD Z\Pictures\Engineering Computation\Display_Distance_Graph.PNG



Task 3: Determinant
Script:
function deter=determinant_by_ihsan(A)
    if size(A,1) ~= size(A,2)
        return;
    end
    if size(A,1)==2
        deter=A(1,1)*A(2,2)-A(1,2)*A(2,1);
    else
       for p = 1:size(A,2)
            for m = 2:size(A,1)
                na=0;
                for n = 1:size(A,2)
                    if n ~=p
                        na=na+1;
                        B(m-1,na)=A(m,n);
                    end
                end
            end
            if size(B,1)==2
                minorB(p)=B(1,1)*B(2,2)-B(1,2)*B(2,1);
            else
                minorB(p)=advdeta(B);
            end
            detB(p)=(-1)^(1+p)*A(1,p)*minorB(p);
        end
    end
    deter=sum(detB);
endfunction


Demonstration:
 
-->A=[1 2 3; 3 4 5; 6 7 9]
 A  =

    1.    2.    3. 
    3.    4.    5. 
    6.    7.    9. 

-->exec('C:\Users\IHSAN AHMAD Z\Documents\Scilab\determinant_by_ihsan.sci', -1)
Warning : redefining function: determinant_by_ihsan    . Use funcprot(0) to avoid this message


-->determinant_by_ihsan(A)
 ans  =

  - 2. 

-->det(A)
 ans  =

  - 2. 





Task 4: Gauss-Jordan
Script:
function y=gaussjordan_by_ihsan(B)
    for m=1:size(B,1) //row
        if B(m,m)==0
               for p = 1:size(B,1)
                   if B(p,m)~=0
                       temp=B(m,:);
                       B(m,:)=B(p,:);
                       B(p,:)=temp;
                       disp(B);
                       break;
                   end
               end
           end
           B(m,:)=B(m,:)./B(m,m);
           disp(B);
           for ma=m+1:size(B,1)
              B(ma,:)=B(ma,:)-(B(ma,m)./B(m,m)).*B(m,:);
              disp(B); 
           end
    end
    for m=1:size(B,1) //row
        for n=m+1:size(B,1)
            B(m,:)=B(m,:)-(B(m,n)./B(n,n)).*B(n,:);
            disp(B);
        end
    end
    y=B(:,size(B,2));
endfunction


Demonstration:
-->A
 A  =

    1.    2.    3. 
    3.    4.    5. 
    6.    7.    9. 

-->Y
 Y  =

    1. 
    3. 
    4. 

-->B=[A,Y]
 B  =

    1.    2.    3.    1. 
    3.    4.    5.    3. 
    6.    7.    9.    4. 

-->exec('C:\Users\IHSAN AHMAD Z\Documents\Scilab\gaussjordan_by_ihsan.sci', -1)
Warning : redefining function: gaussjordan_by_ihsan    . Use funcprot(0) to avoid this message


-->gaussjordan_by_ihsan(B)

    1.    2.    3.    1. 
    3.    4.    5.    3. 
    6.    7.    9.    4. 

    1.    2.    3.    1. 
    0.  - 2.  - 4.    0. 
    6.    7.    9.    4. 

    1.    2.    3.    1. 
    0.  - 2.  - 4.    0. 
    0.  - 5.  - 9.  - 2. 

    1.    2.    3.    1. 
    0.    1.    2.    0. 
    0.  - 5.  - 9.  - 2. 

    1.    2.    3.    1. 
    0.    1.    2.    0. 
    0.    0.    1.  - 2. 

    1.    2.    3.    1. 
    0.    1.    2.    0. 
    0.    0.    1.  - 2. 

    1.    0.  - 1.    1. 
    0.    1.    2.    0. 
    0.    0.    1.  - 2. 

    1.    0.    0.  - 1. 
    0.    1.    2.    0. 
    0.    0.    1.  - 2. 

    1.    0.    0.  - 1. 
    0.    1.    0.    4. 
    0.    0.    1.  - 2. 



 ans  =

    1.    0.    0.  - 1. 
    0.    1.    0.    4. 
    0.    0.    1.  - 2. 

-->inv(A)*Y
 ans  =

  - 1. 
    4. 
  - 2. 




Task 5: Linear Equations System
Script:
function y=lin_equa_sys_by_ihsan()
    a=input('jumlah variabel bebas = ')
    tampil='';
    for p = 1:a
        if p==a then
            tampil=tampil+' a'+string(p)+'.x'+string(p);
            break;
        end
        tampil=tampil+' a'+string(p)+'.x'+string(p)+' +';
    end
    tampil=tampil+ ' = y';
    mprintf(tampil+'\n');
    for m = 1:a //row
        mprintf('persamaan ke-%d', m)
        for n = 1:a //column
            A(m,n)=input('masukkan nilai koefisien a'+string(n)+' = ');
        end
        A(m,a+1)=input('masukkan nilai y = ')
    end
    mprintf('\n');
    for m=1:a
        tampila='';
        for n = 1:a
            if n==a then
                tampila=tampila+string(A(m,n))+'.x'+string(n);
                break;
            end
            tampila=tampila+string(A(m,n))+'.x'+string(n)+' +';
        end
        tampila=tampila+ ' = '+string(A(m,a+1));
        mprintf(tampila+'\n');
    end
    y=gaussjordan_by_ihsan(A);
endfunction


Demonstration:
-->exec('C:\Users\IHSAN AHMAD Z\Documents\Scilab\gaussjordan_by_ihsan.sci', -1)
Warning : redefining function: gaussjordan_by_ihsan    . Use funcprot(0) to avoid this message


-->exec('C:\Users\IHSAN AHMAD Z\Documents\Scilab\lin_equa_sys_by_ihsan.sci', -1)
Warning : redefining function: lin_equa_sys_by_ihsan   . Use funcprot(0) to avoid this message


-->lin_equa_sys_by_ihsan
jumlah variabel bebas = 2
 a1.x1 + a2.x2 = y
persamaan ke-1
masukkan nilai koefisien a1 = 1
masukkan nilai koefisien a2 = 2
masukkan nilai y = 3
persamaan ke-2
masukkan nilai koefisien a1 = 3
masukkan nilai koefisien a2 = 4
masukkan nilai y = 5

1.x1 +2.x2 = 3
3.x1 +4.x2 = 5

    1.    2.    3. 
    3.    4.    5. 

    1.    2.    3. 
    0.  - 2.  - 4. 

    1.    2.    3. 
    0.    1.    2. 

    1.    0.  - 1. 
    0.    1.    2. 
 ans  =

  - 1. 
    2. 





[...]