Scilab adalah bahasa pemprograman tingkat tinggi, sebagian besar kegunaannya didasarkan pada seputar kemampuan menspesifikasi banyak komputasi dengan sedikit baris kode. Scilab melakukan hal ini dengan mengabstraksi tipe data primitif kepada matriks ekuivalen menurut fungsinya.
Scilab memiliki kesamaan fungsionalitas dengan MATLAB, tetapi tersedia untuk diunduh tanpa biaya lisensi. Program ini memungkinkan pengguna untuk melakukan komputasi pada cakupan luas operasi-operasi matematika dari operasi yang relatif sederhana seperti perkalian hingga kepada operasi tingkat tinggi seperti korelasi dan aritmatika kompleks. Perangkat ini sering dipakai untuk pemprosesan sinyal, analisis statistika, perbaikan gambar, simulasi dinamika fluida, dan lain-lain.
Scilab telah digunakan secara luas di beberapa industri dan projek penelitian, dan banyak kontribusi telah dibuat oleh para pengguna. Sintaksnya sama dengan MATLAB, tetapi yang kedua tidak sepenuhnya kompatibel, meskipun terdapat konverter yang disertakan di dalam Scilab untuk konversi kode sumber dari MATLAB ke Scilab. Scilab memiliki lebih sedikit bantuan daripada MATLAB.
Teori Persamaan nonlinier
Dalam matematika, sistem nonlinier adalah sistem yang tidak linier yakni sistem yang tidak memenuhi prinsip superposisi. Sedikit lebih teknis, sistem nonlinier adalah sembarang soal dimana peubah yang disolusi tidak dapat ditulis sebagai jumlah linier komponen-komponen tak gayut. Sistem nonhomogen, yang linier terpisah dari keberadaan fungsi peubah-peubah tak gayut, adalah nonlinier menurut definisi yang tegas, namun sistem demikian biasanya dipelajari disamping sistem linier, karena mereka dapat ditransformasi menuju sistem linier sepanjang solusi khusus diketahui.
Pada umumnya, soal nonlinier adalah rumit (jika mungkin) untuk disolusi dan sangat sedikit yang dipahami dibanding soal linier. Bahkan jika tak dapat disolusi secara eksak, hasil dari soal linier dapat diramalkan, sementara hasil soal nonlinier adalah tak terpisahkan tak dapat diramalkan.
Soal nonlinier menjadi minat fisikawan dan matematikawan karena pada umumnya sistem fisis di alam adalah tak dapat dipisahkan dari sifat nonlinier. Contoh-contoh fisis sistem linier adalah tidak sangat umum. Persamaan nonlinier rumit untuk disolusi dan memunculkan fenomena menarik semisal chaos. Cuaca adalah contoh sistem nonlinier yang terkenal, dimana perubahan sederhana dalam satu bagian sistem menghasilkan akibat yang kompleks secara keseluruhan.
APLIKASI
MATLAB UNTUK PENYELESAIAN PERSAMAAN NON LINEAR MENGGUNAKAN METODE NEWTON RAPHSON
A.
DASAR
TEORI
Metode Newton Raphson
biasa digunakan dalam mencari akar dari suatu persamaan non linier, jika
diasumsikan f mempunyai turunan kontinu f’.
Metode Newton Raphson sering digunakan
karena kesederhanaannya dan mempunyai konvergensi yang cepat. Karena metode ini
merupakan metode Terbuka, maka tetap diperlukan nilai tebakan awal untuk Xo.
Titik pendekatan ke n+1
dituliskan dengan :
Secara geometri, metode
Newton Raphson hampir sama dengan metode regula falsi, bedanya garis yang
dipakai adalah garis singgung. Dengan menggunakan x0 sebagai tebakan awal,
dilanjutkan dengan mencari titik (x0, f(x0)). Kemudian dibuat garis singgung
dari titik (x0, f(x0)), sehingga diperoleh titik potong (x1, 0) antara sumbu-x
dan garis singgung titik (x0, f(x0)). Kemudian dilanjutkan lagi dengan mencari
titik (x1, f(x1)). Dari titik (x1, f(x1)) kemudian dibuat garis singgung,
sehingga diperoleh titik potong (x2, 0) antara sumbu-x dan garis singgung titik
(x1, f(x1)).
B.
DESAIN
DAN IMPLEMENTASI
1.
Algoritma
Input
:
a. Masukkan
persamaan nonlinear f(x) dan f’(x).
b. Masukkan
toleransi yang diinginkan dalam persen (%). Toleransi merupakan batas kesalahan
(galat) yang diinginkan, semakin mendekati nilai 0 semakin baik.
c. Masukkan
maksimum iterasi yang diinginkan. Iterasi awal = 0
d. Masukkan
nilai pendekatan awal x0.
Proses
:
a.
Hitung
x0
1)
Dengan metode Newton Raphson
b.
Nilai iterasi = iterasi +1 atau i=i+1
c.
Hitung nilai x1 dengan kembali ke
langkah a
d.
Hitung nilai galat Ea
e.
Jika iter < maksimum iterasi
lanjutkan proses, jika tidak proses berhenti.
f.
Jika nilai Ea < Es, lanjutkan ke
proses selanjutnya
Jika
nilai Ea > Es, kembali ke proses a
Output :
a. Tampilkan
tabel iterasi , x , f(x), f’(x) ,galat.
b. Tampilkan
akar persamaan.
c. Tampilkan
grafik.
C.
Flow Chart
2.
Implementasi
Pada
implementasi, akan digunakan fungsi nonlinear untuk menguji program apakah
berjalan dengan baik atau tidak, contoh 1, fungsi yang digunakan adalah f(x) = x2+4x-21 , yang
secara perhitungan manual dapat dicari diferensialnya f’(x) = 2x+4 , dan untuk nilai awal x = 0 .
Pada
pengujian program didapat :
Isikan persamaan non-linearnya (string) :
'x0.^2+4*x0-21'
Isikan nilai awal : 0
Isikan maksimum iterasinya : 10
Isikan toleransinya : 0.00001
======================================================
iter
x f(x) df(x) galat
======================================================
1 5.250000
-21.000000 4.000000 1.000000
2 3.349138
27.562500 14.500000 0.567568
3 3.011394
3.613277 10.698276 0.112155
4 3.000013
0.114071 10.022788 0.003794
======================================================
Akarnya : 3.00001
dengan toleransi : 0.00001
dan pada iterasi ke : 4
Akarnya adalah 3.00001
karena galat dari nilai x tersebut lebih mendekati angka 0 maka proses iterasi
pun dihentikan pada proses iterasi ke -4.
Contoh 2 :
Isikan persamaan
non-linearnya (string) : 'x0.^2+4*x0-21'
Isikan nilai
awal : 0
Isikan
maksimum iterasinya : 2
Isikan
toleransinya :
0.0001
======================================================
iter x f(x) df(x) galat
======================================================
1
5.250000 -21.000000 4.000000 1.000000
2
3.349138 27.562500 14.500000 0.567568
======================================================
Akarnya :
3.34914
dengan toleransi :
0.00010
dan pada iterasi ke :
2
Jika
maksimum iterasinya diisikan dengan 2 maka proses pun berhenti dan hasilnya
3.349138 ( belum mencapai nilai akhir seperti pada contoh 1).
Untuk
contoh yang ke -3 adalah
F(x)
= 4x2+7x-31 Ã F’(x) = 8x+7
Isikan persamaan non-linearnya (string) :
'4*x0.^2+7*x0-31'
Isikan nilai awal : 0
Isikan maksimum iterasinya : 40
Isikan toleransinya : 0.00001
======================================================
iter x f(x) df(x) galat
======================================================
1 4.428571
-31.000000 7.000000 1.000000
2 2.579606
78.448980 42.428571 0.716763
3 2.084806
13.674699 27.636845 0.237336
4 2.043447
0.979306 23.678448 0.020240
5 2.043154
0.006842 23.347580 0.000143
======================================================
Akarnya : 2.04315
dengan
toleransi : 0.00001
dan pada
iterasi ke : 5
Akarnya adalah 2.04315
dengan toleransi 0.00001 dan karena galat dari nilai x pada iterasi ke- 5 sudah
memenuhi syarat mendekati ketentuan angka dari toleransi error maka proses
iterasi ke-5 dihentikan.
Contoh
4 :
F(x)
= 14x2+5 Ã
F’(x) = 28x
Isikan
persamaan non-linearnya (string) : '14*x0+5'
Isikan nilai
awal : 2
Isikan
maksimum iterasinya : 12
Isikan
toleransinya :
0.00001
======================================================
iter x f(x) df(x) galat
======================================================
1
-0.357143 33.000000 14.000000 6.600000
======================================================
Akarnya :
-0.35714
dengan toleransi :
0.00001
dan pada iterasi ke :
1
Akarnya adalah -0.35714
dengan toleransi 0.00001 dan karena galat dari nilai x pada iterasi ke- 1 sudah
memenuhi syarat mendekati ketentuan angka dari toleransi eror maka proses
iterasi ke-1 dihentikan.
Contoh
5 :
Isikan
persamaan non-linearnya (string) : 'x0.^3'
Isikan nilai
awal : 2
Isikan
maksimum iterasinya : 5
Isikan
toleransinya : 0.00001
======================================================
iter x f(x) df(x) galat
======================================================
1
1.346939 8.000000 12.250000 0.484848
2
0.917676 2.443676 5.692732 0.467771
3
0.639328 0.772803 2.776390 0.435376
4
0.462309 0.261320 1.476222 0.382902
5
0.351436 0.098809 0.891189 0.315487
======================================================
Akarnya :
0.35144
dengan toleransi :
0.00001
dan pada iterasi ke :
5
Akarnya adalah -0.35144
dengan toleransi 0.00001 dan karena galat dari nilai x pada iterasi ke- 5 sudah
memenuhi syarat mendekati ketentuan angka dari toleransi eror maka proses
iterasi ke-5 dihentikan.
RUN DIAGRAM
LAMPIRAN
Kode Program :
% -- 085410203 -- %
% --
PROGRAM METODE NEWTON -- %
clear
clc
format long
fx = input('Isikan persamaan non-linearnya
(string) : ');
x0 = input('Isikan nilai awal : ');
maks = input('Isikan maksimum iterasinya : ');
tol = input('Isikan toleransinya : ');
iter=0;
h=0.5;
fprintf('======================================================\n');
fprintf('iter x f(x) df(x) galat\n');
fprintf('======================================================\n');
while iter<maks
f=inline(fx);
fun=f(x0);
fak = (f(x0+h)-f(x0-h))/(2*h);
Es=abs((x0-fun/fak)-x0)/abs(x0-fun/fak);
if fak==0
break
elseif Es<tol
akar=x0-fun/fak;
break
else
x0=x0-fun/fak;
end
fprintf('%3d
%3.6f %3.6f %3.6f
%3.6f\n',iter+1,x0,fun,fak,Es);
iter=iter+1;
end
akar=x0;
func=f(akar);
%grafik fungsi (x0)
t=-10:10;
z=f(t);
plot(t,z),title('Grafik fungsi
(x)');
grid on;
fprintf('======================================================\n');
fprintf(1,' Akarnya :
%10.5f \n',akar) ;
fprintf(1,' dengan toleransi :
%10.5f \n',tol) ;
fprintf(1,' dan pada iterasi ke :
%10g \n',iter) ;
This comment has been removed by the author.
ReplyDeleteterimakasih buat tulisannya ngebantu banget buat saya yang lagi tugas akhir, kebetulan sama ngebahas Newton Rapson pake MATLAB, kalo bisa kirimin program buat perhitungan aliran beban pake metode newton rapshon tolong dibantu yak.
ReplyDeletebisa kirim ke email saya electrical10.008@gmail.com
mas listnya masih ada masalah
ReplyDeletehalo mas.. maaf, ada script buat metode yang lain nya engga ya?? kaya metode jacobi, gauss sidle, Bisection, ama yang lain nya.. kalau ada, bisa share barangkali mas?? hehe
ReplyDeletethanks sebelumnya mas
This comment has been removed by the author.
ReplyDeletematur suwun gan codingannya lancar jaya :D sekali lagi terimakasih. Tugas kuliah terselesaikan..
ReplyDeleteiter=0 maksudnya apa ya kak ?
ReplyDelete