Anda di halaman 1dari 8

I.

TUJUAN
1. Mampu membuat program sederhana dengan Scilab untuk melakukan
perhitungan tertentu dengan nilai-nilai masukan yang berbeda-beda.
2. Bisa menggunakan fasilitas Scipad untuk membuat program Scilab.
3. Memahami kegunaan fungsi dan peranannya dalam pemrograman,
terutama dalam penentuan parameter dan hasil keluaran fungsi sebagai
hasil perhitungan.
II. ANALISA
Setelah membuka program Scilab, pada jendela Scilex ketik:
>chdir('~/datapraktikum/33125');
>scipad

Perintah chdir digunakan untuk mengganti direktori default program menjadi


direktori lain yang sudah ditentukan. Sedangkan perintah scipad akan
menampilkan jendela scipad yang digunakan untuk menulis program.
1. Membuat Program Sederhana
Pada percobaan ini, pada scipad akan dituliskan program sebagai berikut:
//Namafile:zlas.sci
//Programuntukmembangkitkanmatrikskhususdengandimensin
//Nilainharusdidinputkanlebihdahulu
s=[21;11];
fork=3:n,
v=s(1,:);w=s(:,1);
t=[kv;ws];
clears;s=t;
end
Program tersebut memerlukan masukan nilai n. sehingga sebelum
program dieksekusi, nilai n harus diberikan terlebih dahulu. Kemudian,
pada scilex ketik perintah sebagai berikut:
>n=5;
>execzlas.sci;

Eksekusi program di atas akan menghasilkan matriks n x n. nilai awal


matriks adalah

[ ]

s= 2 1
1 1

. Kemudian, program akan melakukan looping

dari k=3 sampai k=n. Looping pertama akan menghasilkan matriks s baru
dengan

s=

[ ]
k v
w s

dimana k=3, v adalah baris pertama matriks s awal

v =[ 2 1 ] , w adalah kolom pertama matriks s awal

[]

w= 2
1

dan s

adalah matriks s awal. Sehingga akan dihasilkan matriks s baru

[ ]

3 2 1
s= 2 2 1
1 1 1

. Looping program akan berulang begitu seterusnya sampai

k=5. Sehingga akan menghasilkan matriks s:


>s
s=
5.4.3.2.1.
4.4.3.2.1.
3.3.3.2.1.
2.2.2.2.1.
1.1.1.1.1.

Dan untuk n=7, n=4, dan n=9 akan diperoleh matriks s sebagai berikut:
>n=7;
>execzlas.sci;
>s
s=
7.6.5.4.3.2.1.
6.6.5.4.3.2.1.
5.5.5.4.3.2.1.
4.4.4.4.3.2.1.
3.3.3.3.3.2.1.
2.2.2.2.2.2.1.
1.1.1.1.1.1.1.
>n=4;
>execzlas.sci;
>s
s=
4.3.2.1.
3.3.2.1.
2.2.2.1.
1.1.1.1.

>n=9;
>execzlas.sci;
>s
s=
9.8.7.6.5.4.3.2.1.
8.8.7.6.5.4.3.2.1.
7.7.7.6.5.4.3.2.1.
6.6.6.6.5.4.3.2.1.
5.5.5.5.5.4.3.2.1.
4.4.4.4.4.4.3.2.1.
3.3.3.3.3.3.3.2.1.
2.2.2.2.2.2.2.2.1.
1.1.1.1.1.1.1.1.1.

2. Program Mencari Akar


Percobaan kali ini akan mencari akar sebuah fungsi persamaan kuadrat
f(x) dengan menggunakan algoritma Newton. Program ini memerlukan
f(x) dan f(x) yang didefinisikan secara eksplisit dalam program dan x yang
diketahui. Percobaan kali ini membutuhkan dua program dalam scipad.
Program pertama
//Namafile:zfungsi.sci
//programuntukmenghitungf(x)danF'(x),denganx

diketahui
//digunakansebagaibagiandarialgoritmaNewtonuntuk
menetapkanf(x);
//f(x)danf'(x)harusdidefinisikansecaraeksplisitdalam
fileini
function[f,ff]=zfungsi(x)
f=x^52*x^4+3*x^34*x^2+5*x6
ff=5*x^48*x^3+9*x^28*x+5
endfunction
Program kedua
//Namafile:znewton.sci
//AlgortimaNewtonuntukmenyelesaikanf(x)=0;
//nilaitaksiranawalxharusdiinputkanlebihdahulu
function[x]=znewton(x)
k=0
[f,ff]=zfungsi(x)
whileabs(f)>0.0001
k=k+1
y=f/ff
x=xy
[f,ff]=zfungsi(x)
end
Program di atas dapat dijalankan dengan memberikan nilai pada x sebagai
nilai taksiran terlebih dahulu. Pada scilex ketik perintah sebagai berikut:
>getd('percobaan_5b');
>x=0;
>znewton(x)
ans=
1.4918006

Hasil dari program itu adalah akar dari persamaan f(x). Kedua program
tersebut akan mencari akar dari f(x)=0 dari harga x taksiran awal. Apabila
f(x) digambar dengan grafik maka akan terlihat:

Program pertama akan memasukkan x taksiran awal ke f sehingga


diperoleh f(x) dan ff sehingga diperoleh f(x) yang merupakan gradient
garis singgung terhadap f(x).
Kemudian, program kedua akan mencari harga x dengan rumus gradient,

m=

