bab 1 - pengantar metode numerik dan scilab
DESCRIPTION
Pengantar metnumTRANSCRIPT
-
Bab 1 Pengantar Metode Numerik dan Scilab
Muhammad Haris Mahyuddin, S.T., M.Eng.
-
Metode Analitik vs Metode Numerik
Persoalan yang melibatkan model matematika banyak muncul dalam berbagai disiplin ilmu pengetahuan, seperti dalam bidang fisika, kimia, ekonomi, atau pada persoalan rekayasa (engineering)
Seringkali model matematika tersebut muncul dalam bentuk yang tidak ideal atau rumit. Model matematika yang rumit ini kadang-kadang tidak dapat diselesaikan dengan metode analitik
Metode analitik adalah metode penyelesaian model matematika dengan rumus-rumus aljabar yang sudah baku (lazim) dan yang memberikan solusi sesungguhnya (error sama dengan nol)
Contoh: 1. Tentukan akar-akar persamaan polinom berikut
2. Hitung nilai integral-tentu berikut:
Contoh di atas adalah contoh persoalan yang rumit, yang tidak bisa kita selesaikan dengan rumus aljabar seperti rumus abc yang terkenal itu ataupun dengan teknik integrasi sederhana yang kita tahu.
Dengan kata lain, kita tidak bisa memecahkan masalah di atas dengan menggunakan metode analitik atau metode sejati
Bila metode analitik tidak dapat lagi diterapkan, maka solusi persoalan sebenarnya masih dapat dicari dengan menggunakan metode numerik.
Metode numerik adalah teknik yang digunakan untuk memformulasikan persoalan matematik sehingga dapat dipecahkan dengan operasi perhitungan/aritmetika biasa (tambah, kurang, kali, dan bagi).
23.47 1.256 + 1204 + 153 1202 + 100 = 0
45.37 +100
4
+4
2 + 1
2.5
1.2
-
Metode Analitik vs Metode Numerik
Perbedaan utama antara metode numerik dengan metode analitik adalah Solusi dengan menggunakan metode numerik selalu berbentuk angka. Bandingkan dengan metode analitik yang biasanya
menghasilkan solusi dalam bentuk fungsi matematik yang selanjutnya fungsi matematik tersebut dapat dievaluasi untuk menghasilkan nilai dalam bentuk angka
Dengan metode numerik, kita hanya memperoleh solusi yang menghampiri atau mendekati solusi sejati sehingga solusi numerik dinamakan juga solusi hampiran (approxomation) atau solusi pendekatan, namun solusi hampiran dapat dibuat seteliti yang kita inginkan. Solusi hampiran jelas tidak tepat sama dengan solusi sejati, sehingga ada selisih antara keduanya. Selisih inilah yang disebut dengan galat (error).
Diberikan persoalan integrasi-tentu berikut:
Dengan metode analitik, kita dapat menemukan solusi sejatinya berupa fungsi yang kemudian kita evaluasi menjadi bentuk angka (numerik)
Bandingkan bila persoalan integrasi tersebut diselesaikan dengan metode numerik pada slide berikutnya
Contoh Ilustrasi:
= 4 2 1
1
=1
+ 1+1 + = 4
3
3=1
=1
=22
3
-
Metode Analitik vs Metode Numerik
Tentu kita masih ingat bahwa interprestasi geometri integral f(x) dari x=a sampai x=b adalah luas daerah yang dibatasi oleh kurva f(x) itu sendiri, sumbu x, garis x=a, dan garis x=b
Luas daerah tersebut dapat dihampiri dengan cara membagi daerah integrasi [-1, 1] atas sejumlah trapesium dengan lebar 0.5 seperti gambar di atas, maka luas daerah integrasi dihampiri dengan luas kempat buah trapesium, atau
Solusi sejatinya adalah 22/3=7.33, sehingga solusi hampiran di atas memiliki galat (error) sebesar 7.33 7.25 = 0.08333... Solusi hampiran yang lebih teliti dapat dibuat dengan membuat lebar trapesium menjadi lebih kecil
+ + +
1 + 1
20.5
2+
1
2+ 0
0.5
2+ 0 +
1
20.5
2+
1
2+ 1
0.5
2
0.5
23 + 7.5 + 8 + 7.5 + 3
7.25
-
Perananan Komputer dalam Metode Numerik
Komputer sebagai alat hitung sangat berperan besar dalam menyelesaikan persoalan dengan metode numerik. Di samping karena metode numerik adalah berupa operasi aritmetika dasar seperti penjumlahan, perkalian, pembagian yang bisa dikerjakan oleh komputer, komputernya sendiri pun adalah alat hitung yang tidak kenal bosan dan lelah, sehingga operasi aritmetika yang dilakukan berulang-ulang dalam metode numerik sangatlah cocok menggunakan komputer
Kita dapat membuat program dengan menggunakan bahasa Fortran, Pascal, C, C++, dll untuk menyelesaikan persoalan menggunakan metode numerik
Tapi kita juga bisa langsung menggunakan beberapa aplikasi yang sudah ada di pasaran tanpa harus menulis program numerik. Contoh beberapa aplikasi tersebut adalah Matlab, Mathematica, Scilab, dll
Pada aplikasi-aplikasi numerik tersebut bukan berarti kita tidak perlu menulis program, tapi uniknya adalah aplikasi tersebut sudah menyediakan beberapa library yang berisi rutin-rutin yang siap digabung dengan program utama yang ditulis user.
Dalam metode numerik utamanya adalah pengulangan operasi aritmetika, sehingga kecepatan komputer menjadi penting. Berkat kemajuan teknologi komputer, perkembangan metode numerik dalam menyelesaikan berbagai permasalahan kerekayasaan pun bergerak cepat.
-
Tahap-tahap Memecahkan Persoalan Secara Numerik
Ada enam tahap yang dilakukan dakam pemecahan persoalan dunia nyata dengan metode numerik, yaitu: 1. Pemodelan
Ini adalah tahap pertama. Persoalan dunia nyata dimodelkan ke dalam persamaan matematika
2. Penyederhanaan model Model matematika yang dihasilkan dari tahap 1 mungkin saja terlalu kompleks, yaitu memasukkan banyak peubah
(variable) atau parameter. Semakin kompleks model matematikanya, semakin rumit penyelesaiannya. Mungkin beberapa penyederhanaan dibuat
sehingga beberapa parameter dapat diabaikan. Contohnya, faktor gesekan udara diabaikan sehingga koefisian gesekan di dalam model dapat dibuang. Model
matematika yang diperoleh dari penyederhanaan menjadi lebih sederhana sehingga solusinya akan lebih mudah diperoleh.
3. Formulasi numerik
Setelah model matematika yang sederhana diperoleh, tahap selanjutnya adalah memformulasikannya secara numerik, antara lain: a. menentukan metode numerik yang akan dipakai bersama-sama dengan analisis galat awal (yaitu taksiran galat, penentuan ukuran langkah, dan sebagainya).
Pemilihan metode didasari pada pertimbangan: - apakah metode tersebut teliti? - apakah metode tersebut mudah diprogram dan waktu pelaksanaannya cepat? - apakah metode tersebut tidak peka terhadap perubahan data yang cukup kecil?
b. menyusun algoritma dari metode numerik yang dipilih. 4. Pemrograman
Menerjemahkan algoritma ke dalam program komputer dengan menggunakan salah satu bahasa pemrograman
5. Operasional/Uji Coba 6. Evaluasi
-
Perbedaan Metode Numerik dan Analisis Numerik
Untuk persoalan tertentu tidaklah cukup kita hanya menggunakan metode untuk memperoleh hasil yang diinginkan. Kita juga perlu mengetahui apakah metode tersebut memang memberikan solusi hampiran yang baik, dan seberapa baik hampiran itu. Karenanya, kita perlu kajian baru dinamakan analisis numerik.
Metode numerik adalah algoritma, menyangkut langkah-langkah penyelesaian persoalan secara numerik Analisis numerik adalah terapan matematika untuk menganalisis metode. Dalam analisis numerik, hal utama yang
ditekankan adalah analisis galat dan kecepatan konvergensi sebuah metode Tugas para analis numerik ialah mengembangkan dan menganalisis metode numerik. Termasuk di dalamnya pembuktian
apakah suatu metode konvergen, dan menganalisis batas-batas galat solusi numerik.
Terdapat banyak sumber galat, diantaranya tingkat ketelitian model matematika, sistem aritmetik komputer, dan kondisi yang digunakan untuk menghentikan proses pencarian solusi.
Semua ini harus dipertimbangkan untuk menjamin ketelitian solusi akhir yang dihitung
-
Pendahuluan dan Instalasi Scilab
Scilab merupakan salah satu perangkat lunak yang lisensinya bebas biaya yang bisa didownload di https://www.scilab.org/
Hampir menyerupai Matlab sebagai sebuah program interaktif untuk komputasi numerik dan visualisasi data Karena dasar dari penyelesaian sistem persamaan aljabar linier simultan adalah matriks, dalam Scilab pengembangan
variabelnya dilakukan melalui pendekatan matriks.
Tutorial: https://www.scilab.org/resources/documentation/tutorials http://www.openeering.com/scilab_tutorials
-
Pendahuluan dan Instalasi Scilab
Membuka SciNotes
SciNotes adalah jendela text editor yang berfungsi untuk menuliskan program Scilab yang dapat disimpan
Membuka File
Membuka file berekstensi *.sce atau *.sci
Cut
Copy
Paste
Clear Console
Scilab Preferences
Help Browser
Module Manager
Scilab Demo
Xcos
Print
Membersihkan area konsol
Editor grafis (tanpa menulis program) untuk mendesain model sistem dinamika hibrid
Mendowload dan menginstall modul-modul yang disediakan pada Scilab atoms.scilab.org
Mengatur setting Scilab
Membuka jendela pencarian bantuan
Menampilkan beberapa pilihan demo Scilab yang tersedia
-
Pendahuluan dan Instalasi Scilab
Perintah bisa langsung dituliskan di jendela konsol scilab setelah tanda panah -->
Semua variabel yang dituliskan pada konsol akan terekam di jendela Varible Browser
Koma dituliskan dengan menggunakan titik (.). Misalnya, akan ditulis 0.25, bukan 0,25
Contoh: mencari luas lingkaran berdasarakan rumus D2
Terlihat pada Varible Browser, varibel D dan variabel luas dituliskan dalam bentuk matriks bertipe data Double
Perintah yang kita tuliskan pun terekam pada jendela Command History
Console
Variable Browser
-->D=6
D =
6.
-->luas=0.25*%pi*D^2
luas =
28.274334
-
Pendahuluan dan Instalasi Scilab
Pada contoh di slide sebelumnya, rumus D2 hanya dapat dipakai sekali saja. Artinya, jika nilai D diganti, maka rumus tersebut harus ditulis ulang
Untuk mengatasi hal ini, Scilab menyediakan fasilitas penulisan fungsi, sehingga dengan fungsi ini pada dasarnya penyusunan subprogram sudah dimulai
Contoh:
Pada contoh di atas, A adalah output, luas adalah nama modul, D adalah input, persamaan harus menggunakan variabel yang sama dengan output
Pada baris kedua, modul luas digunakan untuk menghitung luas lingkaran dengan D=3 dan hasilnya disimpan pada variabel ls (tidak disimpan dalam suatu variabel pun bisa)
Selama program tidak keluar atau perintah clear belum dituliskan, maka modul dengan nama luas masih dapat digunakan
dengan mengganti-ganti nilai D.
Fungsi
Perintah deff((out)=modul(in1,in2,),persamaan)
-->deff(A=luas(D, r),A=0.5*%pi*D*r)
-->ls=luas(3, 1.5)
ls =
7.0685835
-
Pendahuluan dan Instalasi Scilab
Permasalahan yang muncul dengan menuliskan program pada jendela kerja seperti pada contoh di slide sebelumnya, antara lain adalah 1. Program tidak dapat disimpan sehingga kalau sudah keluar dari Sciab, modul yang telah terdefinisikan akan hilang
(tapi akan tetap muncul pada jendela Command History asalkan pada komputer yang sama). 2. Untuk program yang panjang, kesalahan penulisan atau program akan sulit untuk diedit
Dengan menggunakan jendela editor seperti SciNotes yang disediakan Scilab (atau bisa juga menggunakan notepad++
atau text editor lainnya), perintah-perintah bisa dituliskan terlebih dahulu, kemudian disimpan sebagai file, baru dieksekusi
Jika kita tidak menggunakan text editor seperti SciNotes ini, perintah akan dieksekusi ketika tombol enter/return ditekan, sedangkan jika menggunakan Scipad, perintah-perintah bisa dituliskan/dikumpulkan terlebih dahulu sebagai suatu file, baru kemudian diekskusi
Dengan kata lain, SciNotes memudahkan menulis/mengedit program yang dibuat.
SciNotes
function hsl=luasbs(D)
hsl=0.25*%pi*D.^2
endfunction
Penulsan fungsi diawali dengan function dan diakhiri dengan endfunction
Pada saat menyimpan dengan save as untuk suatu function, Scilab akan memberi nama default sesuai dengan nama modul
Program fungsi selalu mempunyai ekstensi *.sci
-
Pendahuluan dan Instalasi Scilab
Saat kembali ke jendela konsol, fungsi atau perintah pada jendela editor SciNotes tidak bisa digunakan sebelu dieksekusi. Oleh karena itu kita perlu perintah -->exec() yang dituliskan di jendela konsol
Atau bisa menekan tombol pada icon bar yang terletak di bagian atas SciNotes
Ketika eksekusi program luasbs.sci dijalankan, tak nampak ada perubahan apa pun. Namun ketika nama fungsi dipanggil dengan cara menuliskannya pada jendela konsol, tampak bahwa fungsi luasbs sudah aktif dan memberika hasil perhitungan seperti di bawah ini
Perintah Eksekusi File Scilab
-->luasbs(3) // menghitung luas untuk D=3
ans =
7.0685835
-->exec(c:MyDocumentsscilabluasbs.sci);
-->dm=[2 3]
dm =
2. 3.
-->luasbs(dm) // menghitung luas untuk D=2 dan D=3
ans =
3.1415927 7.0685835
-
Pendahuluan dan Instalasi Scilab
Modul atau fungsi dapat digunakan dalam bagian dari fungsi lain (fungsi dalam fungsi) Sebagai contoh, untuk menghitung volume tabung, luas lingkaran alas dasar dikalikan dengan tinggi tabung
Apabila fungsi atau modul yang akan digunakan cukup banyak, maka penggunaan getf() menjadi tidak efektif Untuk mengatasi ini, Scilan menyediakan fasilitas untuk membuat semua file dnegan ekstensi *.sci dalam suatu folder
yang akan dibuat menjadi library
Untuk memanggil fungsi-fungsi yang sudah dijadikan library, dapat digunakan perintah load()
Menggunakan Fungsi pada suatu Fungsi
-->genlib(libsbs,c:/MyDocuments/scilab)
-->ls c:/MyDocuments/scilab // untuk menampilkan isi file dalam folder scilab
Perintah get(alamat_file)
function V=volbs(h,D)
get(c:/MyDocuments/scilab/luasbs.sci)
V=h*luasbs(D)
endfunction
Perintah genlib(nama,alamat_direktori)
Perintah load(flie_dir/lib)
-->load(c:/MyDocuments/scilab/lib)
-
Varibel dalam Scilab
Variabel adalah suatu naa yang digunakan untuk menyimpan nilai dari suatu objek Nilai variabel dapat berupa angka riil ataupun nonriil, berupa bentuk persamaan maupun rangkaian huruf atau angka Contoh:
Di samping variabel-variabel yang kita definisikan sendiri, Scilab menyediakan konstanta yang telah terdefinisi sebelumnya. Gunakan perintah who untuk menampilkan seluruh konstanta yang disediakan Scilab
Konstanta-konstanta tersebut ditandai dengan % di depannya, antar lain:
-->Luas=5;
-->Nama=Budi;
-->Y=2*x^2-4*x+6;
-->M=[1 2 3; 5 7 9];
Konstanta Spesial pada Scilab
Nilai/Keterangan
%pi = 3.1415927
%i 1
%e = 2.7182818
%t dan %f True dan False dalam konstanta Boolean
-
Varibel dalam Scilab
Sama halnya dengan Matlab, Scilab adalah perangkat lunak berbasikan matriks, sehingga menganggap semua variabel data dalam bentuk matriks
Penuilsan matriks diawali dan diakhiri dengan tanda kurung siku [..] Tiap elemen matriks dipisahkan dengan tanda spasi atau koma, sdangkan untuk berpindah pada baris berikutnya
digunakan tanda titik koma (;) Contoh:
Untuk membuat deret angka dalam matriks satu baris dugunakan perintah berikut
Jika nilai step tidak dituliskan, maka akan digunakan nilai default step=1
Untuk membuat interaksi dengan user berupa input data, digunakan perintah berikut
Jika string atau s tidak dituliskan, maka tipe data input adalah default yaitu Double
-->M=[1 2 3; 5 7 9]
-->B=[3,6,7; 5,1,6; 8,19,3]
Matriks, Deret Angka, Input
Perintah Z=awal:step:akhir
-->X=1:4
-->Y=1:0.5:4
Perintah X=input(pesan,string atau s)
-->jari-jari=input(masukan nilai jari-jari: )
-->nama=input(masukan nama: , s)
-
Pemrograman dengan Scilab
Khususnya pada metode numerik, pemrograman komputer merupakan penggabungan dari tiga unsur, yaitu komparasi (perbandingan), kondisional (pemilihan), dan repetisi (perulangan)
Contoh:
Dalam Scilab ada lima operator yang dapat digunakan untuk perbandingan dan 3 operator logika seperti tabel berikut
Simbol Keterangan
== Sama dengan
< Lebih kecil
> Lebih besar
= Lebih besar atau sama dengan
atau ~= Tidak sama dengan
Simbol Keterangan
& and
| or
~ nor
If-then-else-end
N=input('Masukan Nilai : ')
if N >= 60 then
disp(lulus)
else
disp(mengulang)
end
-
Pemrograman dengan Scilab
Contoh:
Struktur
If-then-elseif-then-end
NA = input(Masukan nilai angka : )
if NA >= 80 then disp(A)
elseif NA >= 70 & NA < 80 then disp (B)
elseif NA >= 60 & NA < 70 then disp (C)
elseif NA >= 55 & NA < 60 then disp (D)
else disp(Tidak Lulus)
end
Select-case-else-end
select pil //pil adalah variabel yang menjadi syarat
case opt1 then //opt1 adalah nilai dari syarat
perintah_1
case opt2 then
perintah_2
...
else
perintah_n
end
-
Pemrograman dengan Scilab
Buatlah program untuk menghitung luas segitiga, segi empat, dan lingkaran! User diberikan pilihan untuk memilih satu diantara 3 bentuk tersebut. Austin bonus nilai PR 20
Latihan
-
Pemrograman dengan Scilab
Contoh:
Struktur Perulangan dengan Syarat
Contoh: menghitung volume bola dgn jari-jari 2.5-4.5 dengan beda 0.5
For-end
X = [5 8 21 23 9 12 16 32 35]
jumlah = 0
for i=1:9
jumlah = jumlah + X(i)
end
While-end
while kondisi
perintah
end
//ATAU DALAM 1 BARIS:
while kondisi do perintah, end
while kondisi then perintah, end
while kondisi, perintah, end
r=2.5;
while r < 5
vol=(4/3)*%pi*r^3;
disp([r,vol])
r=r+0.5;
end
-
Visualisasi Grafik dengan Scilab
Visualisasi 2 Dimensi
Contoh perintah plot:
x = [0:0.1:2*%pi]
//set(current_figure,1)
plot(sin(x))
//set(current_figure,2)
plot(x,sin(x))
Perintah plot(x,y) atau plot(y)
-
Visualisasi Grafik dengan Scilab
Visualisasi 2 Dimensi
Untuk grafik 2D, perintah selain plot yang disediakan Scilab adalah plot2d Perintah plot2d memiliki beberapa kelebihan, yaitu:
1. Dapat memvisualisasikan beberapa grafik sekaligus pada saat yang bersamaan 2. Garis dan warna garis dapat ditentukan secara spesifik 3. Judul grafik, label pada sumbu x dan y dapat ditampilkan
Contoh:
x = [0:0.1:2*%pi];
y1=sin(x);
y2=cos(x);
plot2d([x x],[y1 y2], [-4 -8])
xtitle(gambar gabungan sin_x dan cos_x, sumbu x, sumbu y)
-
Visualisasi Grafik dengan Scilab
Visualisasi 2 Dimensi
Bentuk garis bisa diubah dengan menggunakan perintah style seperti pada tabel di bawah ini
Dimana x & y harus memiliki ukuran matriks yang sama yaitu [nl, nc]. nc adalah jumlah kurva dan nl adalah jumlah data Hasil visualisasi grafik bisa dikopi ke Ms Word misalnya dengan cara klik File > Copy to clipboard
Menampilkan beberapa grafik dalam satu window:
Dimana m: jumlah baris, n: jumlah kolom, p: urutan grafik
Perintah Tampilan
0 Garis
-1 +
-2 X
-3
-4
Perintah Tampilan
-5
-6
-7
-8 wajik bertanda plus
-9
Perintah Tampilan
1 Hitam
2 Biru
3 Hijau
5 Merah
6 Pink
Perintah plot2d(x, y, [style])
Perintah xtitle(judul, x_label, y_label, z_label)
Perintah subplot(m,n,p)
-
Visualisasi Grafik dengan Scilab
Visualisasi 2 Dimensi
Contoh:
x = [0:0.1:2*%pi];
y1=sin(x);
y2=cos(x);
subplot(1,2,1)
plot2d(x,y1)
xtitle(gambar 1, x, y1)
subplot(1,2,2)
plot2d(x,y2)
xtitle(gambar 2, x, y2)
-
Pengelolaan Data dengan Scilab
Pengelolaan data dari file luar sangatlah penting untuk keperluan numerik, oleh karena itu Scilab memfasilitasi pembacaan dan penulisan data dari dan ke dalam sebuah file
Contoh:
Data yang begitu banyak tersedia pada file excel dapat diakses dengan mengetahui lokasi tab dan lokasi sel nya.
Perintah xsimpan=write(nama_file, nama_matriks_yang_akan_disimpan)
Perintah [x]=read(nama_file, jumlah_baris, jumlah_kolom)
Hsl = [4 3 5; 7 9 2]
simpan=write(C:/try.dat, Hsl)
[baca] = read(C:try.dat,2,3)
Mengolah data spreadsheet (excel)
Perintah data = readxls(file_path)
-
Pengelolaan Data dengan Scilab
Contoh:
-->[baca] = readxls(C:scinumFisbs.xls)
-->tab2 = baca(2);
-->BM_Acetone = tab2(5,3)
-
Graphical User Interface / Antarmuka Scilab
Perangkat lunak pada umumnya telah menggunakan bantuan tombol dengan ikon tertentu untuk mengeksekusi perintah tertentu
Perintah visualisasi seperti itu disebut antarmuka pengguna atau graphical user interface (GUI). Dengan menggunakan GUI, pengguna bisa lebih mudah dalam menggunakan perangkat lunak yang dikembangkan.
Salah satu fasilitas GUI daam Scilab adalah fasilitas interaktif untuk memilih, yaitu dengan perintah x_choose
Sebagai contoh, kita akan melakukan perhitungan tekanan uap murni dari komponen berdasarkan persamaan di bawah ini
Dimana: : tekanan uap murni komponen k A, B, C : konstanta yang nilainya tergantung dari komponen T : suhu mutlak
Data A, B, C disediakan untuk masing-masing komponen dalam file Excel Agar program yang dibuat lebih bersifat interaktif, user hanya tinggal memilih komponen yang akan dihitiung tekanan
uapnya dan tidak perlu melihat data A, B, dan C
ln =
+
//buka data dari Excel
Data=readxls(C:scinumDataFisbs.xls);
dtlb1=Data(3);
dfnamakom=dtlb1(:,2);
//memilih komponen
judul=[BANK DATA; Pilih Komponen];
Nokomp=x_choose(dfnamakom,judul,Selesai)
Perintah [num]=x_choose(items,title,button)
-
Graphical User Interface / Antarmuka Scilab
Jika salah satu nama di double-click, maka varibel Nokomp akan akan berubah nilainya sesuai dengan no urut pada file excel. Jika tombol selesai diklik, maka Nokomp=0
//buka data dari Excel
Data=readxls(C:scinumDataFisbs.xls);
dtlb1=Data(3);
dfnamakom=dtlb1(:,2);
//memilih komponen
judul=[BANK DATA; Pilih Komponen];
nokomp=x_choose(dfnamakom,judul,Selesai)
//detail informasi komponen
Namakom=dtlb1(nokomp,2);
A=dtlb1(nokomp,3);
B=dtlb1(nokomp,4);
C=dtlb1(nokomp,5);