AKAR PERSAMAAN NON LINIER
2.1 PENDAHULUAN DAN MOETODE BISEKSI Dalam komputasi berbagai Masalah, sering sckali muncul di dalamnya masalah perhitungan Akar dari Fungsi. Di sini apabila diketahui fungsi y=f(x), kita hendak mencari suatu nilai x = p, sedemikian schingga f(p) = 0. Secara Analitik berarti mencari absis titik potong grafik fungsi tersebut dengan Sumbu X. Untuk f(x) yang merupakan polinom bcrdcrajat satu (garis Imus), ataupun Fungsi Kuadarat, Masalah ini dengan mudah dapat dipccahkan dipccah kan . Untuk menghitung Akar Persamaan Kuadrat, kita dapat menggunakan menggunakan rumus pq, ataupun rum us abc. Namun bagaimana halnya dcngan Fungsi yang yang lain? ' Perhitungan Akar Fungsi ini sebcnamya merupakan Masalah yang klasik .dalam Matematika. Untuk itu, berbagai Mctode secara numerik Lelah dikembangkan orang. Secara garis besamya, Metode yang digunakan dapat dikelompokkan mcnjadi dua bagian. Yang pertama adalah Metode perhitungan perhitungan tanpa mcnggunakan turunan (derivatif), Sedangkan Metode yang kedua merupakan merupakan Metode yang meman f aatk aatk an de ti v ati f. kelom pok pertama, pertama, kita kenal di antaranya Metode Biseksi, Me M etode Regulafalsi, Metode Sekan, dan Mctode Atkinson. Mereka akan kita bahas terlcbih dahulu . Kali pertama ini kita bahas Metode Biseksi, Metode dengan menggunakan derivatif , tcrkcnal scbagai Metode Newton. Newton. Metode ini masih cukup efektif dan paling sering digunakan orang . LAT/HAN Buatlah Program kecil untuk menghitung Akar suatu Fungsi Fungsi Kuadrat f(x)=ax2+bx+c, memanfaatkan Rumus abc, sena mcmpcrhatikan mcmpcrhatikan kemungkinan dari Akar, apakah Real Real Berbeda, Real Kembar atau Komplcks .
26
2.1.1 PEMANFAATAN
KEMAMPUAN
KOMPUTER
Sebelum kita kit a mcmbahas Mctodc Numerik yang lazim digunakan tcrscbut, seperti Metode Biseksi, kita pcrkenalkan lebih dahulu suatu cara yang mumi mcmanfaatkan ketangguhan Komputer, yakni dengan mclakukan Pcncarian hcrulang -ulang tcrnadap Akar. Sebenamya, prinsip adalah sama dengan Mctodc Biseksi. Di sini kita lakukan pcm pcmbagi bagian an Interval bukan menjadi menjadi 2 Subinterval scpcrti pada Mctode Biseksi, tctapi pcm pcmbagi bagian an menjadi sckaligus banyak Subinterval. Untuk mendapatkan mendapatkan gambaran yang cukup jelas, misalkan kita hendak mcncari Akar dari f(x)=2x3-5x2- 7 Kita menghitung (scbaiknya dengan Komputcr) nilai fungsi pada suatu Interval tcrtcruu, untuk bcbcrapa x. Misalnya kita ambil Interval 1-10, IOJ, yang k ita bagi menjadi 10 Subinterval, dan kita cari ' nilai fungsi pada ujung-ujung ujung Subinterval tcrscbut, yakru pad a x = I 0, -8 •... , 8, 10 Programnya da da p paat bcrupa bcrupa sepeni ini : Program 2 1 .
PRINT" X","F(X)":PRINT PRINT" DEF FN F(X)=2*X"3 -5*X"2-7 K = -10 PRINT K, FN F(X) IF K
5
IO 20 30 40 50
Kalau Program 2.1 tcrsebut kita jalan jalankan kan diperolch output scpcrti Tabcl 2.1, bcrikut ini : Tabel 2.1.
x
F(X)
IO 8 6 4 2
-2507 -1351 -619 -215 -43
0
-7
2 4 6 8 IO
-11 41 245 697 1493
Dari hasil di ata atass kita lihat bahwa F(2) = -11, dan F(4) = 41, fungsi bcrubah tanda dalam Interval (2,4] terscbut. Ini bcrarti Akar terlctak di dalam Interval tcrscbut , atau artinya Akar adalah antara x = 2 dan x = 4.
27
2.1.1 PEMANFAATAN
KEMAMPUAN
KOMPUTER
Sebelum kita kit a mcmbahas Mctodc Numerik yang lazim digunakan tcrscbut, seperti Metode Biseksi, kita pcrkenalkan lebih dahulu suatu cara yang mumi mcmanfaatkan ketangguhan Komputer, yakni dengan mclakukan Pcncarian hcrulang -ulang tcrnadap Akar. Sebenamya, prinsip adalah sama dengan Mctodc Biseksi. Di sini kita lakukan pcm pcmbagi bagian an Interval bukan menjadi menjadi 2 Subinterval scpcrti pada Mctode Biseksi, tctapi pcm pcmbagi bagian an menjadi sckaligus banyak Subinterval. Untuk mendapatkan mendapatkan gambaran yang cukup jelas, misalkan kita hendak mcncari Akar dari f(x)=2x3-5x2- 7 Kita menghitung (scbaiknya dengan Komputcr) nilai fungsi pada suatu Interval tcrtcruu, untuk bcbcrapa x. Misalnya kita ambil Interval 1-10, IOJ, yang k ita bagi menjadi 10 Subinterval, dan kita cari ' nilai fungsi pada ujung-ujung ujung Subinterval tcrscbut, yakru pad a x = I 0, -8 •... , 8, 10 Programnya da da p paat bcrupa bcrupa sepeni ini : Program 2 1 .
PRINT" X","F(X)":PRINT PRINT" DEF FN F(X)=2*X"3 -5*X"2-7 K = -10 PRINT K, FN F(X) IF K
5
IO 20 30 40 50
Kalau Program 2.1 tcrsebut kita jalan jalankan kan diperolch output scpcrti Tabcl 2.1, bcrikut ini : Tabel 2.1.
x
F(X)
IO 8 6 4 2
-2507 -1351 -619 -215 -43
0
-7
2 4 6 8 IO
-11 41 245 697 1493
Dari hasil di ata atass kita lihat bahwa F(2) = -11, dan F(4) = 41, fungsi bcrubah tanda dalam Interval (2,4] terscbut. Ini bcrarti Akar terlctak di dalam Interval tcrscbut , atau artinya Akar adalah antara x = 2 dan x = 4.
27
Sekarang Interval { 2,4) tcrscbut kit a bagi-bagi lagi, katakanlah mcnjadi 10 Subinterval, dcngan lcbar lcbar masing-masing = 0.2 Dcngan scdikit modifikasi modifikasi Program 2. I mcnjadi
5
PRINT" X","F(X)":PRINT DEF FN F(X)=2*X"3-5*X'<~-7 K=2 PRINT K, FN F(X) IF K<4 THEN K+K+0.2: GO TO 30 END
10 20 30 40 50
dipcrolch hasil scpcrti pada Tabcl 5.2. Tabcl 2.~
x
FtX)
2.0 2.2 2.4 2.6 2.8 3.0 3.2 3.4 3.6 3.8 4.0
-11.(XX)O -9.9040 -8.1520 -5.6480 -2.2960 2.lXXX) 7.3360 13..8080 13 21.5120 30.5440 41.0000
Dari hasil di atas kita lihat bahwa Ft2.8)=2.2900, dan F(l.0)=2.O, fungsi bcrubah tanda dalam Interval 12.8,31 tcrsebut. lni bcrurti Ak ar tcrlctak di dalam Interval Inter val tcrscbut, atau artinya Akar adalah amara x = 2.8 d an x = 3. Sekarang Interval { 2.8,3) tcr scbut kit a bagi-bagi lagi mcnjadi 10 Subinterval, dengan le bar masing-masing = 0.02 Dcngan scdikit modifikasi lagi pada Program yang lalu, dipcrolch hasil pada Tabel 5.3.
28
Tabcl 2.3.
x
F(X)
2.80 2.82 2.84 2.86 2.88 2.90 2.92 2.94 2.96 2.98 3.00
-2.2960 -1.9105 -1.5154 -1.1107 -0.6963 -0.2720 0.1622 0.6064 1.0607 1.5252 2.0000
Dari hasil di atas kita lihat bahwa Iungsi bcrubah tanda dalam Interval [2.90,2.92]. berarti Akar tcrletak di dalam Interval tcr scbut. Interval tcrscbut kita bagi lagi mcnjadi I 0 Subinterval, dcngan lcbar masing-masing = 0.002 Tabcl 2.4
x
F(X)
2.900 2.902 2.906 2.908 2.910 2.912 2.914 2.916 2.918 2.920
-0.2719956 -0.2290268 -0.1859589 -0.0995140 -0.0561447 -0.0126762 0.0308914 0.0745620 0.1183319 0.1622009
Terlihat bahwa Akar terlctak antara 2.192 dan 2. 194;. K alau sckali lagi kita lakukan Proses, terlihat :
29
Tabcl 2.5
x
F(X)
2.9120 2.9122 2.9124 2.9126 2.9128 2.9130 2.9132 2.9134 2.9136 2.9138 2.9140
-0.0126915 -8.338928E-03 -3.986359E -03 3.700256E-04 4.72641 E-03 9.082794E -02 1.343918E -02 1.77993 8E-02 2.21595 8E-02 2.651978E -02 3.087998E-02
Dcngan dcmikian, Akar bcrada antara 2.9124 dan 2.9126 . Dcmikian sctcrusnya . Tinggalsckarang kita inginkan kcicliuan sampai bcrapa dcsimal. Untuk kctclitian hingga 3 dcsimal, dipcrolch Akar 2.193, scna untuk 4 dcs imal diperoleh 2. 1926, sctclah k ita mclihat Tabet 2.6 di bawah ini : Tabcl 2.6
x 2.91240 2.91242 2.91244 2.91246 2.91246 2.91248 2.91250 2.91252 2.91254 2.91256 2.91258 2.91260
F(X)
-3. 986359E-03 -3.547669E-03 -3.112793E -01 -2.677918E-03 -2.243042E-03 -2.243042E-03 -1.804352E -03 - I .369476E-03 -9. 346008 E-04 -4.997254E-04 -6.103516E-05 3.77655E-04
LAT / HAN Sebagai latihan, silakan Anda mcnyusun diperoleh sebuah Program yang tcrpadu.
kcmbali Program-program
30
di atas sehingga
2.1.2 METODE BISEKSI Sekarang kita lihat bagaimana menggunakan Mctodc Biscksi. Dalam mengunakan Metode kelompok pertama, pertama kita selalu mcngasumsikan bahwa Fungsi f(x) adalah kontinu pada interval yang kita libalkan. Kitajuga harus tel ah mcngctahui bahwa Akar yang kita cari berada pada interval yang kita libatkan tcrscbut. Untuk dapat menentukan interval tcrscbut di atas kita dapat membuat sketsa grafik Fungsi tersebut. Dapat juga dengan mcmbuat tabcl nilai Fungsi pada suatu interval yang cukup besar, seperti terlihat pada Tabcl 5.1 yang lalu. Seperti kita ketahui tentunya, nilai Akar adalah nilai x pada titik potong grafik Fungsi f(x) dengan Sumbu X. Pada interval di sekitar titik potong tersebut, kurva akan berubah tanda, naik dari negatif menjadi positif atau turun dari positif ke negatif. Pada Metode Biseksi, kita setiap kali iterasi membagi dua interval yang memuat Akar Fungsi, sampai lebar interval mencapai suatu bilangan yang bcrada dalam tolcransi kita. Diasumsikan bahwa hanya satu Akar terdapat dalam interval [xO,x1] sepcrti pada Garn bar (2.1). Maka berlaku f(xO)*f(xl) <= 0. Tanda = berbaku bila xO atau x l merupakan Akar.
y
I
f(xO)
I I
I
vi
Gambar 2.1
I'( x I)
Titik tengah dari interval, yang kita sebut x2, adalah x2=(xO+x1)/2. Harga Fungsi di x2 dapat dihitung. Apabila f(x0)*f(x2) <= 0, maka Akar akan berada pada interval [x0,x2]. Tanda = berbaku bila f(x2) = 0, yakni bila x2 temyata merupakan Akar. Dalam hal f(x0)*f(x2) > 0, Akar akan berada dalam interval [x2,x 1 ]. Perhatikan Garn bar 2.2a, dan Gambar 2.2b yang dapat menjelaskan dua kemungkinan di atas. Apabila terjadi kasus pertama, kita gantikan nilai x 1 dengan nilai dari x2, dan kita ulangi iterasi kita pada interval [xO,x1] yang barn. Sedangkan pada kasus kedua, nilai xO yang diisi dengan nilai x2.
31
y
y
0 xi (a) y
;( l
I
xO
()
Ix I "-
xi
I
'-L.
(b) Gambar 2.2
Bagi pembaca yang terbiasa dcngan pcnyajian diagram alur, Garn bar 2.3 kiranya dapat memperjelas proses pelaksanaan Metode Biseksi kita tcrscbut.
Demikianlah, setelah dilakukan n kali Biseksi, dipcroleh interval yang lcbamya (x lx0)/20. Jadi bila lebar interval tel ah mcnjadi lcbih kccil dari t, maka Akar (yang sebcnarnya) berselisih kurang dari t terhadap kedua titik ujung interval kccil terse but. Olch karcna itu,jika kita menginginkan toleransi kesalahan lcbih kecil dari t, maka dipcrlukan paling scdikit 2 log(xl-x0) Biscksi,kecuali bila Akar tcpat pada ujung interval. Pcrhitungannnya dipcrolch dari: x 1-xO xl-xO < t berarti 2" > --•
xl-xO atau n > 2log -t
32
\tl 'I Al
~k11i:11tul-..111111tL·1,.il ,1\1.il 111t·11µµ1111 ,1!.. a11
,~ <
'"''l\.1 l'.1.it
( ,()
t
xI
l\ll.
11-.. .1l.1t1
xi
t.abd
I 111la1
I/~ Y.1
l
Ya
'~
akar
Garnbar 2 3 .
Berikut ini ProgramBASIC untuk Mciodc Biscksitcrscbut(scbagai comohuntuk fungsi f(x) = x - e11x). Program 2.2 10 20 30 40
50 60 70 80 90 100 110 120 130 140 150 160
REM MENCARI AKAR DENGAN REM METODE BISEKSI INPUT"BATAS KIRI INTERVAL ";XO INPUT"BATAS KANAN INTERVAL ";Xl INPUT'TOLERANSl";T DEF FN F(X) = X - EXP(l/X) IF (XI - XO)< T THEN 150 FO = FN f(XO): Fl= FN F(Xl) X2 =(XO+ Xl)/2 F2 = FN F(2) IF FO*F2<= 0 THEN 130 XO = X2 : GO TO 70 IF FO*F2= 0 THEN 150 Xl=X2:GOT070 PRINT"AKAR = "; X2 END
33
Sclain dengan cara mcnghitung banyaknya itcrasi, kita dapat pula menghentikan pelaksanaan proses Biscksi dcngan sctiap kali memcriksa lebar interval apakah sudah lebih kccil dari t. Bcrikut ini contoh pclaksanaan untuk I(x) = x - c'". Kita mengggunakan tabcl Fungsi, cukup untuk x = 1.2,3 Tabcl 2.7 x
-1,718282
f(x)
Di sini Fungsi. ncgatif x 1 = 2.
2
3
.3512788
1.604388
mcmang kita mcmcrlukan kcjclian dalarn menduga di mana kiranya letak Akar Pada Tabcl 2.7 di alas terlihat bahwa pada interval [ 1,21 harga Fungsi bcrubah dari mcnjadi positi f. Interval awal kita adalah interval tcrscbut, yakni dcngan xO = 1 dan Bcrikut ini tabcl tiap-tiap itcrasi yang kita hcntikan dengan toleransi diambil t = IO·
4
Tabel 2.8
xO
Iterasi
1 2 3
1
1.5 1.75 4 1.75 1.75 5 6 1.75 1.75 7 1.757813 8 9 1.761719 1.761719 10 1.762695 11 1.763184 12 1.763184 13 1.763184 14 1.763184 15 Akar = 1.763214
xi 2 2 2 1.875 1.8125 1.78125 1.765625 1.765625 1.765625 1.763672 1.763672 1.763612 1.763428 1.763306 1.763245
x2
xl-xO
1.5 1.75 1.875 1.8125 1.78125 1.765625 1.757813 1.761719 I.763672 1.762695 1.763184 1.763428 1.763306 1.763245 1.763214
1
0.5 0.25 0.125 0.0625 0.03125 0.015625 0.0078125 3.90625E-03 1. 953125E-03 9.765625E-04 4.882813E-04 2.441406E-004 1.220703E-04 6. 103516E-05
f(x0)*f(x2) 0.769331 9.320569E-03 -3.543344E-03 -1.585734E-03 -5.847278E-04 -7.82354E-05 1.765676E-04 2.(X)2125E-05 - l .658997E-06 1. 949645E-06 5.08603 lE-08 -1.975457-08 -7.992753E-09 -2.097181E-09 1.763214
LAT/HAN Lengkapilah Program 2.2 terscbut, schingga diperolch Output scpcrti Tabel 2.8.
34
2.2 METODE REGULAFALSI Metode Biseksi menjamin bahwa ia selalu bcrhasil mcnemukan Akar yang kita cari. la selalu konvergen. Namun satu kclcmahan melode ini, ia bckerja dcngan sangat lambat. la selalu mencari titik tengah X 2 sebagai titik ujung interval bcrikutnya . Ia tak memandang bahwa sebenarya Akar telah berada dckat sckali dcngan X 0 ataupun X1 Salah satu alternatiflain untuk memperccpat perhitungan Akar lni adalah pemakaian Metode Regu]afalsi. Metode ini disebut juga Metodc False Positions. •
Dalam Metode RegulaFalsi ini, sama sepcrti Metode Biseksi, kita menentukan terlebih dahu]u sebuah interval [X0,X1] yang mcmuat Akar. Akar kita jcpit dengan interval bagian dari (X0,X1] tersebut secara bcrulang-ulang. Dalam Mctode ini, penentuan titik ujung interval baru X2 dilakukan dcngan rnenarik garis Iurus dari titik (X 0, f(X0)) ke titik (X1, rrx,». Titik potong garis dengan sumbu X adalah titik X iPerhatikan Gambar (2.4). f(x)
t
Gambar 2.4 f(x)
Gambar 2.4 (a)
35
Pada Gambar 2.4, juga icrlihat lcbih ccpatn yu Mctodc Rcgulafalsi mcnjcpit Akar di bandingkan dcngan Mctodc Biscksi. Mcmang di sini Akar jauh Icbih dckat kc xi. Namun hal ini tidak sclalu dcmikian. Garnbar z.f mcrnpcrlihatkun contoh pcnurunan ukuran interval dari Mctodc Rcgulafalsi yang lcbih lambat dibandingkan Mctodc Biscksi.
Dalam pcrhitungan praktisnya, garis Imus aruara kcdua titik (X 0,f(Xc)) dan (X1,f(X1)) tidak kita gambar . Pcrsamaan garis tcrscbut dapat dihitung sccara analitik biasa, yakni (x-X<)/ (X 1-X 0) = (y-f(X0))/(f(X) -f(X)). Pcrpotongan dcngan sumbu X adalah titik bcrabsis X2 dcngan ordinal y
= 0.
Jadi atau
=
X2
(X0*l{X1)-X1*f(X0)/(f (X1)-f(X))
Rumus ini dapai pula kita tulis
= x -P*f(X ), dcngan P = (X -Xi)/(f(X.)-f(X)). X,
1
1
1
Pcrhitungan sctcrusnya adalah sama scpcrti pada Mctodc Biscksi . Ada baiknya bila Pcmbaca mcmpcrhatikankcmbali tulisan bagian 2.1 yang lampau. Bcrikut ini proscdur dari Mctodc Rcgulatulsi sccar a Bahasa Pascal. Procedure rcgulafalsi (function j( x.reul) : real . xo xt.xtot : real : maxits posints var root.fatroot : real; var noofits : posints ; var cunvergcd : boolean) ; {Diasumsikan xO < xi) .
.
var x2.fx.f0
: real; itcount : 0 maxint : state : (iterating, withintol, maxitsreached) ..
begin itcount := 0; state: iterating; repeat itcount := itcount + I : JO:= xO-exp(ilxO) : fl := xl-expt ltxl ) : X2 := xt-txl-xt) )" jll(jl~fO J : j2 := x2-exp( llx2);
=
36
:
iffO*j2 < 0 then xi:= x2 else begin xO := x2 end ; if _(x2-xl)!xl _ <= xtol then state : = Withinrol else if itcount = maxits then state := maxitsreached until state < > iterating or state = withintol ; converged := state withintol ; root := xl-(xl-xO)*fl!(fl-fO); fatroot := ftroot) ; noofits := itcount
endiregulafalsi). Untuk menunjukkan iterasi, sebaiknya kita mcngambil tolcransi secara relatif, yakni: I
(X2-X1)/X1
atau
(X2-XJ/X 0 I
Hal ini disebabkan kemungkinan bahwa sclisih _X2-X 1_ atau _X2-X~ yang mendekati nol. Bagi pembaca yang mungkin tcrbiasa dcngan bahasa komputer BASIC, berikut ini ditampilkan Program untuk mcnghitung Akar dcngan Mctodc Regulafalsi kita tersebut. Kita ambil sebagai contoh adalah fungsi f(x) = x - c(I/•) Program 2.3:Metode Regulafalsi
5 10 40 50 70 80 90 122 124 125 I27 128 132 134
CLS REM METODE REGULAFALSI 20 REM UNTK MENENTUKAN AKAR 30 REMXO DAN XI ADALAH REM BATAS KIRI DANKANAN INTERVAL INPUT "BATAS KIRI"; XO 60 INPUT "BATAS KANAN"; XI REM T Adalah TOLERANSI REM M = MAKSIMUM ITERASI INPUT "TOLERANSI"; T 100 INPUT "MAKSIMUM ITERASI";M 110 REM I=ITERASI KE 120 I= 0 FOR K = I TO 80 PRINT"-";: NEXT K PRINTTAB(6); "ITERASI"; TAB(l9); "XO"; TAB(27); "XI"; TAB(40); "X2"; TAB(53); "Xl-XO";TAB(70);FO*F2 FOR U= I TO 80 PRINT"-": NEXT U 130 I= I +'1 FO = XO - EXP(l/XO) A = XI - EXP(l/XI)
37
140 150
X2 = Xl - (Xl-XO) * Fl/(Fl-FO) 142 F2=X2-EXP(l/X2) PRINT TAB(8); I; TA8(18) : XO: TAB(2(i):X l:T A8 (39):X2:TAB T AB(66)
(52); XI-XO;
; FO * F2
- Xl)/XI)
< T THEN 240
160
IF ABS((X2
165 170 200 210 220 230 240 260
IF C = M THEN 240 IF FO * F2 > 0 THEN 210 180 IF FO * F2 = 0 THE N 230 190 XI= GOTO 130 XO=X2 GOTO 130 REM X2 = AKAR PRINT "AKAR= ": X2 250 FORT= I TO 80 PRINT "-"::NEXT T END
300
Bila Program di atas kita R U N, ha~iln)
,1
X2
.i dalah
BATAS KIRI? 1 BATAS KANAN? 2 TOLERANSI? 1 E-04 MAKSIMUM ITERASJ? 15 ITERASI
XO
1 2 3 4 5 6 7
XI 2 1.830264 1.783184 1.769252 1.765052 1.763778 1.763392
XI-XO
X2 1.830264
1.783184 1.769252 1.765052 1.763778 1.763392 1.763274
.8302641
.783I838 .7692521 .7650518 .7637782 .7633915
FO*F2 -.177486 -5.347201 E-02 -1.620983E-02 -4. 922598 E-03 · 1.495501 E-03 -4.543244E-04 - I .376492E-04
AKAR = 1.763274 2.3 METODE SEKAN
Pada bagian yang baru lalu, dapat dt Ii hat bagaunana Mctodc Rcgulafalsi bckcrja . Mulamula ditcntukan scbuah interval [ X",X /yang mcngandung Akar Iungsi It x ) yang kita cari. Pada setiap kali itcrasi, salah satu titik ujung interval, \ , atau XI, bergcrak mcmpcrk ecil panjang interval. Nampak bahwa Akar lungsi seolah-olah scmakin dijcpit oleh titik ujung interval tersebut. Iterasi dihcntik an sctclah dicapai jumlah maksimum itcrasi tertcnru ataupun setelah tolcransi tcrtentu. 1
Untuk menentukan titik ujung baru interval, kita tarik garis lurus mclalui titik (X 0,f(X J) dan (X1,f(X 1)). Titik ujung baru, yakni X2, adalah pcrpotongan garis lurus di atas deng an sumbu x. Setelah dipcrolch titik X2, dcngan kritcria sama scperti pada Mctodc Biseksi, kita tentukan interval [X0,XI] untuk itcrasi bcrikutnya.
38
Metode Regulafalsi mengandung suatu kclcmahan. Di sini, lain dcngan Metodc Biseksi, panjang interval pcnjepit I X0,X 11 yakni _ X 1-X _ kebanyakan tidak dapat rncndckati 1 nol. Hal ini disebabkan kebanyakan fungsi mempunyai gralik yang cekung pcnuh atau cembung penuh di sekitar Akar. Karenannya hanya salah satu titik ujung interval, X 0 atau X1, yang bergerak menjcpit scmcmara titik ujung yang lain selalu tctap untuk scluruh iterasi. Perhatikan tabcl yang mcrupak an tabcl itcrasi Metode Regulafalsi untuk fungsi f(x) = x - e1 , yang lalu. Titik X0 tidak bcrgcrak sampai seluruh iterasi sclcsai dijalankan . "'
Dengan demikian, kita sebaiknya tidak mcnggunakan toleransi _X1 - Xo-- <= xtol, karena mungkin sekali panjang interval pcnjcpit I X0,X j tcrscbut masih cukup bcsar, padahal titik ujung interval tclah bcrgerak sampai dckat sckali kc Akar. Kalau hal terakhir di atas terjadi, dan itera si kita lanjutk an. pergcsaran titik ujung icrscbut akan sangat kecil sckali. Jadi, yang kita amati adalah pcrgcscran rclatit tiiik ujung interval, yakni apakah _(X1-X2)/ X1 _ atau _(X1-X2)/X 0 _ <= x/tol. Dapat dicatat bahwa dal.un Mctodc numerik orang lebih suka menggunakan pendckatan dcngan error rclatif dioandingkan pcndekatan dengan error mutlak . Di sinipun kita tidak menggunakan pcngarnatan tcrhadap nilai _ X1-X2 _ ataupun 1
_ Xo-X2-· Berdasarkan keadaan yang tcrdapat pada Mctodc Regula Ialsi, dilakukan modilikasi terhadapnya . Metodc modifika si R cgulafalsi ini disc but M etod c S ekan, yang kcrapkali disebut juga Metode l nt erpolasi Linter .
Perbcdaan utama antara Mctodc Sek an dcngan Mctodc Rcgulafalsi scrta Biseksi adalah bahwa pada Metode S ekan udak dilakukan penjepitan Akar. Pada Mctode Seakan mulamula kita mengambil dua titik scrnbarang (X0,f(X1,)) dan (XJ(X )) pada fungsi dcngan 0 interval [X ,XJ tidak haru s men jepit Akar Jadi dapat saja l{X 0) dan f(X1) bcrtanda sama. Sama seperti pada Mctodc Rcgulafalsi , kita tarik garis lurus mclalui kedua titik (X0,f(X0)), dan (XJ(X1)) yang mcmotong sum bu x di titik ( X2,0). Jadi sama seperti pada Metode R cgulafalsi, nilai X2 adalah sarna dcngan 1
.
X, -(X
1
X,.)) -X0)* f (X )!(I ( X )-f( ir crasi bcrikutnya, kita lakukan pergcsaran ,yakni 1
Untuk mclak sanaan xi<- x2. yakni harga XO baru diisi (diganu) dengan harga baru diisi dengan harga X2.
XO<-
xi. dan xi lama, scmcntara harga xl
Demikianlah dilakukan ucra si scpcrti di aras.sarnpai icrcapai batas maksimum maxits, ataupun sampai dipcroleh tolcr ansi _ (X -X2)/X 1~ <= X,01 1
•
Jadi kalau kita tinjau k e proses pclak sanaan Mctodc Sek an icrhadap scbuah fungsi tertentu, maka akan dipcrolch sc barisan x1 i = 0, I, .... , k, k+ I, .... yang mempunyai hubungan r ekurensi: •
x1+1
=
x1-(xi-xi)*f(x)l(f(x)-f(x1))
Bila iterasi kita hentikan sctelah iterasi kc k maka xk+i merupakan Akar (pcndekatan) dari fungsi. Untuk lebih jclasnya proses Mctode Sek an di atas dapat dilihat pada Gambar (2.5), untuk iterasi pertama dan kcdua .
39
y
y
,
,"
, ,
, "
,'
,"
,
I
I
, .. ,
I
I
I
I
I
I
x, x
0
.,,"'
0
x.
Gambar 2.5 Selanjutnya Procedure Secant bcrikut ini, sccara Pascal, kiranya dapat lebih menjelaskan lagi. Di sini pcrlu diperhatikan adanya kcmungkinan tcrjadinya overflow. Hal ini disebabkan oleh pembagian olch no\ bi\a _f(X )-r(X0J _ kccil sckali mcndekati nol. Hal serupa juga terjadi bila x 1 dckat sckali kc no\. 1
Procedure Secant (function fie.real): real ; xO,xl xtol :real; maxits : points; var root.fatroot : real; var noofits: points; var converged: secountcomes);
const
assumedzero = 1 E-20; var JD fl newf :real ; itcount : O maxint ; xOiscurrent : boolean; state : secstates; begin ..
JD
:=f(xOJ;fl :=!(xi) ; xiliscurrent :=false; itcount := O; state :> it erating ;
repeat
if abs(fl-jD J < = begin itcount
:=
assumedzero then state : = tooflat else
itcount+ I ;
40
if xOiscurrent
then
begin xi := xl-(xl-xO)*fl!{fl-jD) fl := f(xl ); newf :=fl ; end else begin xO := xO-(xO-xJ )*f(JJ(JO-fl) JD := f(xO ); newf: = .fV end; xOiscurrent := not xniscurrent ; if abs(xO) <= assumedzero then state := toonearzero else if abs(xl-xO)!xO <= xto/ then state := withintol else if itcount maxits then state : maxitsreached end until state <> iterating; outcome := state;
=
if xOiscurrent
then
begin root:= xO; fatroot := f() end else begin root :=xi; fatroot :=fl end; nofits : = itcount end{secant};
Untuk mclihat lcbih clisicnnya Mctodc Sckan dibandingkan dcngan Mctodc Biscksi, kita dapat mcmpcrhatikan Tabcl 2.9 bcrikut ini. Untuk mcnghitung Akar fungsi f(x) = x c11 •, Metodc Biscksi mcmbutuhkan 21 itcrasi, scdangkan Mctodc Sckan cukup 5 itcrasi. Tabel 2.9. Pcrbandingan Mctodc Biscksi dan Sckan Iterasi l
2
3 4 5 Konvergcn
21
Biscksi
Sek an
I .5CXX)OO I .750CXX) 1.875000 1.812500 1.781250
1.830264
1.759565
1.763286 1.763223 1.763223 5
41
LAT/HAN
Silakan Anda membuat sebuah Program Mctodc Sckan ini. 2.4 METODE ITERASI TITIK-TETAP Kali ini akan kita bicarakan, suatu Metodc yang bcrbcda sekali dengan Metode Biseksi, Regulafalsi ataupun Aekan. Metodc terscbut adalah Mctode iterasi Titik-tetap. Implemnentasi iterasi Titik-tetap ini sebcnamya cukup mudah dan sederhana. Namun ada beberapa syarat yang harus dipenuhi oleh fungsi, agar Metode ini dapat dilaksanakan serta dapat mcnghasilkan solusi. Syarat pertama, bahwa f(x) = 0 harus dapat diubah kc bentuk x = g(x). Kalau hal ini dapat kita lakukan, maka barulah kita mcnggunakan pcrsamaan rckurcnsi :
xk+1 = g(xk),
untuk k = 0, 1,2, ... , untuk mencari Akar terse but. Di sirii x0 adalah asumsi awal kita. Bentuk Fungsi g(x) dapat kita tcntukan secara berbcda-beda. Pandang, misalnya fungsi f(x) = x - e1"', yang akan kita hitung akamya. Ia dapat kita tulis menjadi f(x) =x -e1"'= 0, atau x = ellx. Jadi, g(x) = e1"'. Dapat pula, dengan melakukan operasi logaritma natural In terhadap kedua ruas persamaan, diperoleh ln(x) = l/x, atau x = l/ln x.
Selain itu dapat pula kita kcrjakan sehingga mcnjadi 2x = x + e1"', a tau x = (x + e1"')/2. Berarti g(x)=(x + e1")/2. Dengan melakukan iterasi rncnggunakan persamaan rekurcnsi xk+i = g(xk) di atas, yakni menghitung x1 = g(xo), x2 = g(x1), x3 = g(xz), dan seterusnya, diperoleh barisan nilai x0, x1 ,x2, ... yang kita hara pk an konvergcn kc Akar dari fungsi f(x). Kalau kita perhatikan bcntuk x = g(x), maka Akardari f'(x) iak lain adalah perpotongan antara garis lurus y = x dan kurva y = gtx). Gambar 2.6 bcrikut mcngambarkan Jalannya iterasi yang mengarah ke titik potong tcrscbui di alas tcrnyata tidak sclalu tercapai . lterasi
42
kita
acapkali
divergcn.
Untuk
melihat
hal tersebut,
perlu
dilakukan
beberapa
analisis
matematika terhadap apa yang discbut titik-tctap, Pandang fungsi g(x) yang tcrdcfinisi pad a interval [ a,b ]. Pada interval [a,b] terse but terdapat bcbcrapa w,sedemikian sehingga-g(w) = w. Maka kita katakan bahwa fungsi g(x) mernpu-
nyai titk-tetap
w dalam [a.b].
Sebuah teorema telah tersedia untuk menanyakan apakah scbuah fungsi memnpunyai titik-tetap pada suatu interval. Tcorcrna tcrscbut mcngatakan hahwajika g(x) kontinu pada interval [ab] dan g(x) berada dalam [ab] untuk semua x dalam [a.b] .maka g(x)mempunyai titik-tetap di dalam [a b]. Sclanjutnya, jika turunan pcnama g'(x) ada di dalam (a,b) dan g'(x) <= k < 1, untuk setiap x dalam (a.b), maka titik-tctap tcrscbut tunggal. Dapat dicatat bahwa teorema di atas hanya rncmberi syarat cukup. la tidak memberi syarat perlu . Jadi kalau kondisi di atas tidak terpcnuhi, masih nungkin bahwa g(x) mempunyai titik-tetap yang tunggaJ. Sebagai contoh adalah fungsi x = c". Fungsi g(x) = e-2• mempunyai turunan g'(x) = -2e-2• yang pada interval [0, 1] misalnya di titik 0,1 mempunyai harga-1,6375. Kalaukita amati Iungsi e-2• pada intcrval[0,1] adalah turun langsung, sedangkan fungsi x adalah naik langsung, sehingga secara grafik pcrpotongan kcdua fungsi tadi adalah titik-tctap yang tunggal.
r
Gambar 26
Bagaimanapunjuga, tcorema di atas mcrupakan teorcma pcnting yang dapat kita pakai sebclum kita mcnggunakan Mctodc iterasi titik-tctap ini. Gambar 2.7(a) & 2.7(b) mem pcrlihatkan divergcn-nya itcrasi karcna g'(x) < 1. Sekarang kita Jihat bagaimana kita menggunakan teorcma di atas tcrhadap ketiga g(x) yang berbeda sewaktu kita akan nlcnghitung Akar dari I(x) = x - c11' tadi. Misalnya kita ambil
43
X0 = 1,5. Untuk g(x) = c'"' kita dapatkan g'(x) = (-e1"')/x2 dan g1(xo> = 0,8657 < 1 . Inibcrarti kita dapat mclaksanakan dengan g(x) di atas yang akan konvcrgcn kc akar fungsi.
itcrasi titik-tetap
r
Gambar 2.7(a)
Untuk g(x)
=
Gambar 2.7(b)
I/In x didapat g'(x)
=-
1/x(ln x)2 dan g'(x.)
= 4,0551
> 1. Tcntunya kita
tidak menggunakan g(x) ini untuk itcrasi. Mcmang tcmyata kalau kita paksakan iterasi, ia akan divergen.
=
Terak.hir untuk g(x) 0,0672 < 1.
=
x+e11")
I 2. Tumnan pcrtama g1(x)
=
0,5 - e11•/ (2x2) dan g'(x.)
Tabel 5.10 menunjukkan pclaksanaan itcrasi Titik-tctap untuk fungsi f(x) = x-e'> dengan tiga buah g(x) yang bcrbcda scpcrti di atas. Asumsi awal adalah x0 = 1,5 dan iterasi berhenti setelah toleransi r clatif _ · (x-oldx)/oldx _ <= xtol, dcngan xtol = 5E-07. Tabel 5.10 Iterasi
g(x) = e111•
1 2 3 4
l.947734 1.670991 l.819291 1.732672 1.780944
5
g(x) = I/In x 2.466303 1.107763 9.771126 0.438706 -1.213701
44
g(x)
=
(x+e111 >;2
1.723867 1.755034 1.761464 1.762843 1.763205
•
Berikut ini disajikan Procedure Fixed Point dalam bahasa Pascal, agar kiranya dapat lebih menjclaskan bckcrjanaya Mctodc itcr asi Titik-tctap ini. Procedure Fixedl'oint (junction g(x:real): real; xir.xiol : real; maxits : posints; var root : real ; var noofit s: po sints ; var out com .fpoutcomes); const assumedzero = I E-20 var x, oldx : real; itcount : O .. maxint state : fpstates; begin x:= x O; itcount=O: state+iterating ; r e peat if abs(x)<= a s sumedz cr o then state = tooncncarzcro else be gin itcount =ttcouru+ I ; oldx>x; x:= gix); if absttx-oldxuoldx) <= xtol then stare withinol else if it count = maxi ts then state := maxitssreachcd end until state <> iterating ; outcome := state root := x; noofit s := it count end {fixedpoint }; ·
LAT/HAN Silakan Anda mcmbuat Program untuk Metodc ltcrasi Titik-Tctap ini.
2.5 METODE NEWTON-RAPHSON Di antara Mctode lain yang ada , Mctodc Newton ini tcrnyata ccpat mcnjadi populer, dan disukai pemakai. Mcmang, ia rclatif ccpat waktu pclaksanaannya dibandingkan Metode lain. Metode ini dikcnal pula scbagai Mctodc Newton-Raphson. Pandang bahwa a adalah Akar dari fungsi l{x) yang kita inginkan. Misalkan xi titik pendekatan awal kita. Kita usahakan x 1. tcrscbut sedekat mungkin dcngan garis singgung
45
pada kurva f(x) di titik P(xl ,f(x 1)).Garis singgung ini mcmotong sum bu X pada sebuah titik yang lebih dekat lagi ke a dibandingkan x 1. kita scbut titik potong terscbut x2. Perhatikan gambar2.8
Gambar 2.8
Dari kalkulus kita ingat bahwa pcrsamaan garis singgung mclalui titik P tersebut adalah : y - f(xl) = f'(xl)(x - xl). Di sini f'(xl) adalah gradien garis singgung. Kalau garis singgung tersebut kita potongkan dengan sumbu X, akan kita peroleh titik x2 yang memenuhi x2 = x l - f(xl)/f'(xl) . Kalau proses ini kita ulang terus menerus maka akan kita perolch nilai x2 yang semakin dekat kepada Akar. Konvergensi tercapai dcngan sangat cepat. Secara rekurensi pcrsamaan di atas mcnjadi I+
di sini
i
1
=
x. -f(x )/f'(x)
= 1, 2, 3, ...
I
I
I
, ... dan I'(x) adalah turunan pcnama dari f(x) pada titik x
1
•
Dalam menggunakan McLode ini, jclas turunan fungsi I'(x) harus dengan mudah ditentukan. Sekarang kita perhatikan bcberapa contoh. Misalkan kita diminta menghitung Akar terkecil yang positif dari x3 - 5x + 3. Dcngan menggunakan tabel perhitungan nilai fungsi didapat bahwa Akar-Akar fungsi ketiganya real, yang pertama bcmilai antara -2 dan -3, yang kedua antara 1 dan 2, serta Akar yang ditanyakan berada antara 0 dan 1. Di sini I'(x) = 3x2 - 5. Bila kita ambil x 1 = 1, maka x2 = 1 - 1/2 = 0,5. Kemudian berturutturut kita hitung x3, x4 dan seterusnya, dipcroleh : x3 = 0,5 + 5/34 = 0,64 x4 = 0,64 + 0,062144/3,7712 = 0,6565 x5 = 0,6565 + 0,00044/4121125/3,70702325 = 0,656620 x6 = 0,656620 + 0,0000001597528/3,7065503268 = 0,656620431047 Terlihat bahwa konvergensi tercapai dcngan ccpat sckali. 46
Contoh bcrikut adalah fungsi Lransccndcn f(x) = c - 0,4L - 9. Mcnurut hasil yang bisa kita pcrolch dari grafik fungsi tcrscbut, maka akan mcnghasilkan Akar negatif -22,5 dan Akar positif sekitar 6. Sckarang, kita mcncoba akan mcncarinya dcngan Metode Newton
berikut
ini
f(t) = e0 4' - 0,4t - 9 f' (t) = 0,4( e0A1 - 1) •
maka: tl = 6
t2 = 6 - 0,37682/4,009272 = 6, 1 t3 = 6, 1 - 0,03304/4.189216 = 6, 1 - 0,0079 = 6,0921
Temyata hasil terscbut mcrupakan hasil pcndckatan yang baik untuk pcndekatan sampai 5 tempat dcsimal. Berikut ini mcrupakan proscdur Newton dalarn bahasa Pascal. Di sini kita asumsikan pcrlcngkapan Pascal bcrikut : type poslnts= l .. rnaxint; ncwstatcs=(itcrating,wiLhimol,maxiLsrcachcd,Looncar1.ero,tooflat); ncwtoutcomcs=withintol .. tooflat: Procedure Newton (function fix: redi.real; function f dashedt x.read): real; x() xtol :real; maxits : posints; . var root fatroot: real; var noofits : posints; var outcome : newtoutcomes): const assumedzero = I E-20; var state .newstates; x oldxfxfdx : real ; itcount :() .. maxint, begin x :x().fx:=j(x); it count = ( ): state iterating . repeat if abs(x)<= assumedzero then state =toonearzero else begin it count := itcount +I fdx = [dashedix); i abst fdx ) <= assumcdzcro then state := tooflat else f .
.
b~ain. oldx:= x:x: = x -txt tdx {x =ft x)
47
:
if abs (tx-oldxuoldx) <= xtol then state withinol else if itcount = maxits then state := maxitsreached end;
until state <> iterating ; outcome := state; noofits := itcount; root:= x; fatroot := fx endinewton).
Sebagai perbandingan, bctapa ccpatnya Mctodc Newlon ini dibandingkan dengan MctodcMetode sebelumnya,kita dapat melihatnya pada Tabcl 2. 11, yakni mcnghitung Akar fungsi f(x) = x -e oix> Tabel 2.11. Iterasi
Newton 1,739987
1 2
1,763078 1,763223 1,763223
3 4
Konvergcn dalam 4 Itcrasi
---------------
Berikut ini dibcrikan Conteh Program yang cukup lcngkap mcngcnai Pcrhitungan Akar. Program 2.4 mcngetcngahkan Mctodc Ncwton-Raphson, khusus untuk menghitung scmua Akar suatu Polinom bcrderajat n. Dalam Program terse but juga dibcrikan scbuah Aplikasi pada bidang Kimia, bcrupa perhitungan Pcrsamaan Beanie-Bridgeman. Pembaca yang benninat dapat mcncoba Program tcrscbut. Di sini kita manfaatkan tcknik Pcmbagian Sintctik Polonom (Synthetic Division). Program 2.5 adalah Program yang lcbih lengkap dari Mctodc Sekan scrta Mctodc NewtonRaphson. ·
Program 2.4
0 5
10 15
20 25
30
SCREEN O:WIDTH 80:PRINT CHR$(12):CLS:KEY OFF PRINT"*******************************************************" *" PRINT"* *" PRINT"* CONTOH PROGRAM *" PRINT"* PRINT"* METODE NEWTON-RAPHSON DENGAN SYNTHETIC *" DIVISION *" PRINT"*
48
35 40 45 50 60 95
97 99
100 110 120 130 140 150 160 170 180 190 200 210 220 225 230 240 250 260
270
280 285
290 295
300 305 310 320 330 340 350 360 400 410 414 415
PRINT"* UNTUK POLJNOM DERAJAT N *" *" PRINT"* PRINT"* DAN PERSAMAAN BEATTIE-BRIDGEMAN *" PRINT"* *" PRINT"* *" PRINT"*******************************************************" INPUT "TEKAN ENTER";ZX$ CLS '************************ Program Utama *********************** DIM A(l00,4),AA(20),B(20),XW(20) GOTO 250 'Evaluasi polinom dan dcrivatifnya F = O:FP=O - 1 FORKK=NTOOSTEP F = F + AA(KK) * X I\ KK IF KK=O GOTO 220 FP= FP+ KK*AA(KK) *XI\ (KK-1) NEXTKK RETURN 'Mernilih problem untuk diselcsaikan ' CLS:PRINT"PROBLEMA UNTUK DISELESAIKAN:" PRINT:PRINT" I. POLINOM DERAJAT N" PRINT:PRINT" 2. PERSAMAAN BEATTIE-BRIDGEMAN" PRINT:PRINT"PILIHAN ANDA";:INPUT METH IF METH2 GOTO 250 ON METH GOSUB 3000,4000 RST$="Y" TIT$="AKAR"+STR$(NW-N+ I) IF RST$=''T" OR RST$="t" THEN SCREEN I: GOTO 430 'Input variabcl pcncarian CLS:PRINT:PRINT''TENTUKAN RANGE DARI PENCARIAN" PRINT "LIMIT BA WAH";: INPUT MINX PRINT "LIMIT ATAS";: INPUT MAXX PRINT:PRINT"BERIKAN DUGAAN TERBAIK UNTUK AKAR";:INPUT XI PRINT:PRINT "BERIKAN KRITERIA KONVERGENSI (EPSILON) DARI F";: INPUT EPS IF ALLROOT$=''T" OR ALLROOT$="t" GOTO 430 PRINT:PRINT"ANDA INGIN MENGUBAH LAGIHARGA PARAMETER DI
49
ATAS UNTUK SETIAP AKAR(Yff)";:INPUT 420 430
440 470 480 490 500 510 520 530 540 550 560 570 580 590 600 610 620 630 640 650 660 670 680 690 700 710 720 730 740 750 760 770 780 790 800 810 820 830 840 850 860
RST$
'Kalkulasi fungsi dalam range dari pcncar ian
DX = (MAXX -MINX) I 100 FORK= 0 TO 100 X=MINX+K*DX A(K,l)=X GOSUB 140:A(K,2)=F NEXT K GOSUB 2000 'Rutin Mcncari Akar •
PRINT:PRINT"TEKANENTER UNTUK MELANJUTKAN":HK$::::1NPUT$(1) IF GRAPH$=''T" OR GRAPH$="t'' GOTO 590 GOSUB 10000 'Rutin Plot IF ALLROOT$=''T" OR ALLROOT$="t" GOTO 101() XW(N) = xi 'Synthetic division IF N = 1 GOTO 960 B(N-1 )=AA(N) FOR R = 1 TO N - I B(N - 1 - R) = AA(N - R ) + B(N - R) * XI NEXT N=N- 1 FOR JJ = N TO 0 STEP - 1 AA(JJ) = B(JJ) NEXT 'eek apakah akar komplcks IF N<>2 GOTO 910 WW=AA(1)"2-4* AA(2)*AA(O) IF WW>=OGOTO 910 XW(2)=-AA(1)/(2*AA(2)) XW(l)=SQR(-WW)/(2*AA(2)) PRINT" KE";NW;" AKAR ADALAH:" FOR JK = NW TO 3 STEP - 1 PRINT XW(JK) NEXT 'Cetak akar Kompleks
50
870 880 890 900 910 920 930 940 950 960 970 980 990 1000 1010 1020 1030 1040 1050 1060 1070 1080 1090 1100 2000
2010 2020 2030 2035 2040 2050 2060 2070 2110 2120 2130
2140 2150 3000 3010 3020 3010
PRINT XW(2);"+";XW(l);"i" PRINT XW(2);"-";XW(l);"i" GOTO 1030 FOR PAUSE=l TO 4000:NEXT PAUSE IF N > 0 THEN SCREEN 0: WIDTH 80:GOTO 300 'Cetak akar PRINT "KE ";NW;" AKAR ADALAH:" FOR JK = NW TO 1 STEP - 1 PRINT XW(JK);" "; NEXT 'Option untuk reset kondisi IF METH= 1 THEN GOTO 1070 PRINT "ANDA INGIN KONDISI YANG BARU(Yff)";: INPUT V$ IF V$ = "T" OR V$="t" THEN GOTO 1070 SCREEN O:WIDTH 80:PRINT CHR$(12):GOTO 290 PRINT "ANDA INGIN RUN KEMBALI PROGRAM(Yff)";: INPUT V$ IF V$ = "T" OR V$="t" THEN GOTO 1100 SCREEN O:WIDTH 80:PRINT CHR$(12):GOTO 250 CHAIN "numerl
'*************
Subroutine 1: Metode Newton-Raphson
*****************
PRINT CHR$(12):PRINT"KONVERGEN KE AKAR";(NW -N+l):PRINT FOR ITER=OTO 40 STEP 2 X=Xl :GOSUB 140 PRINT TAB(3) "x=";Xl TAB(20) "f(x)=";F A(ITER,3)=Xl :A(ITER,4)=0 A(ITER+ l ,3)=X1:A(ITER+1,4)=F IF ABS (F)< EPS GOTO 2140 Xl=Xl-F/FP NEXT ITER PRINT"MELIWATI BATAS ITERASI:TIDAK KONVERGEN": PRINT''ITER='';ITER :PRINT''EPS='';EPS:PRINT''F='';F: PRINT"KUNCI FUNGSI F5 AKAN MELANJUTKAN PROGRAM":STOP RETURN
'************** Subroutine 2: Definisikan polinom **************** PRINT: PRINT "DERAJAT POLINOM";: INPUT N:NW = N PRf\!T:PRINT "KOEFISIEN POLINOM"
51
FOR K = N TO 0 STEP - 1 PRINT "A";K;"=";: INPUT AA(K) 3060 NEXT 3070 3080 PRINT:PRINT"ANDA I NGIN MELIHAT SEMUA AKAR(Yff)";:INPUT ALL ROOT$ 3090 PRINT:PRINT"ANDA INGIN GRAFIKNYA(Yff)";:INPUT GRAPH$ 3100 RETURN 3110 4000 '****Subroutine 3: Mcndcfinisikan pcrsamaan BEATTIE-BRIDGEMAN**** 4010 ' 4020 N=4:NW=N 4030 PRINT:PRINT"ANDA SUDAH MEMASUKKAN KONSTANTA BEATTIEBRIDGEMAN(Yff)"; 4040 INPUT VK$ 4050 IF VK$="Y" OR VK$="y" GOTO 4090 4060 PRINT:PRINT"MASUKKAN KONSTANTA BEATTIE-BRIDGEMAN:" 4070 INPUT "AO=";AO:INPUT "BO=";BO:INPUT -"ALPHA=";ALPHA 4080 INPUT "B=";B:INPUT "C=";C 4090 PRINT:PRINT'TEMPERATUR(KEL VIN)=";:INPUT T 4100 PRINT "TEKANAN/PRESSURE(ATM)";: INPUT P 4110 R = .08206 4120 BETA = R * T * BO - AO - R * CI (T " 2) 4130 V=R*T/P 4140 GAMMA = - R * T * BO * B + ALPHA * AO - R * BO * CI (T " 2) 4150 DLTA = R *BO* B *CI (T" 2) 4160 AA(4)=P:AA(3)=-R*T :AA(2)=-BETA:AA(l)=-GAMMA:AA(0)=-DLTA 4170 PRINT : PRINT "VOLUME GAS IDEAL=";V 4180 PRINT: PRINT"BETA=";BET A:PRINT"G AMMA=";GAMMA :PRINT"DLTA=";DLTA :PRINT 4190 PRINT:PRINT"INGINMELIHATSEMUAAKAR(Yff)";:INPUT ALLROOT$ 4200 PRINT:PRINT"SOLUSI SECARA GRAFIKAL (Yff)"; :INPUT GRAPH$ 4210 RETURN 4220 10000 '******************** Subroutine 4: Gambar Grafik****************** 10010 10020 CLS:SCREEN 1 10030 'Mencmpatkan maksima dan minima untuk pcnskalaan Sumbu 10040 MINX=A(0, 1):MAXX=A(0,1 ):MINY =A(0,2) :MAXY =A(0,2) 10050 FORK= OTO 100 10060 IF A(K ,1) MAXX THEN MAXX = A(K ,l) 10070 IF A(K ,2) < MINY THEN MINY = A(K ,2) 10080 10090 IF A(K ,2) >MAXY THEN MAXY= A(K ,2) 3040 3050
52
10100 10110 10115 10120 10130 10140 10150 10160 10170 10180 10190 10200 10210 10215 10220 10230 10240 10250 10260 10270 10280 10290 10300 10310 10320 10330 10340 10350 10360 10370 10380 10390 10400 10410 10420 10430 10440 1()450 10460 10470 10480 10490 10500 10510
NEXT K 'Sumbu Y IF MINY>O THEN MAXY=l .1 *MAXY: MINY=.9*MINY IF MAXYO THEN LINE(MINX,MINY)-(MINX,MAXY):HP=4 IF (MINY/MAXY)>O THEN LINE(MINX,MINY)-(MAXX,MINY) LOCATE VP,40:PRINT"x" LOCATE 1,HP:PRINT"f(x)" 'Mcngatur nama Sum bu Vcrtikal IF LEN(NAM$)>16 GOTO 10310 V 1 =3+(14-LEN(NAM$))/2 FOR I=l TO LEN(NAM$) LOCATE Vl+I,2:PRINT MID$(NAM$,l,1) NEXT I GOTO 10340 FOR I= 1 TO 16 LOCATE 3+1,2:PRINT MID$(NAM$,l,l) NEXT I 'Mcngatur narna Sum bu horisorual IF LEN(TIT$)>35 GOTO 10390 LOCATE 22,5+(36-LEN(TIT$))/2 PRINT TIT$ GOTO 10400 LOCATE 22,S:PRINT MID$(TIT$, 1,36) 'Mcnggambar Fungsi X=A(0, 1 ):Y=A(0,2) PSET(X,Y) FOR I=l TO 100 X=A(l,l) :Y=A(l.2) LINE -(X, Y) NEXT I 'Menempatkan Akar FOR I=O TO ITER LINE(A(I,3),A(l,4))-(A(I+ 1,3),A(I+ 1,4)) FOR PAUSE=l TO 500:NEXT PAUSE NEXT I
53
10520 10530
RETURN
Program 25 0 5 10
120
SCREEN O:WIDTH 80:CLS PRINT"******************************************************" PRINT"* *" PRINT"* CONTOHPROGRAM PRINT"* *" PRINT"* SEKAN/INTERPOLASI LINIER dan NEWTON-RAPHSON *" PRINT"* *" *" PRINT"* UNTUK SOLUSI PERSAMAAN NONLINIER PRINT"* *" *" PRINT"* PRINT"******** **************** ************************ *******" INPUT'TEKAN ENTER ";ZZ$ Program Utama ********************** '************************** DIM A(I00,4) 'Berikut ini adalah fungsi,
130
'turunannya dan namanya,
140
'ia dapat didefinisikan olch anda
15
20 25 30 35 40
50 85
99
100 110
150 160 170
180 190
DEF FNF(X)=SIN(X) DEF FNFP(X)=COS(X) NAM$="SINUS"
200 210 220 230
'Mernilih mctodc yang digunakan
240 250
260 270
280 290
300 305 310 320
CLS:PRINT"FUNGSI ANDA ADALAH FUNGSI ";NAM$:PRINT:PRINT"METODE YANG DIGUNAKAN:" PRINT:PRINT" 1. INTERPOLASI LINIER I REGULAFALSI" PRINT:PRINT" 2. NEWTON-RAPHSON" PRINT:PRINT"PILIHAN ANDA";:INPUT METH IF METH2 GOTO 280 IF METH=I THEN TIT$="METODE INTERPOLASI LINIER" IF METH=2 THEN TIT$="METODE NEWTON-RAPHSON " 'Masukkan Yariabcl program
330
340 350
PRINT: PRINT "DEFINISIKAN RANGE DARI SEARCH:" PRINT "LIMIT BA WAH";: INPUT MINX
54
360 370 380
390 400 410 420 430 440 470 480 490 500 510 520 530 540 550 560 570 650 660 670 680 690 700 703 710 1000 1010 1020 1030 1040 1050 1060 1070 1080 1090 1100
PRINT "LIMIT ATAS";: INPUT MAXX IF METH=2 GOTO 400 PRINT:PRINT"BERIKAN HARGA AWAL DARI SEARCH.":PRINT"YANG SATU LEBIH KECIL DAN YANG LAIN LEBIH BESAR DARI AKAR:": INPUT Xl :INPUT X2 GOTO 410 PRINT:PRINT''BERIKAN DUGAAN TERBAIK UNTUK AKAR";:INPUT XI PRINT:PRINT "BERIKAN KRITERIA KONYERGENSl(EPSILON) UNTUK F ";:INPUT EPS 'Menghitung
fungsi dalam range dari search
DX = (MAXX -MINX) I I 00 FORK= OTO JOO X = MINX + K * DX A(K ,I)= X A(K ,2) = FNF(X) NEXT K ON METH GOSUB 1000,2000 "Rutin Mcncari Akar PRINT:PRINT''TEKAN SEBARANG KUNCI UNTUK MELANJUTKAN":HK$=INPUT$(1) GOSUB 10000 'routine gambar grafik 'Pilihan untuk proses lagi
PRINT: PRINT "ANDA INGIN PROSES LAGI (Y/T)" ;: INPUT V$ IF Y$ = "T" OR Y$="t" THEN 710 80:COLOR IFV$="Y"OR V$="y"THEN PRINTCHR$(12):SCREENO:WIDTH 15,0,5:GOTO 250 GOTO 680 END '**************Subroutine 1: Metode Interpolasi Linier ************** PRINT:PRINT"KONVERGEN KE AKAR :":PRINT PRINT TAB(3) "x=";Xl TAB(20) "f(x)=":FNF(Xl) FOR ITER=O TO 40 STEP 2 PRINT TAB(3) "x=";X2 TAB(20) '"f(x)= ":FNF(X2l A(ITER,3)=X 1 :A(ITER,4)=FNF(X1) A(ITER+ 1,3)=X2:A(ITER+ l ,4)=FNF(X2) IF ABS (FNF(X2))< EPS GOTO 1140 Fl=FNF(Xl) F2=FNF(X2)
55
1110 1120 1130
1140 1150 2000 2010 2020 2030 2040 2050 2060 2070 2090 2100 2110 2120 2130
2140 2150 10000 10010 10020 10030 10040 10050 10060 10070 10080 10090 10100 10110 10115 10120 10130 10140 10150 10160 10170
X2=Xl-(Fl/((F2-F1 )/(X2-X I))) NEXT ITER PRINT"MELAMPAUI BATAS ITERASI;TIDAK KONYERGEN ":PRINT"ITERASI=";ITER : PRINT"EPSILON=" ;EPS:PRINT"F=";F2: PRINT''TEKAN KUNCI F5 UNTUK MELANJUTKAN ":STOP RETURN '**************
Subroutine 2: Mctode Ncwton-Raphson
****************
PRINT:PRINT"KONVERGEN KE AKAR :":PRINT FOR ITER=O TO 40 STEP 2 PRINT TAB(3) "x=";XI TAB(20) "f(x)=";FNF(XI) A(ITER,3)=X l :A(ITER,4)=0 A(ITER+ l ,3)=X 1:A(ITER+1,4)=FNF(X 1) IF ABS (FNF(Xl))< EPS GOTO 2140 Fl=FNF(Xl) FP=FNFP(Xl) Xl=Xl-Fl/FP NEXT ITER PRINT"MELEBIHI BATAS ITERASl:TIDAK KONVERGEN" : PRINT"ITERASl=";ITER :PRINT'EPSILON=";EPS:PRINT"F=";FI : PRINT"TEKAN KUNCI F5 UNTUK MELANJUTKAN PROGRAM":STOP RETURN
'**** ******** ****Subroutine
3: Mcnggambar grafik ***** **** ********
CLS:SCREEN I 'maxima and minima untuk mcnskala surnhu MINX=A(O, l):MAXX=A(O, l) :MINY =A(0,2):MAXY =A(0,2J FOR K = 0 TO 100 IF A(K, 1) MAXX THEN MAXX = A(K ,I l IF A(K ,2) < MINY THEN MINY = A(K ,2) IF A(K ,2) >MAXY THEN MAXY= A(K ,2) NEXT K 'Expand the y-axis IFMINY>OTHEN MAXY=l.l*MAXY : MINY=.9*MINY IF MAXY
56