y 2 y 1
x 2x 1

f ' ( x )=

f ( x )0
x 2x

f ' ( x )=

f ( x)
x 2x

x 2x=

f (x)
f ' ( x)

x 2x= y
Sehingga akan didapat x2 yang semakin mendekati akar f(x)=0 yang
sebenarnya. Kemudian, x dimasukkan ke program pertama dan
mengulang looping program kedua sampai didapat nilai absolut f=0.0001.
Karena dalam perhitungan scilab dengan rumus ini tidak akan pernah
tercapai angka f=0, maka diambil angka f=0.0001 yang paling mendekati
0.
Apabila dimasukkan nilai taksiran awal x=5 dan x=-3, maka akan
diperoleh hasil sebagai berikut:
>x=5;
>znewton(x)
ans=
1.4917986
>x=3;
>znewton(x)
ans=
1.4917985

Setelah diamati, dapat dilihat bahwa nilai taksiran x berapapun akan


menghasilkan nilai akar f(x) yang tidak jauh berbeda. Hanya berubah pada
tingkatan

107 .

3. Program Invers Matriks


Percobaan selanjutnya akan membuat program untuk mencari invers
sebuah matriks dengan Sherman-Morison-Woodbury. Pada scipad ketikkan
program sebagai berikut:
function[a]=smw(a)
//mencariinversmatriksdenganshermanmorisonwoodbury
//matriksaharusdiinputkanlebihdahulu
[m,n]=size(a)
c=aeye(n,n)
a=eye(n,n)
fork=1:n,
z=1+a(k,:)*c(:,k)
a=aa*c(:,k)*a(k,:)/z
end
endfunction
Program tersebut memerlukan masukan nilai matriks bujur sangkar
sembarang A. Dalam scilex diketikkan:
>A=[1174;8513;632]
A=
11.7.4.

8.5.13.
6.3.2.
>inv(A)
ans=
0.31868130.02197800.7802198
0.68131870.02197801.2197802
0.06593410.09890110.0109890
>getfsmw.sci
>smw(A)
ans=
0.31868130.02197800.7802198
0.68131870.02197801.2197802
0.06593410.09890110.0109890

kemudian, program akan mencari nilai c=A-eye(n,n) yaitu matriks A


matriks identitas dari A.

][ ][

11 7 4
1 0 0
10 7 4
c= 8 5 13 0 1 0 = 8 4 13
6 3 2
0 0 1
6 3 1

Lalu, a akan digantikan dengan matriks identitas yang sama dimensinya


dengan A.

[ ]

1 0 0
a= 0 1 0
0 0 1

Kemudian, proses berlanjut kez=1+a(k,:)*c(:,k) yang berarti z=1+


(baris ke-k matriks a * kolom ke-k matriks c)

[]

10
z=1+ [ 1 0 0 ] 8 =11
6
dan a=aa*c(:,k)*a(k,:)/zyang berarti a=a-(a*kolom ke-k matriks c
* baris ke-k matriks a / z).

[ ][ ][ ]

1 0 0
1 0 0 10
0.0909091 0 0
a= 0 1 0 0 1 0 8 [ 1 0 0 ] /z = 0.7272727 1 0
0 0 1
0 0 1
6
0.5454545 0 1

Looping akan berulang sampai k=n, yaitu k=jumlah kolom matriks A.


Sehingga hasil akhir akan menunjukkan matriks invers dari A,

0.3186813 0.0219780 0.7802198


A1= 0.6813187 0.0219780 1.2197802
0.0659341 0.0989011 0.0109890

III.

KESIMPULAN
1. Pemrograman dalam scilab dapat dilakukan dengan fasilitas scipad.
2. Untuk mengeksekusi program digunakan perintah >execnamaprogram;
3. Scipad juga dapat digunakan untuk mendefinisikan fungsi yang
membutuhkan parameter dari luar (input) yang bisa menghasilkan output

dari hasil perhitungan serta dapat langsung disimpan dalam variable


tertentu.
IV.

JAWAB PERTANYAAN
1. Kegunaan dan perbedaan dari fungsi:
a. exec()
: digunakan untuk mengeksekusi program yang ada pada
direktori
b. getf(): digunakan untuk memanggil fungsi yang ada pada program
dalam direktori
c. getd()
: digunakan untuk memanggil program yang ada pada
direktori tertentu
2. Flowchart:
a. Program Sederhana

Sreta
sv == [s2( 1 ,:) ; / b a r is p e r t a m a ma t r ik s s
takd=rn [ k
wr1Ew=s;1it 2( ]:,;1 ) ; / k o lo m p e r t a m a ma t r ik s s
vt= ;w s ] ;
en s
n
d
b. Program Mencari Akar

rzS
w
E
e
ntrn
aa
e
id
drt
w
tte
x
o
nx
(
x
)
Program Pertama (zfungsi.sci)

fSE =
x
^
-tn
2a
* x
^
d
+r
3
* x
^
3
t
4
* x
^
+
5
* x
6

5
4

2
-

c. Program Invers Matriks

Program Kedua (znewton.sci)

S
k
kzza
tE
=
ff
=
a
n
0
kb
u
s
ru
d
+
n
(
tn
1
g
;g
)
ss
>
ii
0
0
0
0
1

Sr
[k
z =
ktewm
E=1
=a,ar n
n1+
n]rid
(
da
=tt
k
, :
s i
eA) *
z
c
( :
e
(
,A k
)
a
)
;
;