Studi Tentang Metode Bairstow Untuk Menyelesaikan Persamaan Polinomial

(1)

STUDI TENTANG METODE BAIRSTOW UNTUK

MENYELESAIKAN PERSAMAAN POLINOMIAL

skripsi

DOMIATUS SIMBOLON

040803050

DEPARTEMEN MATEMATIKA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS SUMATERA UTARA

MEDAN 2010


(2)

PERSETUJUAN

Judul : STUDI TENTANG METODE BAIRSTOW UNTUK MENYELESAIKAN PERSAMAAN POLINOMIAL Kategori : SKRIPSI

Nama : DOMIATUS SIMBOLON Nomor Induk Mahasiswa : 040803050

Program Studi : SARJANA (S1) MATEMATIKA Departemen : MATEMATIKA

Fakultas : MATEMATIKA DAN ILMU PENGETAHUAN ALAM (FMIPA) UNIVERSITAS SUMATERA UTARA

Diluluskan di

Medan, Mei 2010 Komisi Pembimbing :

Pembimbing 2 Pembimbing 1

Drs.Suwarno Ariswoyo, M.Si Drs. Henry Rani Sitepu, M.Si NIP .195003211980031001 NIP .195303031983031002

Diketahui/Disetujui oleh

Departemen Matematika FMIPA USU Ketua,


(3)

PERNYATAAN

STUDI TENTANG METODE BAIRSROW UNTUK MENYELESAIKAN PERSAMAAN POLINOMIAL

SKRIPSI

Saya mengakui bahwa skripsi ini adalah hasil kerja saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing disebutkan sumbernya.

Medan, Mei 2010

DOMIATUS SIMBOLON 040803050


(4)

PENGHARGAAN

Puji dan syukur penulis panjatkan kepada Tuhan Yang Maha Pemurah dan Maha Penyayang, dengan limpah karunia-Nya kertas kajian ini berhasil diselesaikan dalam waktu yang telah ditetapkan.

Ucapan terimakasih saya sampaikan kepada Drs. Henry Rani, M.Si. dan Drs. Suwarno Ariswoyo, M.Si. Selaku pembimbing pada penyelesaian skripsi ini yang telah memberikan panduan penuh kepercayaan kepada saya untuk menyempurnakan kajian ini. Panduan ringkas padat dan professional telah diberikan kepada saya agar penulis dapat menyelesaikan tugas ini. Ucapan terimakasih juga ditujukan kepada Ketua dan Sekretaris Departemen Dr. Saib Suwilo, M.Sc. dan Drs. Henry Rani Sitepu, M.Si. Dekan dan Pembantu Dekan Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Sumatera Utara, semua dosen pada Departemen Matematika FMIPA USU, pegawai di FMIPA USU dan rekan-rekan kuliah. Akhirnya, tidak terlupakan kepada bapak, ibu dan semua keluarga yang selama ini memberikan bantuan dan dorongan yang diperlukan. Semoga Tuhan Yang Maha Esa akan membalasnya.


(5)

ABSTRAK

Dalam menyelesaikan suatu persamaan kuadrat (polinomial derajat dua), sudah ada rumus yang sudah dikenal luas untuk mencari hasil akar-akarnya. Masalah yang dihadapi bagaimana mencari akar-akar polinomial derajat n. Dengan Metode Bairstow yang didasari atas pembagian polinomial dengan suatu faktor kuadrat. Maka akan diperoleh suatu polinomial berderajat dua lebih rendah. Akar persamaan kuadrat hasil operasi fungsi Bairstow dapat diselesaikan dengan metode solusi persamaan kuadrat, sedangkan hasil bagi dapat dihitung.

Dalam menyelesaikan persamaan polinomial dengan metode bairstow program yang digunakan ialah C++ dengan Spesifikasi Pentium IV, Memory 256 MB dan Hardisk 40 GB. Proses perhitungan metode bairstow dilakukan dengan beberapa kali iterasi sehingga didapatkan suatu persamaan kuadrat. Persamaan kuadrat ini dicari dengan rumus yang telah ada sehingga didapat nilai-nilai x.


(6)

ABSTRACT

In finishing a n square equation ( polinomial of degree of two), have there is formula is we recognize wide to look for result of its roots. Problem faced by how to look for roots polinomial of degree of n. With Method Bairstow constituted by for division polinomial with a n square factor. Hence will be obtained by a n polinomial of degree of two lower. Grow on square equation of result of function Bairstow operation can be finished with square equation solution method, while countable quotient.

In finishing equation polinomial with method bairstow program used is C++ with Specification Pentium IV, Memory 256 MB and Hardisk 40 GB. Process method bairstow calculation done with a few multiply iterasi is so that got by a n square equation. this Square equation is searched with formula which there have so that got values x.


(7)

DAFTAR ISI

Halaman

JUDUL i

PERSETUJUAN ii PERNYATAAN iii PENGHARGAAN iv ABSTRAK v ABSRACT vi

DAFTAR ISI vii

Bab 1 PENDAHULUAN

1.1 Latar Belakang 1

1.2 Identifikasi Masalah 1

1.3 Pembatasan Masalah 2

1.4 Maksud dan Tujuan 2

1.5 Metode Penelitian 3

1.6 Sistematika Penulisan 3

Bab 2 LANDASAN TEORI

2.1 Persamaan 4

2.1.1 Persamaan Kuadrat 4

2.1.2 Fungsi Kuadrat 6

2.2 Matriks 8

2.3 Determinan 9

2.4 Mencari Invers Matriks 10

2.5 Persamaan Polinomial dengan Metode Bairstow 11

2.6 Turunan Parsial 14

2.7 Sekilas Tentang Persamaan C/C++ 15

Bab 3 ALGORITMA DAN PEMBAHASAN

3.1.1 Algoritma Solusi Persamaan Kuadrat 18

3.1.2 Algoritma Metode Bairstow 19

3.2 Flowchart Penyelesaian Metode Bairtow 20

3.3 Pembahasan 21

Bab 4 KESIMPULAN DAN SARAN

4.1 Kesimpulan 32

4.2 Saran 32

DAFTAR PUSTAKA


(8)

ABSTRAK

Dalam menyelesaikan suatu persamaan kuadrat (polinomial derajat dua), sudah ada rumus yang sudah dikenal luas untuk mencari hasil akar-akarnya. Masalah yang dihadapi bagaimana mencari akar-akar polinomial derajat n. Dengan Metode Bairstow yang didasari atas pembagian polinomial dengan suatu faktor kuadrat. Maka akan diperoleh suatu polinomial berderajat dua lebih rendah. Akar persamaan kuadrat hasil operasi fungsi Bairstow dapat diselesaikan dengan metode solusi persamaan kuadrat, sedangkan hasil bagi dapat dihitung.

Dalam menyelesaikan persamaan polinomial dengan metode bairstow program yang digunakan ialah C++ dengan Spesifikasi Pentium IV, Memory 256 MB dan Hardisk 40 GB. Proses perhitungan metode bairstow dilakukan dengan beberapa kali iterasi sehingga didapatkan suatu persamaan kuadrat. Persamaan kuadrat ini dicari dengan rumus yang telah ada sehingga didapat nilai-nilai x.


(9)

ABSTRACT

In finishing a n square equation ( polinomial of degree of two), have there is formula is we recognize wide to look for result of its roots. Problem faced by how to look for roots polinomial of degree of n. With Method Bairstow constituted by for division polinomial with a n square factor. Hence will be obtained by a n polinomial of degree of two lower. Grow on square equation of result of function Bairstow operation can be finished with square equation solution method, while countable quotient.

In finishing equation polinomial with method bairstow program used is C++ with Specification Pentium IV, Memory 256 MB and Hardisk 40 GB. Process method bairstow calculation done with a few multiply iterasi is so that got by a n square equation. this Square equation is searched with formula which there have so that got values x.


(10)

BAB 1

PENDAHULUAN

1.1

Latar Belakang

Persaman polinomial rill mempunyai peran yang penting dalam teori fungsi dan teori bilangan. Oleh karena itu, diperlukan suatu metode untuk menentukan semua akar polinomial rill secara efisien.

Dalam menentukan akar polinomial rill, jika polinomial rill tersebut mempunyai sebuah atau beberapa konjugasi akar –akar kompleks, maka akar-akar konjugasi kompleks itu tidak dapat ditemukan dengan metode biasa sehingga diperlukan metode khusus untuk menyelesaikan.

Hal-hal diatas menjadi latar belakang penulis untuk membuat judul skripsi : “STUDI TENTANG METODE BAIRSTOW UNTUK MENYELESAIKAN PERSAMAAN POLINOMIAL”.

1.2 Identifikasi Masalah

Secara umum polinomial dituliskan dalam bentuk:


(11)

Dalam judul skripsi ini yang akan dibahas adalah polinomial rill, yakni polinomial yang semua koefisiennya (a , 1 a ,...,2 a ) n terdiri dari bilangan rill. Polinomial rill ini bisa saja mempunyai akar-akar ril atau akar-akar kompleks.

Suatu polinomial berderajat n memiliki sifat-sifat sebagai berikut: 1. Terdapat polinomial berderajat n buah akar, ril atau kompleks.

2. Jika n ganjil dan semua koefisien ril, terdapat paling sedikit sebuah akar ril 3. Jika semua koefisien ril dan polinomial mengandung akar kompleks, akar-akar

kompleks ini muncul dalam pasangan konjugasi.

Metode Bairstow mencari akar-akar rill dari persamaan polinomial (1) didasarkan atas pembagian polinomial dengan suatu faktor kuadrat (x2 +ux+v) agar memungkinkan untuk mengevaluasi akar rill maupun kompleks sekaligus tergantung dari harga-harga

u dan v. Agar akar-akar rill dapat dievaluasi tentu saja harga-harga taksiran u dan v

harus diberikan terlebih dahulu. Harga-harga u dan v akan di perbaruhi secara sistematis. Setelah dibagi sehingga persamaan dapat ditulis sebagai berikut:

fn(x)= ( x +ux+v)(xn− +bxn− +b xn− +...+bn2)+sisa

4 2 3 1 2 2

...(2)

dengan sisa pembagian : S = (x+u)bn−1 +bn


(12)

1.3 Pembatasan Masalah

Untuk lebih terperinci pembahasan dan hasil yang akan dicapai, maka penulis membatasi bahwa jumlah derajat adalah tertentu banyaknya dan tidak lebih dari 30 (n≤30).

1.4 Maksud dan Tujuan

Maksud tulisan ini adalah untuk menunjukkan bagaimana mencari akar-akar polinomial dengan Metode Bairstow.

Tujuan tulisan ini adalah menuangkan penggunaan metode Baisrtow dalam suatu sistem komputer.

1.5 Metode Penelitian

Metode Penelitian yang digunakan adalah metode penelitian literatur atau kajian pustaka. Metode ini digunakan untuk memperoleh data ilmiah mengenai akar-akar polinomial dan bagaimana menerjemahkan algoritma sistem kedalam bahasa pemograman.

1.6 Sistematika Penulisan

Sistematika penulisan karya tulis ilmiah ini adalah:


(13)

1. Bab 1 Pendahuluan

Bab ini berisi latar belakang, identifikasi masalah, maksud dan tujuan, metode penelitian dan sistematika penulisan.

2. Bab 2 Landasan Teori

Bab ini berisi uraian berkenaan dengan persamaan polinomial. Pada persamaan polinomial dijelaskan persamaan kuadrat, matriks, Metode Bairtow

yang merupakan pokok pembahasan dalam karya ilmiah. 3. Bab 3 Algoritma dan Pembahasan

Bab ini membahas algoritma pada Metode Bairstow, analisis Metode Bairstow dari setiap prosedurnya hingga pada bagian utamanya.

4. Bab 4 Kesimpulan dan Saran

Bab ini berisi kesimpulan dari hasil analisis dari penelitian serta saran dari penulis.


(14)

BAB 2

LANDASAN TEORI

2.1 Persamaan

Ungkapan (ekspresi) yang terdiri atas dua ruas (kiri dan kanan) yang dihubungkan dengan tanda “sama dengan” khususnya kalau salah satu atau kedua ruas itu mengandung bilangan atau besaran yang nilainya belum diketahui disebut persamaan.

Biasanya bilangan-bilangan yang diketahui dalam sebuah persamaan dinyatakan dengan lambang berupa huruf-huruf awal abjad Latin, seperti a, b, c dsb.

Untuk membedakannya dari bilangan-bilangan yang dianggap telah diketahui itu, sebuah persamaan lazimnya dilambangkan dengan huruf-huruf akhir dalam abjad Latin, misalnya x, y, atau z.

2.1.1 Persamaan Kuadrat

Suatu persamaan kuadrat mengambil bentuk ax2+bx+c=0

Untuk mencari akar-akar persamaan diatas adalah sebagai berikut: 0

2 =

⎟ ⎠ ⎞ ⎜

+ +

a c x a b x a


(15)

0 4 1 4 1 2 2 2 2 2 = ⎟⎟⎠ ⎞ ⎜⎜⎝ ⎛ + + + a c a b a b x a b x a 0 c a b a b x a b x a a c a b a a b x a b x

a = −

⎟⎟⎠ ⎞ ⎜⎜⎝ ⎛ + + → ⎟⎟⎠ ⎞ ⎜⎜⎝ ⎛ = ⎟⎟⎠ ⎞ ⎜⎜⎝

+ + 2

2 2 2 2 2 2 2 2 4 1 4 1 4 1 4 1

(

)

= − = − = ⎟⎟⎠ ⎞ ⎜⎜⎝ ⎛ = ⎟⎟⎠ ⎞ ⎜⎜⎝ ⎛ + + 2 2 2 2 2 2 2 2 2 2 2 2 4 4 4 4 4 4 4 1 1 4 1 a ac b a ac a b a c a b a c a b a a b x a b x → − ± = + → − = ⎟ ⎠ ⎞ ⎜ ⎝ ⎛ + a ac b a b x a ac b a b x 2 4 2 4 4 2 1 2 2 2 2 a ac b b x 2 4 2 2 , 1 − ± − = ac

b2−4 = D = diskriminan, sebab D inilah yang membedakan x1 (akar pertama) dengan x2 (akar kedua); hanya kalau D = 0, x1= x2.

Jumlah kedua akar :

a D b x 2 1 + − = + − = + − − = a b x x a D b x 2 1 2 2


(16)

a D b x 2 1 + − = a D b x 2 2 − − = a D b D b x x 4 ) )( ( 2 1 − − + − = 2 2 2 4a D b − = 2 2 2 4 ) 4 ( a ac b

b − −

= 2 4 4 a ac = a c x x1. 2 = 2.1.2 Fungsi Kuadrat

Fungsi f yang didefenisikan sebagai f(x) =ax +bx+c 2

, dimana a, b, c∈ R dan a≠0 disebut “fungsi kuadrat”. Misalnya, f(x)= 4 3

2

+ − x

x adalah fungsi kuadrat dengan a =1, b = -4 dan c =3.

Hal-hal yang diperlukan untuk membuat sketsa grafik fungsi kuadrat f(x) =ax +bx+c

2

adalah sebagai berikut.

a) Titik potong parabola dengan sumbu Y diperoleh jika x = 0

c c b a

y= (0) + (0)+ =

2

Titik potong dengan sumbu Y =(0,c) b) Titi potong dengan sumbu X diperoleh jika x = 0.

c bx

ax + +

2

= 0. 1 Jika ax +bx+c

2

dapat difaktorkan, nyatakan ax +bx+c 2

= )

)(

(xx1 xx2 dengan x1 dan x2 adalah akar-akar persamaan kuadrat itu.


(17)

2 Jika ax +bx+c 2

tidak dapat difaktorkan, gunakan metode melengkapkan kuadrat atau rumus kuadrat.

Diskriminan persamaan kuadrat tersebut dapat memberikan keterangan titik potong-titik potong grafik dengan sumbuX .

⇔ > −4 0

2 ac

b dua titik potong berlainan

⇔ = −4 0

2 ac

b grafik menyinggung sumbu X

< −4 0

2 ac

b tidak ada titik potong c. Koordinat titik balik, gunakan hubungan:

c bx

ax + +

2

= a xh +k 2

) (

c bx

ax + +

2

= 2 ( )

2 2

k ah ahx

ax − + +

Dengan membandingkan persamaan disebelah kiri dan kanan di peroleh :

ah b=−2 atau

a b h 2 − = 2 2 ah c k k ah

c= + ⇔ = −

atau a ac b k 4 4 2 − − = = a D 4 −

Jadi, sumbu simetrinya,

a b x 2 − =

Titik Balik =

a b 2 (− , a D 4 − )


(18)

Sumbu simetri fungsi f(x) = ax +bx+c 2

akan sejajar atau berimpit dengan sumbuY

Dalam menyusun fungsi kuadrat dapat disusun jika diketahui hal-hal berikut : 1. Koordinat titik balik (h,k). Bentuk persamaannya

2

) (x h a k

y− = −

2. Titik potong dengan sumbu X di titik (p,0) dan (q,0). Bentuk persamaannya )

)( (x p x q a

y= − −

3. Kurva parabola melalui tiga titik sebarang. Bentuk persamaannya

c bx ax

y= + +

2

Misalnya titik balik kurva suatu fungsi kuadrat adalah(-2,-10). Jika kura tersebut melalui titik (2,6), tentukan persamaan fungsi tersebut.

Jawab

Misalkan persaman kurva

2

) (x h a k

y− = − , dengan koordinat titik balik (h,k), maka

(h,k)⇔(-2, -10)

2

)) 2 ( ( ) 10

(− = − −

a x

y

2

) 2 ( 10= +

+ a x y

) 16 ( 16 ) 2 2 ( 10 6

2

a

a + ⇔ =

= +

a=1

Jadi persamaan fungsi yang di maksud adalah

2

) 2 ( 10 +

+ x

y atau 4 6

2

− + =x x y


(19)

Matriks adalah kumpulan elemen-elemen yang disusun menurut baris dan kolom sehingga membentuk empat persegi panjang dimana panjang dan lebarnya ditentukan oleh banyaknya baris dan kolom.

Model umum matiks

⎟⎟ ⎟ ⎟ ⎟ ⎠ ⎞ ⎜⎜

⎜ ⎜ ⎜ ⎝ ⎛ =

mn m

m m

n n

a a

a a

a a

a a

a a

a a

A

L M M M M M

L L

3 2 1

2 23

22 21

1 13

12 11

atau disingkat dengan:

A = (aij), i = 1, 2, …, m

j = 1, 2, …, n

Matriks di atas disebut matriks tingkat m x n, atau disingkat matriks m x n, karena terdiri dari m baris dan n kolom. Setiap aij disebut elemen (unsur) dari matriks itu, sedang indeks i dan j berturut- turut menyatakan baris dan kolom. Jadi elemen aij

terdapat pada baris ke-i, kolom ke-j. Pasangan bilangan (m,n) disebut dimensi (ukuran atau bentuk) dari matriks itu. Suatu matriks tidak mempunyai harga numerik.:

Pada umumnya matriks disingkat dan dinyatakan dengan huruf besar, sedangkan elemen-elemen matriks dengan huruf kecil. Untuk membedakan matriks ditulis dengan: A1,A2,...,An atau A, B,…, Z, misalnya matriks m x n.


(20)

Andaikan diketahui suatu determinan dari suatu matriks tingkat n. Jika elemen-elemen dari baris ke-i dan kolom ke-j semuanya dikeluarkan akan terdapat suatu determinan matriks dari matriks tingkat (n-1), yang disebut minor pertama dari matriks tingkat A ( atau determinan A) yang ditulis dengan Mij dan juga dikatakan minor dari elemen

ij

a . Harga dari minor bertanda ditulis dengan i j ij

M +

−1)

( yang disebut kofaktor disingkat dengan Kijdari elemen aij, Jadi :

Kij =(−1)i+j.Mij

Contoh:

33 32 31

23 22 21

13 12 11

a a a

a a a

a a a

A = Misalnya

33 32

23 22 11

a a

a a

M =

33 31

23 21 12

a a

a a

M =

32 31

22 21 13

a a

a a


(21)

K11=(−1)1+1M11 = M11, K12 =(−1)1+2M12 =−M12, K13 =(−1)1+3M13 = M13,

dan seterusnya. Dengan menggunakan contoh diatas diperoleh:

A =a11M11a12M12 +a13M13, =a11K11+a12K12+a13K13

Dari hasil tersebut, dapat diturunkan sifat-sifat dibawah ini:

Hari determinan suatu matriks A tingkat n sama dengan jumlah hasil ganda setiap elemen suatu baris (kolom) dari A dengan kofaktor yang bersesuaian, jadi:

A =a1jK1j +a2jK2j +...+anjKnj

yang disebut ekspansi Laplance menurut kolom j.

2.4 Mencari Invers Matriks

Misalkan A matriks kuadrat tingkat n, dimana A tidak singular. Dari A(adj A) = AIn

terdapat: A−1A(adjA)= A−1• AIn, memberikan :

A adjA


(22)

⎟⎟ ⎟ ⎟ ⎟ ⎠ ⎞ ⎜⎜ ⎜ ⎜ ⎜ ⎝ ⎛ = − A K A K A K A K A K A K A K A K A K A mn n n n n / / / / / / / / / 2 1 2 22 12 1 21 11 1 L M M M M L L ⎟⎟ ⎟ ⎟ ⎟ ⎠ ⎞ ⎜⎜ ⎜ ⎜ ⎜ ⎝ ⎛ = − mn n n n n K K K K K K K K K A A L M M M M L L 2 1 2 22 12 1 21 11 1 1

2. 5 Persamaan polinomial dengan metode Bairstow

Secara umum polinomial dituliskan dalam bentuk:

fn(x)=a x0 n+a1xn−1 +a2xn−2 +a3xn−3 + ...+ an ...( 1)

Dalam rencana judul skripsi ini yang akan dibahas adalah polinomial rill, yakni polinomial yang semua koefisiennya (a , 1 a ,...,2 a ) n terdiri dari bilangan rill.

Polinomial ril ini bisa saja mempunyai akar-akar rill :

Suatu polinomial berderajat n mamiliki sifat-sifat sebaai berikut: 4. Terdapat polinomial berderajat n buah akar, ril atau kompleks.

5. Jika n ganjil dan semua koefisien ril, terdapat paling sedikit sebuah akar ril 6. Jika semua koefisien ril dan polinomial mengandung akar kompleks, akar-akar

kompleks ini muncul dalam pasangan konjungsi.

Metode Bairstow mencari akar-akar ril dari persamaan polinomial (1) didasarkan atas pembagian polinomial dengan suatu faktor kuadrat (x2 +ux+v) bisa mempunyai akar rill maupun kompleks tergantung dari harga-harga u dan v. Agar


(23)

akar-akar ril dapat dievaluasi tentu saja harga-harga taksiran u dan v harus diberikan terlebih dahulu. Harga-harga u dan v akan di perbaruhi secara sistematis. Setelah dibagi sehingga persamaan dapat ditulis sebagai berikut:

fn(x)= (x +ux+v)(xn− +b xn− +b xn−4 +...bn2)+sisa 2

3 1 2

2 ...(2)

dengan sisa pembagian : S= ( x+u) bn1+bn

Untuk melakukan pembagian dengan faktor kuadrat, harga-harga koefisien b1, b2,b3,....,bn+1 dihitung dengan relasi berulang sebagai berikut :

0 b = a0

1

b =a1- u

2

b =a - u2 b1 - v

3

b =a -3 b2u - vb1

4

b =a4 - b3u - b2v

. . .

1 −

n

b =an1 - bn2u -bn3v

n

b =a - n bn1u - bn2v


(24)

Akar-akar kompleks dapat dievaluasi apabila sisa S=0, dengan kata lain apabila

1 −

n

b =b =0. n Hal ini hanya mungkin apabila harga taksiran u dan v yang

diberikan adalah harga yang sebenarnya. Koreksi terhadap u dan v dapat dihtung dari relasi berikut :

- b =n cn−1Δu + cn−1Δv

- bn1=cn−2Δu + cn−3Δv

dimanac ,n cn1 dan cn2 adalah turunan parsial b n dan bn+1 terhadap u dan v

n

c = u bn

∂ ∂ −1

; cn1 = v bn

∂ ∂ −1

= u bn

∂ ∂

; cn2 = v bn

∂ ∂

Harga-harga c tersebut dihitung dari :

0 c = b0

1

c =b1- u

2

c =b2 - uc1 - v

3

c =b -3 c2u - vc1

4


(25)

. . .

n

c =b - n cn1u - cn2v

Harga-harga u dan v diperbaharui masing-masing dengan Δu dan Δv sehingga :

- u = n un1+ Δun - v = n vn1 + Δvn

n = 1, 2,3,…

u

Δ

=

3 2

2 1

3 1

2

− −

− −

− −

n n

n n

n n

n n

c c

c c

c b

c b

v

Δ

=

3 2

2 1

1 2

1

− −

− −

− −

n n

n n

n n

n n

c c

c c

b c

b c


(26)

2.6 Turunan Parsial

Misalkan z= f(u,v) didefenisikan dalam domain D dibidang xy dan misalkan (u1,v1) sebuah titik dari D.

Fungsi (u1,v1) tergantung pada u saja dan didefenisikan dalam interval sekitar

1

u . Maka turunannya terhadap u di u = u1 mungkin ada. Jika ada, nilainya disebut dengan “ turunan parsial “ dari f(u,v) terhadap x di (u1,v1) dan dinyatakn oleh:

u f

∂ ∂ (

1 1,v

u ) atau oleh

u z

∂∂ (u1,v1)

Sesuai turunan dapat ditulis:

u f

∂ ∂ (

1 1,v

u )= lim

u

v u f u x u f

Δ − Δ

+ , ) ( , )

( 1 1 1 1

Δu →0

Notasi-notasi yang lain yang digunakan adalah zx, fx, tetapi jika vektor dan turunan parsial digunakan bersama-sama, notasi seperti

u z

∂∂ atau v f

lebih

diinginkan.

Fungsiz= f(u,v) dapat digambarkan oleh sebuah permukaan dalam ruang, persamaan u = u1 adalah bidang datar dan perpotongannya dengan permukaan f(x,y) berbentuk suatu lengkung.

Turunan parsial

u z

∂∂ di (u1,v1) dapat dijelaskan sebagai condong dari garis


(27)

Sedangkan untuk turunan parsial dari

v z

(

1 1,v

u ) ditentukan serupa v, diambil tetap sama dengan u1, dan

) , ( x1 y

f diturunkan terhadap v, maka didapat

v z

∂ ∂ (

1 1,v

u ) = lim

v

v u f v u v f

Δ − Δ

+ ) ( , ) ,

( 1 1 1 1

untuk turunan ini dapat ditulis Δv→0

pula ).fv(u1,v1 , jika titik (u1,v1) berubah-ubah, diperoleh fungsi baru dalam dua variabel ialah fungsi fu(u,v). Demikian pula turunan

v z

adalah fungsi f (u,v). v

Untuk fungsi z= f(u,v), turunan parsialnya diperoleh dengan menurunkan fungsi terhadap satu variabel, sedang variabel satunya dianggap tetap.

Misalnya:

z=u2 −v2, maka

u z

=2u dan

v z

= -2v

2.7 Sekilas Tentang Pemrograman C/C++

C adalah bahasa komputer yang semakin popular. Dikembangkan oleh Dennis Ritchie dan Ken Thompson pada tahun 1972. C merupakan perbaikan atas bahasa B yang disusun oleh Ken Thompson pada tahun 1970. C sendiri baru mulai dikenal luas sejak 1978 setelah terbitnya buku The C Programming Language oleh Brian Kernighan dan Dennis Ritchie. Sejak itu C semakin berkembang dan banyak dipakai oleh para pemrogram (programmer).


(28)

Perkembangan mikrokomputer pada decade 80-an menandai era baru dalam revolusi bahasa C. Jika pada mulanya C hanya berbasis system operasi (operating

system) UNIX pada computer DEC DPD-7, maka kini C tersedia pada berbagai

system operasi, termasuk DOS. Sistem operasi UNIX sendiri dikembangkan dengan menggunakan C; demikian juga Microsoft Windows yang mendominasi dunia perangkat lunak mikrokomputer dewasa ini. Kepopuleran keluarga mikrokomputer IBM (dan yang kompatibel) menyebabkan makin banyaknya variasi dan versi compiler C berbasis DOS. Yang cukup populer saat ini adalah: Borland C dan Turbo C dari Borland, Microsoft C dan Microsoft Quick C dari Microsoft, Power C, dan Zortech C. Masing-masing versi memiliki keunggulan dan sekaligus kelemahan pada aspek-aspek tertentu dibandingkan dengan versi lainnya.

Pada dasarnya struktur dan operasi-operasi yang dipakai pada masing-masing compiler adalah sama. Versi-versi kompiler tersebut menerapkan C baku yang dikenal sebagai ANSI C. ANSI C adalah bahasa C baku yang didefinisikan oleh Sub Komite Standarisasi ANSI (American National Standards Institute) untuk menggalakkan portabilitas (portability) di antara berbagai kompiler C pada system-sistem operasi yang berbeda-beda. Keberlakuan ANSI C diresmikan tahun 1989. Variasi dari masing-masing produk terutama terletak pada fungsi-fungsi tambahan yang biasanya disusun dalam pustaka (library). Variasi lain berkaitan dengan lingkungan pengembangan terpadu (Integrate Development Environment) yang dikembangkan oleh masing-masing pembuat.

Keunggulan utama dan sekaligus merupakan kelemahan C adalah sifatnya yang terbuka. Bersifat terbuka di sini berarti pemrogram memiliki keleluasaan yang besar untuk melakukan akses langsung ke perangkat komputer, yakni akses langsung ke


(29)

ketik, printer dan fasilitas komunikasi. Program dituntut memiliki pengetahuan yang memadai akan perangkat computer agar dapat memanfaatkan kebebasan ini ini untuk mengembangkan program-program secara efisien.

C sering dimasukkan ke dalam kelas semi high level language. C sebagai bahasa tingkat tinggi dapat dipakai sebagaimana bahasa pemrograman lain (Pascal, Basic, Fortran, Cobol, Ada, dan lain-lain). Pemakain C pada level ini tidak memerlukan akses ke perangkat keras secara langsung. Di sisi lain, bagi pemrogram yang ingin mengakses perangkat keras secara langsung, C menyediakan fasilitas untuk tujuan dengan penerapan yang lebih mudah. Di sini pemrogram dituntut memahami dengan baik mekanisme kerja system komputer.

Dibandingkan dengan bahasa tingkat tinggi lain, C memiliki ciri khas dalam hal keluwesan pemakaiannya. Hal ini selain karena sifatnya yang terbuka, juga terletak pada strukturnya. Struktur C tidak terlalu terikat pada suatu aturan yang kaku, berbagai variasi dapat dilakukan.

Di samping bersiafat terstruktur, C juga bersifat modular. Dalam pengertian ini suatu program disusun dalam unit-unit yang lebih kecil yang leluasa dapat diakses oleh fungsi utama atau fungsi-fungsi lain. Fungsi atau variable dapat diletakkan diluar program utama atau di sebarang tempat asalkan ia sudah dideklarasikan.

Dalam hal ini C berbeda dengan Pascal, misalanya yang menerapakan aturan yang lebih ketat dalam hal deklarasi variable.

Hal yang cukup menarik dalam C adalah keragaman fungsi yang tersedia. Fungsi-fungsi untuk manipulasi teks (karakter), grafik dan perhitungan dengan presisi tinggi tersedia cukup banyak. Fungsi-fungsi berbagai jenis keperluan (sains, teknik,


(30)

bisnis, dan sebagainya) dapat dikembangkan dengan mudah. Fungsi-fungsi tersebut dapat disusun dalam bentuk baku maupun dalam bentuk kode makro dan dapat ditempatkan dalam unit tersendiri maupun di dalam program utama.

C++ adalah superset dari C yang dikembangkan oleh Bjarne Stoustrup pada tahun 1986 pada AT&T Bell Laboratories. Sebagai superset C, C++ menerapkan semua konsep pemrograman C tetapi dengan tambahan sejumlah sarana dan kemampuan yang menjadikan C++ bukan saja sekedar C yang lebih baik, tetapi menawarkan konsep pemrograman yang jauh lebih menarik dan elegan. Sarana-sarana baru dalam C++ yang tidak terdapat dalam C berupa:

a. abstraksi data

b. pewarisan ganda (multiple inheritance)

c. pengawalan (inisialisasi) terjamin d. pembersihan otomatis

e. overloading fungsi dan operator

Untuk memanfaatkan fasilitas-fasilitas tambahan itu. C++ menambah sejumlah kunci (keyword) baru yang tidak terdapat dalam ANSI C, yaitu: class, delete, friend, inline, new, operator, overload, private, protected, public dan virtual.


(31)

BAB 3

ALGORITMA DAN PEMBAHASAN

3.1.1 Algoritma Solusi Persamaan

Masukan : Harga-harga koefisien a

[ ]

2 , a

[ ]

1, a

[ ]

0 dari fungsi kuadrat : f(x)=a2x2 +a1x+a0

Keluaran: Akar persamaan kuadrat, disimpan dalam matriks dimensi dua x

[ ]

0

[ ]

0 , x

[ ]

0

[ ]

1 , x

[ ]

1

[ ]

1 , x

[ ]

0

[ ]

0 , x

[ ]

1

[ ]

0 bagian rill, x

[ ]

0

[ ]

1 dan x

[ ]

1

[ ]

1 bagian imaginer. 1. Normalisasikan a

a

[ ]

0 = a

[ ]

0 /2 a

[ ]

0 = a

[ ]

1 /2 2. z =a

[ ]

1^2-4*a

[ ]

0 3. sgnz = 1: z > 0, = 0 : z = 0 = -1 : z = 0

4. Dalam hal sgnz berharga :

1 : x

[ ]

0

[ ]

0 = (-a

[ ]

1 -sgrt (z)) /2.0 x

[ ]

1

[ ]

0 = (-a

[ ]

1-sgrt (z)) /2.0 x

[ ]

0

[ ]

1 = x

[ ]

1

[ ]

1 = 0.0 0 : x

[ ]

0

[ ]

0 = x

[ ]

0

[ ]

1 = -a

[ ]

1 /2.0


(32)

x

[ ]

0

[ ]

1 = x

[ ]

1

[ ]

1 = 0.0 1 : x

[ ]

0

[ ]

0 = x

[ ]

0

[ ]

1 = -a

[ ]

1 /2.0 x

[ ]

0

[ ]

1 = sgrt (-z)) /2.0 x

[ ]

1

[ ]

1 = -1.0* x

[ ]

0

[ ]

1 5. Akar persamaan : x

6. Selesai

3.1.2 Algoritma Metode Bairstow

Masukan : Orde polynomial n

Koefisien polynomial dalam larik p[n]

Keluaran : Koefisien b dan c dari polynomial orde 2 dalam bentuk x^2 + bx + c = 0. 1. Jika n <=2, keluar

2. b = p[n]; c= p[n-1] 3. d [2] = 1.0

4. untuk i=1 sampai ITMAX 4.1 d [1] =; d[0] = c;

4.2 Hitung p(x) / d(x) = q(x) + sisa (x) 4.3 S = sisa [0]; r = sisa [1];

4.4 Hitung q(x) / d(x) = qq(x) + sisa (x) 4.5 rc = -sisa [1]

sb = -c * rc 4.6 sc = - sisa [0] rb = -b * rc + sc


(33)

4.7 dv = (sb * rc – sc * rb)

4.8 delb = (r * sc – s * rc) / dv delc = (-r * sb + s * rb) / dv

4.9 b = b + delb c = c + delc

4.10 Jika ((|delb| = eps * |b|) atau (|b| < TINY))dan ((|delc| <= eps * |c| atau |c| < TINY ))

Selesai (maksimum iterasi belum tercapai) 5 Selesai


(34)

Contoh Soal

5 x

-4

3x

-3

10x +

2

10x +44x+ 48 = 0 n= 5

Dengan nilai awal u = v = 1,5

0

a a1 a2 a3 a4 a5

1 u

− = −1,5 1 −3 −10 10 44 48

5 , 1

− 6,75 7,13 −35,82 97−22,

1 v

− = −1,5 −1,5 6,75 7,13 82−35,

+ 1 −4,5 −4,75 23,88 15,31

79 , 10 −

0

b =bn5 b1=bn4 b2=bn3 b3=bn2 b4=bn1 5

b =bn

−1,5 9 134, 43,13 −1,5 9 134,

+ 1 −6 2,75 28,75 −31,95

0


(35)

1 u Δ = 3 2 2 1 3 1 2 − − − − − − − n n n n n n n n c c c c c b c b = 75 , 2 75 , 28 75 , 28 95 , 31 75 , 2 31 , 15 75 , 28 79 , 10 − − = ) 31 , 15 )( 75 , 28 ( ) 75 , 2 )( 95 , 31 ( ) 31 , 15 )( 75 , 28 ( ) 75 , 2 )( 79 , 10 ( − − − − = 56 , 826 86 , 87 16 , 440 67 , 29 − − − − = 4 , 914 84 , 469 − −


(36)

1 v Δ = 3 2 2 1 1 2 1 − − − − − − − n n n n n n n n c c c c b c b c = 75 , 2 75 , 28 75 , 28 95 , 31 31 , 15 75 , 28 79 , 10 95 , 31 − − − = ) 31 , 15 )( 75 , 28 ( ) 75 , 2 )( 95 , 31 ( ) 75 , 28 )( 79 , 10 ( ) 31 , 15 )( 95 , 31 ( − − − − − = 56 , 826 86 , 87 ) 21 , 310 ( 15 , 489 − − − − − = 4 , 914 94 , 178 − −

= 200,

2

u = u1 + Δu1

= 51 + , 0,51 = 012,

2

v = v1 + Δv1

= 1,5 + 0,2 = 1,7

0

a a1 a2 a3 a4

5 a

2 u

− =−2,01 1 −3 −10 10 44 48

01 , 2

− 10,07 3,28 −43,80 97 , 5 − 2 v

− = 70−1, −1,70 8,51 2,77 −


(37)

+ 1 −5,01 −1,63 21,79 2,97

994,

0

b =bn5 b1=bn4 b2=bn3 b3=bn2 b4=bn1 5

b =bn

−2,01 14,11 −21,67 −24,22 −1,70 11,93 −18,33

+ 1 −7,02 10,78 12,05 −39,58

0

c =cn5 c1=cn4 c2=cn3 c3=cn2 c4=cn1

2 u Δ = 3 2 2 1 3 1 2 − − − − − − − n n n n n n n n c c c c c b c b = 78 , 10 05 , 12 05 , 12 58 , 39 78 , 10 97 , 2 05 , 12 99 , 4

− = ( 39,58)(10,78) (12,05)(12,05) ) 97 , 2 )( 05 , 12 ( ) 78 , 10 )( 99 , 4 ( − − − = 87 , 571 00 , 18 −

= −0,03

2 v Δ = 3 2 2 1 1 2 1 − − − − − − − n n n n n n n n c c c c b c b c = 78 , 10 05 , 12 05 , 12 58 , 39 97 , 2 05 , 12 99 , 4 58 , 39 − − = ) 31 , 15 )( 75 , 28 ( ) 75 , 2 )( 95 , 31 ( ) 05 , 12 )( 99 , 4 ( ) 97 , 2 )( 58 , 39 ( − − − −


(38)

=

87 , 571

65 , 177

− −

= 0,31

3

u = u2 + Δu2

= 012, - 0,03 = 981,

3

v = v2 + Δv2

= 701, + 310, = 012,


(39)

a0 a1 a2 a3 a4 5

a

3 u

− =−1,98 1 −3 −10 10 44

48

98 , 1

− 9,86 4,26 −48,05 53 , 0 − 3 v

− = 01−2, −2,01 10,01 4,32 78−48,

+ 1 −4,98 −2,15 24,27 0,27

31 , 1 − 0

b =bn5 b1=bn4 b2=bn3 b3=bn2 b4=bn1 5

b =bn

−1,98 13,78 −19,05 −38,04 −2,01 13,99 −19,34

+ 1 −6,96 9,62 19,21 −57,11

0

c =cn5 c1=cn4 c2=cn3 c3=cn2 c4=cn1

3 u Δ = 3 2 2 1 3 1 2 − − − − − − − n n n n n n n n c c c c c b c b = 62 , 9 21 , 19 21 , 19 11 , 57 62 , 9 27 , 0 21 , 19 31 , 1 − − = ) 21 , 19 )( 21 , 19 ( ) 62 , 9 )( 11 , 57 ( ) 27 , 0 )( 21 , 19 ( ) 26 , 9 )( 31 , 1 ( − − − −


(40)

= 42 , 918 79 , 17 − −

= 0,02

3 v Δ = 3 2 2 1 1 2 1 − − − − − − − n n n n n n n n c c c c b c b c = 62 , 9 21 , 19 21 , 19 11 , 57 27 , 0 21 , 19 31 , 1 11 , 57 − − − = ) 21 , 19 )( 21 , 19 ( ) 62 , 9 )( 11 , 57 ( ) 21 , 19 )( 31 , 1 ( ) 27 , 0 )( 11 , 57 ( − − − − − = 42 , 918 75 , 9 −

= −0,01

4

u = u3 + Δu3

= 981, + 0,02 = 2,00

4

v = v3 + Δv3

= 2,01 - 0,01 = 2,00

a0 a1 a2 a3 a4

5 a

4 u

− =−2,00 1 −3 −10 10 44 48


(41)

2

− 10 4 48− 0

4 v

− = 00−2, −2 10 4

48

+

1 −5 −2 24 0

0

0

b =bn5 b1=bn4 b2=bn3 b3=bn2 b4=bn1

5 b =bn

2− 14 20− 36− −2 14 20−

+ 1 −7 10 18 56−

0

c =cn5 c1=cn4 c2=cn3 c3=cn2 c4=cn1

5 u Δ = 3 2 2 1 3 1 2 − − − − − − − n n n n n n n n c c c c c b c b = 10 18 18 56 10 0 18 0

− = 0

5 v Δ = 3 2 2 1 1 2 1 − − − − − − − n n n n n n n n c c c c b c b c = 10 18 18 56 0 18 0 56 − −


(42)

karena bn & bn1 benilai nol maka didapat nilai u = 2 & v = 2 maka didapat persamaan baru sesuai dengan metode bairstow

(x ux v x bx b x bn sisa

n n

n

+ +

+ +

+

+ −

− −

) ...

)( 2

4 2 3 1 2 2

(x2 +2x+2)(x3−5x2 −2x+24)=0 Selanjutnya mencari pemecahan dari 5 2 24 0

2 3

= + − − x x

x ; n = 3

0

a a1 a2 a3

1

u = 0 1 −5 −2 24

0 0 0

1

v = 0 0 0

+

1 −5 −2 24

0

b =bn3 b1=bn2 b2=bn1 b3=bn

0 0

0

+

1 −5 −2

0


(43)

1 u Δ = 3 2 2 1 3 1 2 − − − − − − − n n n n n n n n c c c c c b c b = 1 5 5 2 1 2 5 24 − − − − − = 25 2 10 24 − − − = 27 14

− = 52−0,

1 v Δ = 3 2 2 1 1 2 1 − − − − − − − n n n n n n n n c c c c b c b c = 1 5 5 2 2 5 24 2 − − − − − − = 25 2 120 4 − − + = 27 124

− = 59−4,

2

u = u1 + Δu1

= 0 - 520, = −0,52

2

v = v1 + Δv1

= 0 - 594, = −4,59

0

a a1 a2 a3

2

u = −0,52 1 −5 −2 24

0,52 −2,33 0,14

2

v =−4,59 4,59 −20,56

+

1 −4,88 0,26 3,58


(44)

0,52 −2,06 594,

+ 1 −3,96 2,79

c0=cn3 c1=cn2 c2=cn1

2 u Δ = 3 2 2 1 3 1 2 − − − − − − − n n n n n n n n c c c c c b c b = 1 96 , 3 96 , 3 79 , 2 1 26 , 0 96 , 3 58 , 3 − − − = 68 , 15 79 , 2 03 , 1 58 , 3 − + = 89 , 12 61 , 4

− = 36−0,

2 v Δ = 3 2 2 1 1 2 1 − − − − − − − n n n n n n n n c c c c b c b c = 1 96 , 3 96 , 3 79 , 2 26 , 0 96 , 3 58 , 3 79 , 2 − − − = 68 , 15 79 , 2 18 , 14 73 , 0 − + = 89 , 12 91 , 14

− = 16−1,

3

u = u2 + Δu2

= −0,52 - 0,36 = −0,88

3

v = v2 + Δv2

= −4,59 +-1,16 = −5,75

0

a a1 a2 a3


(45)

0,88 −3,63 0,11

3

v =−5,75 5,75 −23,64

+

1 −4,12 0,12 0,42

b0=bn3 b1=bn2 b2=bn1 b3=bn 0,88 −2,85

5,75

+ 1 −3,24 3,02

c0=cn3 c1=cn2 c2=cn1

3 u Δ = 3 2 2 1 3 1 2 − − − − − − − n n n n n n n n c c c c c b c b = 1 24 , 3 96 , 3 02 , 3 1 12 , 0 24 , 3 42 , 0 − − − = 50 , 10 02 , 3 39 , 0 42 , 0 − + = 48 , 7 81 , 0

− = 11−0,

3 v Δ = 3 2 2 1 1 2 1 − − − − − − − n n n n n n n n c c c c b c b c = 1 24 , 3 96 , 3 02 , 3 12 , 0 24 , 3 42 , 0 02 , 3 − − − = 50 , 10 02 , 3 36 , 1 36 , 0 − + = 48 , 7 72 , 1

− = −0,23

4


(46)

= −0,88 - 0,11 = −0,99 = −1,0

4

v = v3 + Δv3

= −5,75 -0,23 = −5,98

0

a a1 a2 a3

4

u = 0−1, 1 −5 −2 24

1 −4 0,11

4

v =−5,98 5,98 −23,64

+

1 −4 −0,02 0,06

b0=bn3 b1=bn2 b2=bn1 b3=bn 1 −3

5,98

+ 1 3− 2,96

c0=cn3 c1=cn2 c2=cn1

4 u

Δ =

2 1

3 1

2

− −

− −

n n

n n

n n

c c

c b

c b

=

3 96

, 2

1 02

, 0

3 06

, 0

− −

=

9 96 , 2

06 , 0 06 , 0

− −

= 04 , 6

0


(47)

4 v Δ = 3 2 2 1 1 2 1 − − − − − − − n n n n n n n n c c c c b c b c = 1 3 3 96 , 2 02 , 0 3 06 , 0 96 , 2 − − − − = 9 96 , 2 18 , 0 06 , 0 − + − = 04 , 6 12 , 0

− = 02−0,

5

u = u4 + Δu4

= −1,0 + 0 = = −1,0

5

v = v4 + Δv4

= −5,98 - 020, = 6−

Karena salah satu Δu4 dan Δv4 benilai nol maka iterasi selesai, maka didapat pecahannya sebgai berikut:

( 2 2)( 6)( 4) 0

2 2 = − − − +

+ x x x x

x

Untuk suku 1 : ( 2 2) 0

2 = + + x x 2 4 2 2 , 1 av u u x − ± − = 2 ) 2 . 1 . 4 ( 2 2 2 2 , 1 − ± − = x


(48)

2 4 2 2 , 1 − ± − = x 2 . 2 2 2 , 1 i x ± − = i i

x =− +

+ − = 1 2 . 2 2 1 i i

x =− −

− − = 1 2 . 2 2 2

Untuk suku 2

0 ) 6 ( 2 = − −x x 2 4 2 4 , 3 av u u x − ± − = 2 ) 6 . 1 . 4 ( 1 1 2 4 , 3 − − − ± = x 2 25 1 4 , 3 ± = x


(49)

3 2

5 1

3 =

+ =

x

2 2

5 1

4 =−

− =

x

Untuk suku 3 :x−4=0 4

5 = x


(50)

BAB 4

KESIMPULAN DAN SARAN

4.1 Kesimpulan

Setelah mempelajari, menganalisis dan mencoba menyelesaikan persamaan polinomial dengan metode Bairstow, penulis mendapat beberapa kesimpulan :

1. Suatu polinomial berderajat n terdapat n buah akar rill atau kompleks, jika n ganjil dan semua koefisien rill, terdapat paling sedikit sebuah akar rill dan jika semua koefisien rill dan polinomial mengandung akar kompleks, akar-akar kompleks ini muncul dalam pasangan konjugasi.

2. Dalam menentukan faktor kuadrat dengan metode Bairstow, digunakan pembagian sintetik dengan pembagi kuadrat sehingga dapat ditentukan dua akar sekaligus baik akar rill maupun kompleks.

4.2 Saran

Saran yang dapat diberikan penulis berdasarkan percobaan dan penelitian pada karya Ilmiah ini adalah :

1. Dalam menyelesaikan suatu persamaan polinomial, nilai taksiran yang digunakan harus akurat agar hasil yang inginkan cepat tercapai.


(51)

DAFTAR PUSTAKA

1. Gerald, Curtis. F. 1983. Applied Numerical Analysis Third Edition. California. 2. Halawa, Edward E. H. 1995. Pemograman Dengan C/C++ dan Aplikasi

Numerik.Jakarta:Penerbit Erlangga.

3. Howard, Anton. 1988. Aljabar Linear Elementer. Jakarta: Erlangga. 4. Howard, Anton. 1988. Penerapan Aljabar Linear. Jakarta: Erlangga. 5. Isaacson, Eugene. 1966. analysis of Numerical Mefhods.New York.

6. Munir, Rinaldi. 2003. Matematika Diskrit. Edisi Kedua. Bandung: Penerbit Informatika Bandung.


(52)

include <stdio.h> #include <stdlib.h> #include <math.h> #include <conio.h> #include <alloc.h> #define ITMAX 50 #define TINY 1.0e-15 float *larik (int n1, int nh) {

float *v;

v = (float*)malloc((size_t) (nh-n1+2)*8); if(!v){

printf (“Gagal dalam alokasi memori\n*); exit(1);

} return v; }

int sign(dooble x) {

if((float) x = = 0 . 0) return 0;

if((float) x < 0.0) return -1;

else return 1; }

void bagipolinom( float u[], int nu, float v[], int nv, float q[], float r[ ] ) {

int k, j;

for(j = 0; j<= nu; j++){ r[j] = u[j];

q[j] = 0.0; }

for(k = nu - nv; k>= 0; k--) {

q[k] = r[nv + k] / v[nv]; for(j = nv + k - 1; j >= k;j-) r[j] - = q[k] * v[j-k] ;


(53)

r[j] = 0.0; }

void bstow(double p[], int n,double *b,double *c,doble eps) {

int i;

float sc,sb,s,rc,rb,r,dv,delc,delb; float *q, *qq, *sisa,bs,cs; float d[3];

if( n <= 2) return; q = larik(0,n); qq = larik (0,n); sisa = larik(0,n) ; bs = p[n] ; cs = p[n-1]; d[2] = 1.0;

for(i = 1; i <= ITMAX; i++){ d[1] = bs;

d[0] = cs;

bagipolinom(p,n,d,2,q,sisa); s = sisa[0] ;

r = sisa[1] ;

BagiPolinom(p,n,d,2,q,sisa) ; sb = -cs * (rc = -sisa[1] ); rb = -bs * rc + (sc = -sisa[0] ) ; dv = 1.0/(sb* rc - sc* rb);

bs += (delb = (r* sc - s* rc)* dv) ; cs += (delc = (-r * sb + s * rb) * dv) ;

if((fabs(delb) <= eps * fabs(bs) | | fabs(bs) < TINY) && (fabs(delc) <= eps*fabs(cs) | | fabs(cs) <TINY)) {

*b = bs; *c = cs; free(q);

free(qq) ; free(sisa); return; } }

*b = bs; *c = cs; free(q);


(54)

free(sisa); return; }

void Akar2(double a, double b, double c, double r1[], double r2 [] ) {

float d, h1, h2; int tanda;

d = b * b - 4.0 * a * c; h1 = -b / (2.0 * a) ;

h2 = sqrt(fabs(d))/(2.0 * a) ; tanda = sign(d);

switch (tanda) { case 0 :

r1[0] = h1; r1[1] = 0.0; r2[0] = h1; r2[1] = 0.0; break;

case 1:

r1[0] = h1 + h2; r1[1] = 0.0; r2[0] = h1 - h2; r2[1] = 0.0; break;

case -1;

r1[0] = h1; r1[1] = h2; r2[0] = h1; r2[1] = -h2; break;

default: break; }

}

void akarpolinom(float pr[], int n, float * akarriil, float *akarimaj) {

/* masukan - pr[]: koef. larik dari pr[0] ke pr[n] n : orde polynomial */

int m, nn, i; double r1[2], r2[2];

double *koefisien, *dkoef, b, c, rs[3]; koefisien = larik (0, n );

dkoef = larik(0, n); for(i = 0; i<= n; i++) koefisien[i] = pr[i]; rs[2] = 1.0;

L 3


(55)

m = 1; while(nn > 0) {

if(nn == 1){

akarRiil[m] = -koefisien[0]/ koefisien[1] ; akarImaj[m] =0.0;

nn--; }

if(nn == 2) {

akar2(koefisien[2], koefisien[1], koefisien[0], r1, r2 ; akarRiil[m] = r1[0]; akarImaj[m] = r1[1] ;

m++; nn-= 2; }

if(nn > 2){

bstow(koefisien, nn, &b, &c, TINY) ; rs[1] = b; rs[0] = c;

akar2(1.0, b, c, r1, r2);

akarriil[m] = r1[0]; akarimaj[m] = r1[1] ; m++ ;

akarriil[m] = r2[0]; akarimaj[m] = r2[1] ; m++ ;

bagipolinom(koefisien, nn, rs, 2, koefisien, dkoef) ; free(dkoef);

nn -= 2; } } } main() {

int p, i, n;

float *koef, * akarr, * akari, k[2]; clrscr ()

printf (“ Banyak Pangkat (n): ”); scanf (“%d”, &n);

koef = larik (0,n); akarr= larik (1,n) akari= larik (1,n) for (p=n;p>=0;p--); {


(56)

printf (“koef[%d] =,p); scanf (“%f”, &koef [p] ); }

k[0] = 1.0 ; k[1] = -2.0;

printf (“---\n’); printf (“---\n’); printf (“ Real Part Imaginary Part \n” );

akarpolinom(koef,n,akarr,akari); for(i = 1 <= N; i++)

printf(“x%2d = %.2f %.2f\n”,i,akarr[i],akari[i] ); getch( ) ;

return(0) ; }


(57)

koef[30] =2 koef[29] =3 koef[28] =5 koef[27] =2 koef[26] =-1 koef[25] =-5 koef[24] =5 koef[23] =-8 koef[22] =-5 koef[21] =-4 koef[20] =5 koef[19] =6 koef[18] =5 koef[17] =2 koef[16] =6 koef[15] = 9 koef[14] = -4 koef[13] = -7 koef[12] = 5 koef[11] = 9 koef[10] = 5 koef[9] = 65 koef[8] = 23 koef[7] = 5 koef[6] = 58 koef[5] = -47 koef[4] = 2 koef[3] = 5 koef[2] = 6 koef[1] = 2 koef[0] = 5

--- Real Part Imaginary Part

--- x 1 = -0.76 0.89

x 2 = -0.76 -0.89 x 3 = -0.47 0.32 x 4 = -0.47 -0.32 x 5 = 0.68 0.29 x 6 = 0.68 -0.29


(58)

x 7 = 0.00 0.15 x 8 = -1.06 -0.15 x 9 = 0.09 0.57 x10 = 0.09 -0.57 x11 = 0.28 0.96 x12 = 0.28 -0.96 x13 = 0.54 0.99 x14 = 0.54 -0.99 x15 = -0.37 1.10 x16 = -0.37 -1.10 x17 = -0.03 1.03 x18 = -0.03 -1.03 x19 = -1.02 0.54 x20 = -1.02 -0.54 x21 = 1.15 0.18 x22 = 1.15 -0.18 x23 = 0.77 0.83 x24 = 0.77 -0.83 x25 = -1.23 0.78 x26 = -1.23 -0.78 x27 = 0.98 0.46 x28 = 0.98 -0.46 x29 = -0.29 1.56 x30 = -0.29 -1.56


(1)

r[j] = 0.0; }

void bstow(double p[], int n,double *b,double *c,doble eps) {

int i;

float sc,sb,s,rc,rb,r,dv,delc,delb; float *q, *qq, *sisa,bs,cs; float d[3];

if( n <= 2) return; q = larik(0,n); qq = larik (0,n); sisa = larik(0,n) ; bs = p[n] ; cs = p[n-1]; d[2] = 1.0;

for(i = 1; i <= ITMAX; i++){ d[1] = bs;

d[0] = cs;

bagipolinom(p,n,d,2,q,sisa); s = sisa[0] ;

r = sisa[1] ;

BagiPolinom(p,n,d,2,q,sisa) ; sb = -cs * (rc = -sisa[1] ); rb = -bs * rc + (sc = -sisa[0] ) ; dv = 1.0/(sb* rc - sc* rb);

bs += (delb = (r* sc - s* rc)* dv) ; cs += (delc = (-r * sb + s * rb) * dv) ;

if((fabs(delb) <= eps * fabs(bs) | | fabs(bs) < TINY) && (fabs(delc) <= eps*fabs(cs) | | fabs(cs) <TINY)) {

*b = bs; *c = cs; free(q);

free(qq) ; free(sisa); return; } }

*b = bs; *c = cs; free(q);


(2)

free(sisa); return; }

void Akar2(double a, double b, double c, double r1[], double r2 [] ) {

float d, h1, h2; int tanda;

d = b * b - 4.0 * a * c; h1 = -b / (2.0 * a) ;

h2 = sqrt(fabs(d))/(2.0 * a) ; tanda = sign(d);

switch (tanda) { case 0 :

r1[0] = h1; r1[1] = 0.0; r2[0] = h1; r2[1] = 0.0; break;

case 1:

r1[0] = h1 + h2; r1[1] = 0.0; r2[0] = h1 - h2; r2[1] = 0.0; break;

case -1;

r1[0] = h1; r1[1] = h2; r2[0] = h1; r2[1] = -h2; break;

default: break; }

}

void akarpolinom(float pr[], int n, float * akarriil, float *akarimaj) {

/* masukan - pr[]: koef. larik dari pr[0] ke pr[n] n : orde polynomial */

int m, nn, i; double r1[2], r2[2];

double *koefisien, *dkoef, b, c, rs[3]; koefisien = larik (0, n );

dkoef = larik(0, n); for(i = 0; i<= n; i++) koefisien[i] = pr[i]; rs[2] = 1.0;

nn = n;

L 3


(3)

m = 1; while(nn > 0) {

if(nn == 1){

akarRiil[m] = -koefisien[0]/ koefisien[1] ; akarImaj[m] =0.0;

nn--; }

if(nn == 2) {

akar2(koefisien[2], koefisien[1], koefisien[0], r1, r2 ; akarRiil[m] = r1[0]; akarImaj[m] = r1[1] ;

m++; nn-= 2; }

if(nn > 2){

bstow(koefisien, nn, &b, &c, TINY) ; rs[1] = b; rs[0] = c;

akar2(1.0, b, c, r1, r2);

akarriil[m] = r1[0]; akarimaj[m] = r1[1] ; m++ ;

akarriil[m] = r2[0]; akarimaj[m] = r2[1] ; m++ ;

bagipolinom(koefisien, nn, rs, 2, koefisien, dkoef) ; free(dkoef);

nn -= 2; } } } main() {

int p, i, n;

float *koef, * akarr, * akari, k[2]; clrscr ()

printf (“ Banyak Pangkat (n): ”); scanf (“%d”, &n);

koef = larik (0,n); akarr= larik (1,n) akari= larik (1,n) for (p=n;p>=0;p--); {


(4)

printf (“koef[%d] =,p); scanf (“%f”, &koef [p] ); }

k[0] = 1.0 ; k[1] = -2.0;

printf (“---\n’); printf (“---\n’); printf (“ Real Part Imaginary Part \n” );

akarpolinom(koef,n,akarr,akari); for(i = 1 <= N; i++)

printf(“x%2d = %.2f %.2f\n”,i,akarr[i],akari[i] ); getch( ) ;

return(0) ; }


(5)

koef[30] =2 koef[29] =3 koef[28] =5 koef[27] =2 koef[26] =-1 koef[25] =-5 koef[24] =5 koef[23] =-8 koef[22] =-5 koef[21] =-4 koef[20] =5 koef[19] =6 koef[18] =5 koef[17] =2 koef[16] =6 koef[15] = 9 koef[14] = -4 koef[13] = -7 koef[12] = 5 koef[11] = 9 koef[10] = 5 koef[9] = 65 koef[8] = 23 koef[7] = 5 koef[6] = 58 koef[5] = -47 koef[4] = 2 koef[3] = 5 koef[2] = 6 koef[1] = 2 koef[0] = 5

--- Real Part Imaginary Part

--- x 1 = -0.76 0.89

x 2 = -0.76 -0.89 x 3 = -0.47 0.32 x 4 = -0.47 -0.32 x 5 = 0.68 0.29 x 6 = 0.68 -0.29


(6)

x 7 = 0.00 0.15 x 8 = -1.06 -0.15 x 9 = 0.09 0.57 x10 = 0.09 -0.57 x11 = 0.28 0.96 x12 = 0.28 -0.96 x13 = 0.54 0.99 x14 = 0.54 -0.99 x15 = -0.37 1.10 x16 = -0.37 -1.10 x17 = -0.03 1.03 x18 = -0.03 -1.03 x19 = -1.02 0.54 x20 = -1.02 -0.54 x21 = 1.15 0.18 x22 = 1.15 -0.18 x23 = 0.77 0.83 x24 = 0.77 -0.83 x25 = -1.23 0.78 x26 = -1.23 -0.78 x27 = 0.98 0.46 x28 = 0.98 -0.46 x29 = -0.29 1.56 x30 = -0.29 -1.56