Metode Numerik.pdf

68
Pemrograman dan Metode Numerik (Untuk Fisika) Fahrudin Nugroho June 20, 2013

Transcript of Metode Numerik.pdf

Pemrograman dan Metode Numerik(Untuk Fisika)

Fahrudin Nugroho

June 20, 2013

Contents

Pengantar 4

1 Pendahuluan 6

1.1 Motivasi dan Latar Belakang . . . . . . . . . . . . . . . . . . 6

1.2 Mengapa Bahasa Pemrograman C? . . . . . . . . . . . . . . 7

2 Pengenalan Komputer 9

2.1 Komputer . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

2.2 Sistem Operasi Linux . . . . . . . . . . . . . . . . . . . . . . 10

2.2.1 Struktur direktori Linux . . . . . . . . . . . . . . . . 11

2.2.2 Software aplikasi dalam Linux . . . . . . . . . . . . . 12

2.3 Compiler dan aplikasi Sciencedalam Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2.3.1 Paket Program Sage . . . . . . . . . . . . . . . . . . 16

2.3.2 Paket program Matlab dan semisalnya . . . . . . . . 18

3 Proses Pemrograman 20

3.1 Program dan bahasa pemrograman . . . . . . . . . . . . . . 20

3.2 Penerjemah Bahasa . . . . . . . . . . . . . . . . . . . . . . . 21

3.3 Merancang sebuah program . . . . . . . . . . . . . . . . . . 23

3.3.1 Menganalisa, dan merancang urutan penyelesaian masalah(Algoritma) . . . . . . . . . . . . . . . . . . . . . . . 23

3.3.2 Menuangkan Algoritma kedalam Kode Sumber . . . . 25

1

CONTENTS 2

3.3.3 Mengeksekusi program dan menguji program . . . . . 26

4 Struktur Dasar Algoritma 28

4.1 Struktur Berurutan . . . . . . . . . . . . . . . . . . . . . . . 28

4.2 Struktur Seleksi . . . . . . . . . . . . . . . . . . . . . . . . . 29

4.2.1 Struktur seleksi If . . . . . . . . . . . . . . . . . . . . 29

4.2.2 Struktur seleksi If else . . . . . . . . . . . . . . . . . 30

4.3 Struktur Pengulangan . . . . . . . . . . . . . . . . . . . . . 32

4.3.1 Struktur perulangan for . . . . . . . . . . . . . . . . 33

4.3.2 Struktur perulangan while . . . . . . . . . . . . . . . 34

4.3.3 Struktur perulangan do while . . . . . . . . . . . . . 34

4.4 Struktur Kombinasi . . . . . . . . . . . . . . . . . . . . . . . 35

4.5 Quiz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

4.6 Tugas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

4.7 Jawaban Quiz . . . . . . . . . . . . . . . . . . . . . . . . . . 35

5 Pemrograman C 37

5.1 Bagian-bagian dalam bahasa C . . . . . . . . . . . . . . . . 37

5.2 Rekursi dalam bahasa C . . . . . . . . . . . . . . . . . . . . 39

5.2.1 Penerapan pemrograman pada contoh sederhana . . . 40

5.3 Tugas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

6 Permasalahan Akar Fungsi 45

6.1 Metode Bisection . . . . . . . . . . . . . . . . . . . . . . . . 46

6.2 Metode Newton . . . . . . . . . . . . . . . . . . . . . . . . . 48

6.2.1 PR . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

6.2.2 Metode Newton Orde Dua (Pengayaan) . . . . . . . . 52

7 Masalah Integrasi Numerik 54

7.1 Metode Trapesium . . . . . . . . . . . . . . . . . . . . . . . 54

7.2 Metode Simpson . . . . . . . . . . . . . . . . . . . . . . . . 57

8 Interpolasi dan Pendekatan 61

CONTENTS 3

8.1 Interpolasi Lagrange . . . . . . . . . . . . . . . . . . . . . . 61

8.2 Interpolasi Hermite . . . . . . . . . . . . . . . . . . . . . . . 64

8.3 Pendekatan Pada Turunan (diferensial) . . . . . . . . . . . . 65

Pengantar

Bismillahirohmaannirrahim. Puji syukur penulis panjatkan keharibaan Rabbsemesta alam atas selesainya catatan kuliah ini.

Tujuan kami dalam menulis catatan kuliah pemrograman dan metodenumerik ini adalah sebagai bahan pendamping mata kuliah pemrogramandan metode numerik yang kami ampu. Sesungguhnya mata kuliah metodenumerik ini berlaku umum untuk semua jurusan. Hanya saja karena mataku-liah ini diberikan untuk mahasiswa dan mahasiswi program studi Fisika,Jurusan Fisika, maka contoh-contoh yang diberikan lebih banyak mengan-dung keilmuwan Fisika. Akan tetapi sifat Fisika yang menjadi dasar bagisemua bidang keilmuwan khususnya teknik, maka buku ini juga relevan bagimahasiswa teknik yang tertarik pada topik-topik dimana metode numerikdigunakan.

Metode numerik biasanya diterapkan pada kasus-kasus khusus dimanapenyelesaian analitik sudah sulit dicapai atau bahkan tidak mungkin lagidilakukan. Secara praktis nampak bahwa metode numerik adalah alter-natif bagi metode analitik, akan tetapi jika ditinjau secara lebih dalam akanterlihat bahwa metode numerik sendiri didasarkan pada suatu ide yang fun-damental yaitu matematika diskret.

Dalam catatan kuliah ini akan akan diperkenalkan konsep dan teknikdasar pemrograman dan akan dibahas pula beberapa metode-metode nu-merik dasar yang akan sering ditemui oleh mahasiswa calon peneliti. Untukmenghindari kesulitan yang berganda, yaitu kesulitan memahami metodenumerik sekaligus kesulitan memahami topik fisika, maka akan dipilih be-berapa permasalahan Fisika yang sederhana sebagai contoh kasus. Hal inidilakukan mengingat bahwa mahasiswa yang mengambil mata kuliah ini

4

CONTENTS 5

adalah mahasiswa calon sarjana yang dapat diasumsikan belum mengenalseluk beluk metode numerik dan terapan sesungguhnya, yaitu permasalahanFisika yang kompleks. Selain itu perlu ditekankan bahwa ketika suatu per-masalahan Fisika diselesaikan dengan cara numerik dan setelah suatu pro-gram dibangun dan dijalankan, maka hasil keluaran yang biasanya berupaangka harus diuji kebenarannya/kesesuaiaannya dengan keadaan ”Fisis” ka-sus yang ditinjau. Khusus untuk kasus yang dapat diselesaikan secara anal-itik, pengujian ini dapat dilakukan dengan membandingkan dengan hasilanalitik.

Penulis menyadari banyaknya kekurangan dalam catatan yang masih”under construction” ini, kritik dan saran yang bersifat membangun penulisharapkan dan terima dengan senang hati. Akhirnya penulis berharap bahwacatatan kuliah ini dapat bermanfaat.

Chapter 1

Pendahuluan

1.1 Motivasi dan Latar Belakang

Metode numerik selalu dihubungkan dengan perkembangan komputer, karenaperkembangan metode numerik itu sendiri berawal dari penemuan kom-puter yang canggih beberapa abad yang lalu. Saat ini simulasi numerikmenggunakan komputer atau disebut sebagai simulasi komputer dipandangsebagai salah satu metode yang penting dalam penyelesaian permasalahanyang kompleks. Dalam Fisika, metode ini di gunakan untuk keperluanmenterjemahkan fenomena fisis kedalam bentuk matematika diskret 1, men-golahnya kembali dan menyelesaikannya di dalam komputer. Berbeda den-gan pendekatan teoretik yang banyak melandaskan penyelesaiannya padabanyak asumsi dan pendekatan, penyelesaian numerik saat ini cenderungmenyelesaikan masalah dengan cara memodelkan secara lebih detail keadaanfenomena yang sesungguhnya. Hal ini tentu saja dapat dilakukan dengankemampuan komputer yang semakin canggih sekarang ini.

Dengan kemajuan metode numerik pula, saat ini komputasi fisika yangdilandaskan pada metode numerik, telah mendapat posisi penting dan strate-gis. Secara tradisional fisikawan bekerja di laboratorium untuk memveri-

1Berbeda dengan kalkulus dan matematika pada umumnya melandaskan prinsip-prinsip kalkulasinya pada ”idea”-nya yang bersifat infinitesimal. Hal ini dapat dilakukandengan cara memperkenalkan bilangan tak hingga (∞).

6

CHAPTER 1. PENDAHULUAN 7

fikasi sebuah teori yang diajukan oleh teoriwan. Seorang eksperimentalismembutuhkan pengetahuan tentang peralatan elektronika, mekanika, daninstrumentasi saat bekerja dengan serangkaian alat untuk memperoleh serangka-ian data dilandaskan pada metode eksperimen yang baik. Sedangkan teori-wan membutuhkan matematika analitik, seringkali ”rigors mathematics”,untuk memformulasikan sebuah teori. Tidak berbeda jauh dari eksperimen-talis dan teoriwan, seorang fisikawan komputasi membutuhkan pengetahuanterkait analisis numerik dan pemrograman komputer untuk dapat berhasilmencapai pemanahan fenomena Fisika.

Untuk itulah diperlukan satu kuliah tersendiri bagi mahasiswa Fisikauntuk mengenal metode numerik dan pemrograman komputer sebagai salahsatu pilar metode yang terbukti valid dan diakui oleh khalayak Fisikawan.

1.2 Mengapa Bahasa Pemrograman C?

Saat in terdapat banyak sekali bahasa pemrograman. Di antara banyakbahasa pemrograman tersebut dalam catatan kuliah ini akan digunakanbahasa C.

Pengguna bahasa pemrograman C dan C++ sangatlah banyak. Halini dikarenakan kemampuan bahasa C yang dianggap bisa dipakai dalambanyak bidang termasuk saintifik dan terapan termasuk diantaranya pem-buatan aplikasi. Berikut ini adalah beberapa alasan mengapa bahasa Cdipilih dalam catatan kuliah ini:

1. Untuk setiap sistem operasi dapat dipastikan terdapat setidaknya satujenis compiler C. Hal ini menjamin bahwa setiap mahasiswa dapatmencoba program yang tersedia dalam catatan kuliah ini tanpa terk-endala ketersediaan compiler C.

2. Bahasa C adalah bahasa pemrograman terstruktur. Karenanya ma-hasiswa yang mengikuti kuliah akan diajak untuk menggunakan je-nis pemrograman yang terstruktur dan sederhana. Tujuannya adalahagar mahasiswa dapat dengan mudah mengikuti dan mencoba sendiriprogram-program yang digunakan dan dengan mudah mengerti maknadari setiap kode program. Jika diperlukan atau dikehendaki maka

CHAPTER 1. PENDAHULUAN 8

mahasiswa dapat ”naik tingkat” kedalam bahasa pemrograman yangbersifat objek oriented C++ yang merupakan ”varian” dari C. Keun-tungannya sintak yang digunakan dalam C++ sangatlah mirip den-gan C. Menguasai sintak C berarti menguasai sintak C++. Denganlandasan penguasaan sintaksis maka mahasiswa tinggal menambahwawasan dan konsep bahasa pemrograman polymorphism, classes, in-heritance jika ingin beralih ke C++.

3. Performa terkait dengan kecepatan proses bahasa C dikenal sangatunggul.

4. Sistem operasi yang dikenal saat ini, driver bagi sebagian besar pe-ripheral, dan software serta aplikasi yang tersedia saat kebanyakandibuat dengan bahasa C. Karenanya pengalaman menggunakan ba-hasa C merupakan aset yang berharga bagi mahasiswa.

5. Terakhir tetapi penting, adalah bahasa C dapat digunakan pada sis-tem komputer parallel. Jika dibutuhkan maka mahasiswa dapat meng-gunakan bahasa C untuk menyelesaikan masalah yang kompleks danmembutuhkan pemrograman parallel, dengan satu syarat mereka men-guasai algoritma parallel.

Chapter 2

Pengenalan Komputer

2.1 Komputer

Pada dasarnya setiap komputer terdiri dari central processing unit (CPU),bagian input data data output. Skema dari sebuah komputer ditunjukandalam gambar berikut:

Bagian-bagian di atas sebetulnya belum mewakili komputer secara sepenuh-nya. Hal ini dikarenakan selain bagian-bagian di atas, yang biasa kita sebutperangkat keras atau hardware, diperlukan perangkat lunak software. Tanpaadanya perangkat lunak maka hanya ada seonggok mesin dan rangkaianelektronik, dan tidak bisa dikatakan sebagai komputer.

9

CHAPTER 2. PENGENALAN KOMPUTER 10

2.2 Sistem Operasi Linux

Kata Linux sekarang ini sudah sangat familier bagi pengguna komputer. Se-jalan dengan semakin majunya perkembangan perangkat keras maka sistemoperasi dan aplikasi didalamnya juga berkembang.

Nama Linux sendiri diturunkan dari pencipta awalnya, Linus Tor-valds, yang sebetulnya mengacu pada suatu kumpulan software lengkapyang bersama-sama dengan kernel menyusun suatu sistem operasi yanglengkap.

Lingkungan sistem operasi ini mencakup ratusan program, termasukkompiler, interpreter, editor dan utilitas. Perangkat bantu yang mendukungkonektifitas, ethernet, SLIP dan PPP dan interope rabilitas. Produk perang-kat lunak yang handal, termasuk versi pengembangan terakhir. Kelompokpengembang yang tersebar di seluruh dunia yang telah bekerja dan men-jadikan Linux portabel ke suatu platform baru, begitu juga mendukungkomunitas pengguna yang memiliki beragam kebutuhan dan juga penggunadapat turut serta bertindak sebagai tim pengembang sendiri.

Linux merupakan sistem operasi khusus dan berbeda dengan sistem op-erasi lainya karena tersedia secara bebas di internet, berbagai vendor telahmembuat suatu paket distribusi yang dapat dianggap sebagai versi kemasanLinux. Paket ini termasuk lingkungan Linux lengkap, penagkat lunak un-tuk instalasi dan mungkin termasuk perangkat lunak khusus dan dukungankhusus. Salah satu contoh sistem operasi Linux adalah CentOS, Mandriva,Ubuntu, dan SuSe beberapa aplikasi bawaan serta beberapa aplikasi tam-bahan.

Saat ini Linux adalah sistem UNIX yang sangat lengkap, bisa digu-nakan untuk pengembangan software dan bahkan untuk pekerjaan sehari-hari. Linux merupakan alternatif sistem oprasi yang jauh lebih murah jikadibandingkan sistem operasi komersial (misalnya Windows 9.x/NT/2000/ME/XP/VISTA/7/8).

Berikut ini adalah beberapa fakta dari hal-hal yang menguntungkandengan menggunakan program dan file-file Linux

1. Pada dasarnya semua data tersimpan di dalam harddisk walau ada be-berapa kondisi dimana data tersimpan di disket. Linux/UNIX mem-

CHAPTER 2. PENGENALAN KOMPUTER 11

berikan beberapa proses spesial dimana terminal, printer dan devicehardware lainnya dapat diakses seperti kita mengakses file yang ter-simpan dalam harddisk atau disket.

2. Ketika program dijalankan, program tersebut dijalankan dari harddiskke dalam RAM dan setelah dijalankan akan dinamakan sebagai proses.

3. Linux/UNIX menyediakan servis untuk membuat, memodiflkasi pro-gram, proses dan file.

4. Linux/UNIX mendukung struktur file yang bersifat hirarki.

5. Linux/UNIX adalah salah satu sistem operasi yang termasuk ke dalamkelas sistem operasi yang dapat melakukan multitasking. Multitaskingsendiri adalah keadaan dimana suatu sistem operasi dapat melakukanbanyak kerjaan pada saat yang bersamaan.

6. Selain multitasking, Linux/UNIX juga dapat mendukung multiuser.Yaitu sistem operasi yang pada saat bersamaan dapat digunakan olehlebih dari satu user yang masuk ke dalam sistem. Bahkan untuk Linuxjuga mendukung untuk multiconsole dimana pada saat bersamaan didepan komputer langsung tanpa harus melalui jaringan dan memu-ngkinkan lebih dari satu user masuk ke dakam sistem.

2.2.1 Struktur direktori Linux

Direktori root Linux memiliki beberapa direktori yang merupakan standardirektori pada banyak distro Linux. Direktori-direktori utama dalam Linuxadalah:

CHAPTER 2. PENGENALAN KOMPUTER 12

Direktori Isibin berisi file-file binary standar yang dapat digunakan oleh

seluruh user baik user biasa maupun super userboot berisi file-file yang diaunakau unnik booting Linux ter-

masuk kernel imagedev berisi file system khusus yang merupakan refleksi device

hardware yang dikenali dan digunakan sistemhome berisi direktori-direktori yang merupakan direktori

home untuk user biasa dan aplikasi tertentulib berisi file-file library yang digunakan untuk mendukung

kerja kernel Linuxmnt direktori khusus yang disediakan untuk mounting (men-

gaitkan) device disk storage ke sistem dalam bentuk di-rektori

proc berisi file system khusus yang menunjukkan data-datakernel setiap saat

root direktori home uutuk user root (user khusus denganpriviledges hampir tak terbatas)

sbin sama sepertrti direktori bin, tetapi hanya super useryang sebaiknya menggunakan binary-binary tersebutmengingat fungsifungsi binary yang terdapat di direk-tori ini untuk maintenance sistem

tmp berisi filc-file sementara yang dibutuhkan scbuah ap-likasi yang sedang berjalan

usr berisi library, binary, doktunentasi dan file lainnyahasilinstalasi user

var berisi file-file log. mailbox dan data-data aplikasi

2.2.2 Software aplikasi dalam Linux

Sekarang ini, banyak aplikasi Linux yang dapat digunakan untuk keperluankantor seperti untuk spreadsheet, word processor, database dan programeditor grafis yang memiliki fungsi dan tampilan seperti Microsoft Office,yaitu OpenOffice. Selain itu, juga sudah tersedia versi Corel untuk Linuxdan aplikasi seperti Matlab yang pada Linux dikenal sebagai Scilab. Berikut

CHAPTER 2. PENGENALAN KOMPUTER 13

adalah beberapa Fitur yang tersedia dalam Linux

1. Shell dan Shell commandMerupakan tempat bekerja yang paling utama diantara para pemakaiLinux, terutama Linux versi-versi awal. Pada Shell ini perintah-perintahtext dapat dieksekusi. Tampilan Shell adalah dapat dilihat pada gam-bar berikut:

Dari gambar dapat dilihat siapa yang sedang bekerja pada shell.

2. Adapun perintah-perintah yang dapat dijalankan pada Shell diantaranya:

MC (Midnight Commander) MC atau Midnight Commander merupakanaplikasi yang sangat berguna karena hemat memory saat digunakan. Den-gan mengetikan mc pada shell maka akanmuncul tampilan sebagai berikut:

CHAPTER 2. PENGENALAN KOMPUTER 14

Perintah-perintah yang dapat digunakan sesuai dengan gambar diatasdapat dilihat pada Tabel di bawah ini :

Tombol FungsiF1 Mengeluarkan menu help (bantuan)F2 Menyimpan FileF3 Untuk memblok bagian yang dipilihF4 Untuk mengganti kataF5 Menyalin satu blokF6 Memindahkan satu blokF7 Mencarai kata yang ingin di editF8 Menghapus suatu blokF9 Memunculkan menu navigasiF10 Mengakhiri editor

2.3 Compiler dan aplikasi Science

dalam Linux

Ada banyak aplikasi Science yang terdapat dalam Linux. Hal yang palingutama dari aplikasi Science yang terdapat dalamLinux adalah Compiler.Ada banyak compiler yang tersedia dalam Linux, untuk SuSE 9.1 compiler

CHAPTER 2. PENGENALAN KOMPUTER 15

yang telah ada didalmnya adalah: gcc, g++, g77 dan masih banyak lagicompiler yang lain.

Untuk keperluan aplikasi perkantoran/office maka Linux memiliki ap-likasi openoffice. Di dalam openoffice telah tersedia fitur-fitur canggih yangbahkan tidak tersedia dalam sistem office yang lain (Ms Offiice) diantaran-nya adalah kita bisa mengetikan perintah Latex kedalam sistem persamaansehingga bagi pengguna yang terbiasa menggunakan Latex maka fitur inisangatlah menguntungkan. Dengan open office bentuk file yang disimpandengan sistem office yang lain dapat dilihat, dibuka, dan diedit dan ser-ingkali tidak berlaku sebaliknya. Selain office tersedia pula aplikasi Latexyang sangat terkenal dan familier di kalangan Matematikawan, Fisikawandan ilmuwan lainya. Pada dasarnya Latex digunakan untuk mempersiap-kan naskah seperti halnya text editor, dengan kelebihan utama yaitu ke-mamouan untuk menghasilkan persamaan dengan lebih baik. Salah satucontoh bentuk tampilan tex editor Latex dapat dilihat sebagai berikut

Salah satu kelebihan lain dari Kile adalah terdapat compiler Latex2html,sehingga file latex yang ingin diupload kehalaman web bisa dikompilasi se-cara apik dengannya.

CHAPTER 2. PENGENALAN KOMPUTER 16

2.3.1 Paket Program Sage

Sage adalah suatu free open source math software yang relatif baru yangberguna untuk keperluan komputasi numerik, alkabar, geometri, dan bidanglainya. Sage dapat menjalankan beberapa perintah dari berbagai aplikasi di-antaranya gnuplot, maxima, ocatave, dan beberapa compiler lainnya. Kare-nanya Sage dikatakan sebagai alternatif pengganti danpenggabungan bagiMaple, Mathematica, Magma, dan MatLab. Selain itu juga sage men-jalankan beberpa aplikasi pemrograman yaitu Dalam praktikum kali iniakan digunakan Sage versi 2.6. Sage dapat dijalankan dengan shell com-mand maupun dengan dengan interface yang dijalankan pada web browserFirefox. cara menjalankan aplikasi Sage adalah dengan mengetikan perintahsage dan menekan enter pada shell. sehingga akan muncul direktori sage.Semua perintah sage dapat dijalankan dengan mengetikan perintah-perintahyang dikenal dalam sage. Sedangkan untuk memunculkan interface melaluiweb browser maka ketik perintah notebook() kemudian enter pada direk-tori sage, maka akan ditampilkan interface yang diload pada firefox denganserver local Sage, dan tampilannya adalah sebagai berikut :

CHAPTER 2. PENGENALAN KOMPUTER 17

Contoh program Sage

Dalam direktori Sage ketikan perintah berikut maka akan anda peroleh kelu-rannya:

sage: 2 + 2

4

sage: A = matrix(4,4, range(16));

A

[ 0 1 2 3]

[ 4 5 6 7]

[ 8 9 10 11]

[12 13 14 15]

sage: integral(x*sin(x^2), x)

-cos(x^2)/2

sage: integral(x/(x^2+1), x, 0, 1)

log(2)/2

Selain itu bisa juga dengan membuat kode sumber sage yang berisikan:

print Halo ini program pertama saya

print 2*4^2

setalah disimpan dengan nama program1.sage setelah itu melalui direktorisage ketikan perintah

sage: load program1.sage

Halo ini program pertama saya

32

yang tidak lain adalah keluaran sesuai dengan isi program yang kita per-intahkan dalam program1.sage. Adapun beberapa operator dalam Sageadalah sebagai berikut:

CHAPTER 2. PENGENALAN KOMPUTER 18

Operator deksripsior boolean orand boolean andnot boolean notin, not in membershipis, is not identity test< , <=, >, >=,==,! =, <> perbandingan+,- operasi penambahan dan pengurangan*,/,% perkalian, pembagian, dan reminder**, ˆ operasi perpangkatan

2.3.2 Paket program Matlab dan semisalnya

Telah banyak diketahui khalayak umum bahwa Matlab adalah satu paketprogram yang handal. Kehandalan paket program Matlab terletak padakelengkapan function yang telah tersedia padanya. Berikut adalah tampilandari antar muka Matlab.

Yang dimaksud dengan function sesungguhnya adalah program yangtelah dibangun dengan tujuan khusus dan kemudian digabungkan kedalam

CHAPTER 2. PENGENALAN KOMPUTER 19

sistem Matlab. Karenanya kemudian Matlab disebut sebagai Paket pro-gram.

Selain paket program Matlab ada beberapa paket program lain yangsemisal denganya. Misalnya Skylab, Mupad, Octave dan Mathematica.Paket program tersebut tidak akan dibahas secara lebih rinci pada catatankuliah ini.

Chapter 3

Proses Pemrograman

3.1 Program dan bahasa pemrograman

Program dalam istilah komputer mempunyai arti sebagai kumpulan perin-tah yang digunakan untuk mengatur komputer untuk melaksanakan suatupekerjaan. Melalui program inilah kemudian manusia dapat berinteraksidengan ”mesin” komputer. Tanpa sebuah program maka komputer tidakakan dapat melakukan sesuatu sesuai dengan yang dikehendaki. Jadi ketikasuatu program dibuat dan dijalankan, terjadi interaksi antara manusia dankomputer.

Seperti halnya interaksi antar manusia diperlukan suatu bahasa agarsetiap ungkapan dapat difahami dan setiap perintah ataupun informasi da-pat ditindak lanjuti. Karenanya untuk bisa membuat program, seorang pro-gramer (orang yang biasa membuat program komputer) yang ingin berin-teraksi dengan komputer memerlukan bahasa pemrograman (lihat ilustrasiyang diambil dari http : //fooyoh.com/iamchiq living lifestyle/5062933berikut).

20

CHAPTER 3. PROSES PEMROGRAMAN 21

Agar dapat difahami maka seorang programer harus mengikuti kaidahbahasa program tertentu yang kemudian disebut sebagai bahasa pemrogra-man. Bahasa pemrograman dapat dikategorikan kedalam

1. Bahasa beraras tinggi

2. Bahasa beraras rendah

Bahasa beraras tinggi adalah bahasa pemrograman yang berorientasipada manusia (programer). Artinya bahasa program jenis ini lebih mudahdifahami karena mendekati bahasa manusia dan menggunakan kata-katayang biasa digunakan oleh manusia khususnya bahasa Inggris. Contoh ba-hasa jenis adalah bahasa Basic, Pascal, C, C++, Java.

Sedangkan bahasa beraras rendah adalah bahasa yang berorientasipada mesin. Bahasa ini menggunakan kode biner yang hanya mengenalangka 0 dan 1. Yang tergolong dalam bahasa ini adalah bahasa Asembler(rakitan). Bahasa semacam ini sulit untuk dibaca dan difahami langsungoleh manusia dan programer yang biasa menggunakan bahasa beraras tinggi.Biasanya bahasa mesin hanya bekerja pada satu jenis mesin tertentu kare-nanya disebut machine dependent.

3.2 Penerjemah Bahasa

Sebagai mana dijelaskan sebelumnya bahwa sebenarnya ada perbedaan an-tara bahasa manusia dan bahasa mesin. Bahasa mesin sulit dimengerti

CHAPTER 3. PROSES PEMROGRAMAN 22

oleh manusia dan sebaliknya mesin tidak bisa memahami bahasa manusia.Singkatnya bahasa program yang di buat dengan bahasa program berarastinggi tidak bisa difahami langsung oleh mesin. karenanya diperlukan penr-jemah bahasa, yang menerjemahkan setiap perintah dari bahasa aras tinggikedalam bahasa mesin, agar mesin dapat menjalankan perintah-perintahtersebut.

Penerjemah bahasa ini kemudian dikelompokan menjadi:

1. Interpreter.Yaitu penerjemah bahasa yang mengerjakan satu baris intruksi ba-hasa kedalam bahasa mesin untuk kemudian dijalankan oleh mesin.Instruksi berikutnya akan diterjemahkan selanjutnya jika instruksipertama telah selesai diinstruksikan. Dengan kata lain interpretermenterjemahkan dan menginstruksikan semua perintah satu persatu.

2. Compiler.Berbeda dengan interpreter, Compiler bekerja secara lebih kompakyaitu menerjemahkan semua instruksi kedalam bahasa mesin sekali-gus menjadi kode objek. Dan tidak ada proses penerjemahan lagiketika kode objek dijalankan oleh mesin. Hasil dari proses kompilasiini biasanya adalah program yang dapat dijalankan tanpa ada trans-lator, atau sering disebut sebagai executable. Sekarang ini programyang executable ini sering disebut sebagai aplikasi.

Dengan menggunakan Interpreter seseorang dapat melakukan prosespencarian kesalahan pada kode sumber dengan lebih mudah. Namun kelema-hanya adalah bahwa setiap kali menjalankan program dengan interpretermaka kode sumber harus selalu tersedia dan jika jumlah instruksi besarmaka proses pengeksekusian menjadi lambat, dan proses ini selau berulangsetiap kali program digunakan.

Sedangkan dengan Compiler, pengerjaan instruksi bisa berjalan den-gan cepat karena setiap kali hanya diperlukan satu program executableyang telah dihasilkan. Program executable ini juga bisa diduplikasi dandijalankan pada komputer yang lain dengan platform yang sama. Namunsecara kebahasaan program yang diproses dengan compiler harus betul se-cara keseluruhan sebelum benar-benar bisa dikompilasi dan distribusikan.

CHAPTER 3. PROSES PEMROGRAMAN 23

3.3 Merancang sebuah program

Sebuah program dirancang dan dibuat untuk menyelesaikan secara khusussebuah permasalahan. Terdapat tiga langkah penting dalam menyelesaikanpermasalahan:

1. Menganalisa masalah, dan merancang urutan penyelesaian (Algoritma)

2. Menuangkan Algoritma kedalam bentuk program

3. Mengeksekusi dan menguji program

3.3.1 Menganalisa, dan merancang urutan penyelesa-ian masalah (Algoritma)

Pada dasarnya permasalahan yang dapat dikerjakan melalui proses pem-rograman sangatlah luas. Mulai dari suatu permasalahan yang sederhanasampai dengan permasalahan yang kompeks. Biasanya permasalahan yangkompleks lah yang perlu dikerjakan dengan program komputer. Akan tetapidalam catatan kuliah kali ini akan dijelaskan beberapa permasalahan yangsederhana dengan tujuan siswa dapat memahami dengan lebih mudah prosesmengalisa masalah dan proses merancang suatu urutan kerja (Algoritma)1.

Sebelum merancang suatu urutan kerja, maka biasanya dillakukan in-dentifikasi masalah dan penyaringan informasi. Berdasarkan hasil identi-fikasi masalah dan penjaringan informasi maka kemudian langkah kerja da-pat dirancang dan untuk selanjutnya dapat dituangkan kedalam bentukprogram.

Sebagai contoh sederhana, kali ini akan diselesaikan suatu permasala-han menghitung luas lingkaran. Jelas permasalahan ini adalah permasala-han matematik biasa dan melibatkan rumus perhitungan biasa. Sedangkaninformasi yang diperlukan untuk dapat menyelesaikan masalah ini adalahyaitu data besarnya nilai π dan panjang jejari lingkaran. Dengan logikasederhana maka rancangan penyelesaian permasalahan ini dapat dituliskansebagai berikut

1Istilah Algoritma diambil dari nama seorang ilmuwan Arab bernama Abu Ja’farMohammed Ibn Musa al Khowarizmi

CHAPTER 3. PROSES PEMROGRAMAN 24

Luas = nilai pi x panjang jejari x panjang jejari

Algoritma bagi penyelesaian masalah ini kemudian dapat dituliskan sebagaiberikut:

1. Peroleh panjang jejari

2. Hitung luas lingkaran sesuai dengan rumus

3. Tampilkan nilai luas lingkaran

Ada banyak cara untuk menuliskan Algoritma dan Algoritma tidakselalu di tuangkan seperti layaknya bahasa manusia. Diantaranya denganmenuangkan kedalam kode semu (pseudocode). Untuk permasalahan luaslingkaran maka pseudocode yang mungkin adalah sebagai berikut

luas <-- pi x panjang jejari x panjang jejari

Untuk suatu program yang lebih kompleks maka diperlukan ungkapan kodesemu yang lebih panjang dan kompleks, untuk kasus seperti ini maka bi-asanya kode semu lebih berorientasi dan lebih mirip pada bahasa programdimana permasalahan tersebut akan diselesaikan.

Selain kode semu kadangkala Algoritma di tuangkan kedalam bentukdiagram alir. Sebagai contoh diagram alir untuk menghitung luas lingkarandiberikan pada gambar berikut

CHAPTER 3. PROSES PEMROGRAMAN 25

Dari gambar di atas dapat kita lihat berbagai macam bentuk yang di-gunakan dalam diagram alir. Bentuk oval menandakan memulai dan akhir.Bentuk persegi empat yang digunakan untuk melambangkan proses perhi-tungan. Bentuk jajaran genjang menandakan masukan atau keluaran suatuproses. Bnetuk layang-layang menandakan pengambilan keputusan.

3.3.2 Menuangkan Algoritma kedalam Kode Sumber

Setelah proses analisa masalah dan pembuatan Algoritma selesai dibangunmaka proses selanjutnya adalah pembuatan kode sumber. Untuk kasus per-masalahan luas lingkaran maka kode sumber dalam bahasa C kurang lebihdapat dilihat sebagai berikut:

CHAPTER 3. PROSES PEMROGRAMAN 26

#include <stdio.h>

#define PI 3.1415926535897932385E0

main()

{

double radius, area;

/* mendefiniskan variabel-veriabel */

printf("Enter the radius of a circle \n");

/* perintah memasukan input radius */

scanf("%lf", &radius);

/* membaca input radius */

area = radius * radius * PI;

/* rumus area */

printf("radius=%f, area=%f\n", radius, area);

/* mencetak hasil */

}

3.3.3 Mengeksekusi program dan menguji program

Setelah kode sbumer diatas di buat dalam editor, maka dapat disimpandengan extension c. Dan selanjutnya dapat dikompilasi dengan kompiler c.Diantara kompiler c yang dapat digunakan adalah gcc yang telah tersedia dipada sistem operasi Linux. Dengan proses kompilasi akan dapat diketahuiapakah program tersebut sudah betil secara sintaks atau belum. Jika ter-dapat peringatan eror maka dapat dicari bagian/baris mana yang mengak-ibatkan adanya eror tersebut. Setelah diketahui baris yang menyebabkaneror dan dilakukan perbaikan maka program dapat kembali dikompilasi.Demikian seterusnya sampai program benar-benar selesai dikompilasi tanpaada peringatan eror. Stelah itu program executable yang diperoleh dapat di-jalankan dan nilai keluaran dapat diuji kebenarannya. Khusus untuk kasussederhana seperti luas lingkaran maka uji keluaran tersebut dapat diperolehdengan membandingkan dengan hasil perhitungan analitik. Untuk program

CHAPTER 3. PROSES PEMROGRAMAN 27

yang dirancang menyelesaikan permasalahan yang kompleks seringkali pen-carian kesalahan baik dalam program maupun keluaran tidaklah sederhana.Dalam konteks program kesalahan dalamkode sumber sering disebut denganbug, dan proses pencarian kesalahan ini sering disebut sebagai debugging.

Chapter 4

Struktur Dasar Algoritma

Setidaknya ada tiga macam struktur dasar dalam algoritma, seperti yangakan dijelaskan sebagai berikut.

4.1 Struktur Berurutan

Struktur dasar berurutan datau sekuensial merupakan struktur dasar algo-ritma yang memproses langkah-langkah dengan cara berurutan. Jika dalamsebuah program terdiri dari sepuluh baris maka setiap baris akan dikerjakansatu persatu secara berurutan. Salah satu contoh bentuk diagram alir bagistruktur sekuensial ditunjukan oleh gambar berikut

28

CHAPTER 4. STRUKTUR DASAR ALGORITMA 29

Dalam bagian terdahulu pada bagian contoh algoritma perhitunganluas lingkaran telah digunakan jenis algoritma ini.

4.2 Struktur Seleksi

Dalam struktur seleksi terjadi sebuah pemilihan langkah kerja (pengambi-lan keputusan) yang didasarkan pada suatu kondisi. Dalam proses ini jikasuatu kondisi dipenuhi maka akan dilakukan langkah 1 sedangkan jika tidakdipenuhi maka akan dilakukan langkah 2. Struktur seperti ini diilustrasikandalam gambar berikut

Setidaknya ada tiga jenis struktur seleksi yang dapat dikategorikansebagai berikut:

4.2.1 Struktur seleksi If

Struktur seleksi ini adalah struktur paling sederhana dimana tedapat satukondisi dan seleksi didasarkan pada kondisi yang diberikan tersebut. Bentukumum struktur seleksi dengan if adalah

If (kondisi)

pernyataan

CHAPTER 4. STRUKTUR DASAR ALGORITMA 30

Salah satu diagram alir bagi operasi bersyarat ini ditunjukan oleh gambarberikut.

4.2.2 Struktur seleksi If else

Struktur seleksi bersyarat menyediakan pernyataan alternatif yang harus dieksekusi jika kondisi tidak dipenuhi. Artinya jika kondisi dipenuhi makaakan dilakukan perintah 1 dan jika kondisi salah maka akan dilakukan per-intah 2.

Bentuk umum pernyataan seleksi If else adalah sebagai berikut

If (kondisi)

pernyataan 1;

else

pernyataan 2;

Adapun struktur seleksi If else di tunjukan oleh diagram alir sebagaiberikut

CHAPTER 4. STRUKTUR DASAR ALGORITMA 31

Contoh riil bagi struktur seleksi ini adalah proses pencarian nilai mak-simal dari dua buah bilangan yang diberikan misalnya 10 dan 12. Anggapangka 10 sebagai A dan angka 12 sebagai B, maka kode semu bagi penyele-saian masalah ini sebagai berikut

1. Masukan nilai A dan B

2. Bilangan terbesar ← A

3. JIKA Bilangan terbesar < B MAKABilangan terbesar ← BAkhiri JIKA

4. Tampilkan Bilangan terbesar

Diagram alir bagi penyelesaian permasalahan ini adalah.

CHAPTER 4. STRUKTUR DASAR ALGORITMA 32

4.3 Struktur Pengulangan

Struktur pengulangan atau yang biasa disebut loop pada dasarnya adalahkondisi khusus bagi struktur seleksi dimana dengan kondisi tertentu makaproses akan diulang sedangkan untuk kasus sebaliknya maka suatu prosesdapat diberhentikan atau diganti dengan proses yang lain. Salah satu ben-tuk struktur pengulangan sederhana dapat ditunjukan dengan diagram alirsebagai berikut

CHAPTER 4. STRUKTUR DASAR ALGORITMA 33

Seperti struktur seleksi maka ada beberapa jenis struktur perulangan,diantaranya:

4.3.1 Struktur perulangan for

Perintah for adalah perintah untuk melakukan perulangan satu jenis perin-tah atau beberapa pernyataan ketika kondisi masih dipenuhi. Perintah inidimulai dari suatu nilai awal pencacah tertentu dan diakahiri setelah kondisiyang diberikan terlampaui, dengan cara keluar dari loop.

Adapun bentuk umm dari operasi perulangan menggunakan perintahfor adalah

for (inisialisasi, kondisi, pencacah)

pernyataan

Bentuk diagram alir untuk perulangan for adalah

CHAPTER 4. STRUKTUR DASAR ALGORITMA 34

4.3.2 Struktur perulangan while

Perintah while pada dasarnya serupa dengan perintah for. Dimana suatuperulangan akan terus dilakukan selama kondisi yang diberikan masih ter-penuhi.

Adapan bentuk umum perulangan menggunakan perintah while adalahsebagai berikut

while (kondisi)

pernyataan

Bentuk diagram alir bagi perulangan menggunakan perintah while adalahsama dengan diagram alir perintah for.

4.3.3 Struktur perulangan do while

Pada dasarnya perintah do while adalah perintah perulangan yang serupadengan perintah for dan while yang memberikan perintah untuk melakukan

CHAPTER 4. STRUKTUR DASAR ALGORITMA 35

perulangan selama kondisi masih terpenuhi. Bisa dikatakan perintah iniadalah alernatif sintaksis yang tersedia dalam bahasa pemrograman untukmelakukan perulangan.

4.4 Struktur Kombinasi

Selain ketiga struktur dasar di atas dalam program seringkali digunakankombinasi tiga struktur tersebut secara bersamaan.

4.5 Quiz

Buatlah kode semu dan diagram alir yang digunakan untuk menampilkanangka 1 sampai dengan 10 disertai dengan nilai kwadratnya.

4.6 Tugas

Buatlah kode semu dan diagram alir yang digunakan untuk menampilkanbilangan Fibonacci.

4.7 Jawaban Quiz

Kode semu

1. Bilangan ← 1

2. Ulang selama Bilangan < 11Tampilkan (Bilangan, Bilangan x Bilangan)Bilangan ← Bilangan + 1

3. Akhiri Ulangan

Diagram Alir

CHAPTER 4. STRUKTUR DASAR ALGORITMA 36

Chapter 5

Pemrograman C

5.1 Bagian-bagian dalam bahasa C

Dalam bab ini akan diuraikan secara ringkas mengenai pemrograman C.Terutama bagian-bagian dalam tubuh program, dan masalah sitaksis (ke-bahasaan) yang digunakan dalam bahasa C.

Untuk memulainya mari kita tinjau suatu program yang sangat seder-hana berikut

#include <stdio.h>

int main()

{

printf("Mari kita mulai belajar C\n");

return 0;

}

Gambar berikut menjelaskan bagian-bagian yang ada dalam programdi atas:

37

CHAPTER 5. PEMROGRAMAN C 38

Berikut adalah penjelasan atas bagian-bagian dalam program seder-hana di atas

1. Berkas header dengan ekstensi .h adalah berkas berisi prototipe fungsi,definisi konstanta, dan definisi variabel. Prototipe fungsi berupa judulsuatu fungsi yang dilengkapi argumen dan tipe argumen serta tipe nilaibalik, untuk fungsi yang memberikan nilai balik. Bagian ini adalahbagian yang menjadi prasyarat agar suatu program dapat dikompilasi.

2. Praposesor ]include adalah suatu perintah yang digunakan untukmengatur kompiler agar membaca berkas header yang disertakan sete-lahnya.

3. main adalah fungsi yang akan dijalankan pertama kali ketika programdieksekusi. Int menunjukan bahwa program memberikan nilai balikyang bertipe integer yang berarti bilangan bulat

4. printf pda program di atas adalah sebuah fungsi yang digunakan un-tuk menampilkan tulisan pada layar. Adapun tulisan yang akan dita-mpilkan adalah tulisan yang berada dalam tanda kurung dan tandapetik. Tulisan yang ditampilkan mempunyai tipe data string.

CHAPTER 5. PEMROGRAMAN C 39

5. Nilai balik program ditentukan oleh pernyataan return. Pada contohdi atas nilai balik adalah nol, yang berarti jika berhasil maka nilaibalik inilah yang akan dikeluarkan.

Selain pembahasan secara ringkas mengenai pemrograman C di atas,sebenarnya masih banyak sekali hal-hal yang perlu dipelajari oleh mahasiswaagar benar-benar menguasai bahasa pemrograman C. Beberapa hal yangperlu dipelajari tersebut adalah: pengenal (identifier), penunjuk (pointer),tipe data, variabel dan deklarasinya, literal, karakter escape, operator danlain sebagainya. Bagian tersebut tidak akan dibahas secara detail dalambuku ini. Dalam bagian berikutnya akan ditunjukan suatu konsep yangpenting dalam pemrograman yaitu konsep rekursi khususnya rekursi dalambahasa C.

5.2 Rekursi dalam bahasa C

Rekursi adalah suatu konsep yang sangat penting dalam pemrograman. Su-atu fungsi dalam program disebut sebagai rekursif jika fungsi tersbut me-manggil dirinya sendiri.

Berikut adalah contoh penggunaan konsep rekursi dalam program C.

#include <stdio.h>

int sum(int n);

int main(){

int num,add;

printf("Enter a positive integer:\n");

scanf("%d",&num);

add=sum(num);

printf("sum=%d",add);

}

int sum(int n){

if(n==0)

return n;

else

return n+sum(n-1); /*self call to function sum() */

CHAPTER 5. PEMROGRAMAN C 40

}

Contoh program di atas menunjukan bahwa fungsi sum pada dasarnyamemanggil dirinya sendiri. Karenanya fungsi sum dalam program tersebutmenunjukan sesuatu yang bersifat rekursif.

5.2.1 Penerapan pemrograman pada contoh sederhana

Setelah contoh di atas kali ini akan dibahas suatu ungkapan matematiksederhana yang disebut dengan logistic map. Perlu ditekankan bahwa meskipunsecara ungkapan matematik tampak sederhana namun permasalahan inisebenarnya mengandung kompleksitas yang tinggi. Berikut adalah ungka-pan matematik logistic map yang dimaksud

xn+1 = rxn(1− xn) (5.1)

Berikut ini adalah contoh program yang digunakan untuk menampilkannilai dari x sebagai fungsi n dengan nilai masukan x0 dan r tertentu.

#include <stdio.h>

#include <math.h>

void main(void)

{

float const a = 2.80;

float const b = 3.10;

float const x0 = 0.312;

float x = x0;

float y = x0;

int i;

for (i = 0; i <= 60; i++) {

printf("%d\t%f\t%f\n",i,x,y);

x = a * x * (1.0-x);

CHAPTER 5. PEMROGRAMAN C 41

y = b * y * (1.0-y);

}

}

Setelah dijalankan maka untuk parameter r = 1.8 dan x0 = 0.312

Setelah dijalankan maka untuk parameter r = 2.8 dan x0 = 0.312

CHAPTER 5. PEMROGRAMAN C 42

Sedangkan untuk parameter untuk parameter r = 3.1 dan x0 = 0.312

CHAPTER 5. PEMROGRAMAN C 43

5.3 Tugas

Ubahlah kode sumber logistic map di atas (jika bisa gunakanlah logika rekur-sif). Dengan kode sumber tersebut, tunjukan grafik xn versus r denganmemvariasi r dari 0 sampai dengan 4 dengan selang 0.01.

CHAPTER 5. PEMROGRAMAN C 44

clue:

Chapter 6

Permasalahan Akar Fungsi

Pada bab 7 ini akan mulai dibahas mengenai suatu metode numerik yangdidasarkan pada matematika diskret dan algoritma dan pemrograman yangtelah dibahas pada bab yang telah lalu. Lebih lanjut akan disajikan pulasuatu permasalahan fisis yang dapat diselesaikan melalui metode numerikyang dimaksud.

Topik yang akan disajikan pada bab ini adalah permasalahan akarfungsi yang merupakan permasalahan yang cukup fundamental dalam matem-atika. Suatu nilai disebut sebagai akar dari sebuah fungsi jika nilai tersebutmenghasilkan luaran 0 (nol) saat dimasukan ke dalam fungsi yang dimaksud.Oleh karenanya permasalahan akar ini seringkali disebut sebagai pencariantitik nol. Untuk suatu fungsi linear maka nilai akar (titik nol) baginya da-pat diperoleh dengan mudah, oleh karenanya dalam bab ini akan dibahasmengenai pencarian akar pada fungsi-fungsi yang tak linear. Banyak contohfungsi yang tak linear dalam metematik diantaranya adalah fungsi polinomdan fungsi-fungsi trigonometrik. Untuk jenis fungsi-fungsi nonlinear terse-but terdapat beberapa metode numerik dapat digunakan untuk memperolehnilai akarnya, berikut adalah beberapa metode yang dimaksud.

45

CHAPTER 6. PERMASALAHAN AKAR FUNGSI 46

6.1 Metode Bisection

Metode bisection merupakan metode paling sederhana bagi penyelesaianakar fungsi tak linear pada suatu interval yang diketahui. Kelebihan darimetode ini adalah bisa digunakan bagi sembarang fungsi termasuk pada su-atu fungsi-fungsi yang tidak bisa diselesaikan secara analitik. Berdasarkannamanya seseungguhnya kita bisa menebak secara intuitif maksud dari metodeini, yaitu jika pada suatu interval tertentu terdapat suatu akar dari fungsimaka interval tersebut dibagi menjadi dua interval baru. Lalu dapat di-pastikan diantara kedua interval yang terbentuk tersebut terdapat satu in-terval yang memuat akar (titik nol) fungsi.

Pertama asumsikan bahwa pada interval x = a dan x = c atau da-pat dituliskan [a, c], terdapat satu buah akar bagi sebuah fungsi sepertiditunjukan gambar di atas (perhatikan panah biru pada gambar). Kemu-dian metode Bisection bekerja berdasarkan fakta bahwa tanda pada dua sisiyaitu kiri dan kanan titik nol adalah berlawanan, yaitu f(a) positif dan f(c)negatif. Maka langkah dalam metode Bisection untuk memdekati nilai akaradalah sebagai berikut:

1. Pertama membagi interval menjadi dua (Bisect) yaitu [a, b] dan [b, c]dimana b = (a+ c)/2.

CHAPTER 6. PERMASALAHAN AKAR FUNGSI 47

2. Mencari interval yang masih mengandung akar fungsi dengan caramelakukan perkalian antara f(a)f(b) dan f(b)f(c). Jika f(a)f(b) ≤ 0maka interval [a, b] mengandung akar fungsi. (lihat gambar)

3. Interval [a, b] dibagi menjadi dua lagi ”di-Bisect” dan prosedur pencar-ian interval yang mengandung akar fungsi dilakukan secara berulang.

4. Pada setiap langkah titik tengah interval akan digunakan sebagai nilaipendekatan bagi akar fungsi yang dimaksud/dicari

Setelah n langkah perulangan maka akan diperoleh

c− a2n

(6.1)

Nilai ini dapat digunakan untuk menentukan batas toleransi bagi programuntuk melakukan iterasi sampai mencapai interval terkecil. Jika diberikantoleransi ε maka berlaku

c− a2n

(6.2)

atau dapat dituliskan sebagai

n ≥ lnc− aε

(6.3)

Sebagai contoh jika interval awal adalah [0, 1] dan ε = 0.0001 makan = 14.

Quiz: Hitunglah akar fungsi berikut dengan menggunakan metode bi-sect pada interval [0, 2] dan toleransi ε = 0, 01

ex − 2 = 0 (6.4)

Berikut ini adalah kode program yang berdasarkan pada metode Bi-section untuk menyelesaikan permasalahan persamaan di atas.

#include <stdio.h>

#include <math.h>

CHAPTER 6. PERMASALAHAN AKAR FUNGSI 48

double func(double x){

return exp(x) -2.0;

}

int main(void){

double leftpt, rightpt, midpt, epsilon = 0.0000001;

double midvalue, rtvalue, root;

printf("\nEnter values for starting left and right points:\n");

scanf("%lf %lf", &leftpt, &rightpt);

printf(" Left and right starting points are: %lf , %lf\n", leftpt,rightpt);

do {

midpt = (leftpt + rightpt)/2;

rtvalue = func(rightpt);

midvalue = func(midpt);

if (rtvalue * midvalue >= 0)

rightpt = midpt; else leftpt = midpt;

} while ((rightpt - leftpt) > epsilon);

root = (rightpt+leftpt)/2;

printf("\nRoot is: %15.10lf\n", root);

return 0;

}

Ubahlah kode sumber di atas untuk mencari akar fungsi polinomialf(x) = x3 − 3x2 − x+ 3.

6.2 Metode Newton

Pada bagian sebelumnya telah dijelaskan mengenai suatu metode yang san-gat sederhana penyelesaian numerik bagi permasalahan pencarian akar su-atu fungsi. Pada bagian ini akan dijelaskan metode yang lain yaitu metodeNewton atau yang dikenal pula dengan metode Newton-Raphson. Kelebi-han dari metode ini adalah dapat digunakan untuk menyeleaikan permasala-han akar kompleks dan bahkan bisa diterapkan pada persamaan-persamaannonlinear secara simultan. Akan tetapi ada satu titik kelemahan dalam

CHAPTER 6. PERMASALAHAN AKAR FUNGSI 49

metode ini yaitu diperlukan suatu titik tebakan awal bagi nilai akar darisuatu fungsi.

Metode Newton dapat diperoleh dari deret Taylor sebagai berikut

f(x) = f(a) + hf ′(a) +h2

2f ′′(a) +

h3

6f ′′′(a) +

h4

24f ′′′′(a)

+h5

5!f ′′′′′(a) + ...+

hm

m!f (m)(a) (6.5)

Dimana h = x−a dan f ′, f ′′, adalah beturut-turut turunan pertama, keduadan seterusnya dari fungsi f . Untuk suatu nilai tebakan x0 dan pendekatandua suku pertama maka berlaku

f(x) = 0 = f(x0) + (x− x0)f ′(x0) + 0(h2) (6.6)

Dimana h = x− x0. Dengan menyelesaikan persamaan di atas maka dapatdiperoleh

0 = f(x0) + (x− x0)f ′(x0) (6.7)

f(x0)

f ′(x0)+ (x− x0) = 0 (6.8)

x = x0 −f(x0)

f ′(x0)(6.9)

Yang kemudian secara suksesif dapat diperoleh kaitan:

xi = xi−1 −f(xi−1)

f ′(xi−1)(6.10)

Dari uraian di atas maka sesungguhnya proses pencarian akar denganmetode Newton ini dapat diilustrasikan sebagai berikut

CHAPTER 6. PERMASALAHAN AKAR FUNGSI 50

Suatu hal yang perlu diingat pada metode ini adalah diperlukan tu-runan bagi suatu fungsi yang ingin diketahui nilai akarnya menggunakanmetode ini. Oleh karenanya tidak sembarang fungsi dapat diselesaikan,melainkan hanya fungsi yang mempunyai turunan yang kontinyu.

Quiz: Dengan menggunakan metode Newton carilah hasil akar pangkattiga berikut x = 3

√a untuk nilai a = 155.

Contoh lain program pencarian titik nol dengan metode Newton–Raphson

#include <stdio.h>

#include <math.h>

float fung(float x);

float dfung(float x);

int main(int argc, char * argv[])

{

float x0, x1, delta, tol;

int i, imak;

imak = 20;

tol= 1.0e-4;

CHAPTER 6. PERMASALAHAN AKAR FUNGSI 51

printf("Berikan masukan nilai x0 = ");

scanf("%f", &x0);

printf("\n");

i = 0;

do

{

i = i + 1;

x1 = x0 - fung(x0)/dfung(x0);

delta = x1 - x0;

if (delta < 0)

delta = -delta;

printf("Hasil iterasi ke-%d adalah %f\n", i, x1);

x0 = x1;

} while ((delta > tol) && (i < imak));

printf("\nNilai akar = %f\n", x1);

}

float fung(float x)

{

return x*x*x-155;

}

float dfung(float x)

{

return 3*x*x;

}

Berikut hasil luaran setelah program dijalankan

Berikan masukan nilai x0 = 4

CHAPTER 6. PERMASALAHAN AKAR FUNGSI 52

Hasil iterasi ke-1 adalah 5.895833

Hasil iterasi ke-2 adalah 5.416902

Hasil iterasi ke-3 adalah 5.372062

Hasil iterasi ke-4 adalah 5.371686

Hasil iterasi ke-5 adalah 5.371686

Nilai akar = 5.371686

Perlu diketahui bahwa nilai tersebut merupakan nilai eksak bagi fungsitersebut.

6.2.1 PR

Berikut disajikan permasalahan fisika terkait masalah Gravitasi:

Dua buah benda bermasa m1 = 103kg dan m2 = 3× 105kg mempun-yai jarak 10 km. Di antara keduanya diletakan benda lain dengan massam3 = 10kg. Dengan menggunakan metode Bisection dan Newton tentukanposisi benda ketiga agar terjadi kesetimbangan gaya gravitasi padanya. Gu-nakanlah kode program yang telah ada pada catatan kuliah ini.

6.2.2 Metode Newton Orde Dua (Pengayaan)

Setelah memahami metode Newton–Raphson di atas ikutilah peunjuk dibawahini untuk bisa memahami metode yang sama pada orde yang lebih tinggiyitu orde dua

1. Ubah program kode jika sistem yang ditinjau empat muatan listrikyang sejajar

2. Bagaimana jika dicoba suatu nilai tebakan posisi tidak diantara ke-dua/empat muatan

3. Bagaimana pula jika nilai tebakan sangat dekat pada satu titik mu-atan?

CHAPTER 6. PERMASALAHAN AKAR FUNGSI 53

4. Ubah kode program menggunakan metode Newton Raphson orde duasebagai berikut:

Xi+1 = Xi −f(Xi)

f ′(Xi)− f(Xi)f ′′(Xi)2f ′(Xi)

(6.11)

bandingkan hasil ini dengan metode Newton Raphson orde 1.

5. Apa yang dapat anda simpulkan dari hasil case 1 s/d 4?

Chapter 7

Masalah Integrasi Numerik

Dalam dunia sains dan teknik sudah sangat dikenal bahwa bentuk modelbagi sistem fisis sering kali dapat berupa persamaan integral. Untuk beber-apa kasus, permasalahan integral ini tidak bisa diselesaikan secara analitik.Pada keadaan demikian diperlukan suatu pendekatan numerik. Selain ituuntuk kasus yang bisa diselesaikan secara analitik, melalui penyelesaian nu-merik seringkali dapat dihasilkan perhitungan operasi integral dengan cepatdan dengan akurasi yang dapat diterima. Karenanya perhitungan Integralbisa dikatakan sebagai permasalahan umum yang elementer dalam kom-putasi numerik. Seiring dengan itu terdapat banyak pendekatan numerikyang bisa dilakukan untuk menyelesaikan permasalahan integral.

Dalam bab ini akan dibahas metode numerik untuk menyelesaikan per-masalahan integral, khususnya integral tunggal

I =

∫ b

a

f(x)dx (7.1)

7.1 Metode Trapesium

Ketika sebuah fungsi kontinyu f(x) akan diintegralkan secara numerik, makasesungguhnya fungsi tersebut akan didiskritisasi menjadi banyak bagian.Setiap bagian itu akan di integrasikan secara independen sebelum kemu-dian dilakukan penjumlahan terhadap hasil integrasi seluruh bagian. Proses

54

CHAPTER 7. MASALAH INTEGRASI NUMERIK 55

tersebut ditunjukan pada gambar berikut

Gambar di atas secara instruktif menunjukan bahwa setiap bagiandiskret di bawah fungsi f(x) merupakan suatu trapesium. Dari fakta inidibuatlah suatu metode integrasi yang paling sederhana bagi permasalahanintegral yaitu metode trapesium.

Pada metode trapesium, proses integrasi dilakukan dengan cara menghi-tung luas setiap trapesium kemudian seluruh luasan trapesium dijumlahkanuntuk menghasilkan nilai integrasi fungsi yang diinginkan.

Secara matematis dapat dijelaskan sebagai berikut. Luasan sebuahtrapesium sebut saja trapesium pertama yaitu wilayah I1 (lihat gambar)akan dihitung dengan persamaan berikut

I1 =h

2(f0 + f1). (7.2)

Dengan h = x1 − x0 dan f0 = f(x0) dan f1 = f(x1). Secara umum untuksejumlah n cacah trapesium maka dapat dapat dituliskan

h =xn − x0

n(7.3)

Luasan setiap trapesium dapat dihitung menggunakan rumus umum

CHAPTER 7. MASALAH INTEGRASI NUMERIK 56

sebagai berikut

Ii =h

2(fi−1 + fi). (7.4)

Maka seluruh luasan dibawah fungsi f(x) adalah jumlahan I untuk seluruhnilai i. Dan dapat dirumuskan sebagai∑

i

Ii =∑i

h

2(fi−1 + fi). (7.5)

Jika bentuk di atas diuraikan maka akan diperoleh bentuk eksplisit sebagaiberikut∫ xn

x0

f(x) ∝ h

2(f0 + f1) +

h

2(f1 + f2) + ...+

h

2(fN−1 + fN)

= h(f02

+ f1 + ...+ fN−1 +fN2

) (7.6)

Mewujudkan proses integrasi di atas kedalam bahasa pemrograman (coding)tidaklah terlalu rumit. Ini dikarenakan kita telah melalui beberapa contohcoding yang telah melibatkan definsi fungsi. Dari persamaan terakhir da-pat dilihat bahwa yang perlu dilakukan dalam program adalah menentukancacah trapesium yang berarti cacah diskretisasi fungsi. Selain itu adalahnilai fungsi pada setiap batas kiri dan kanan dari setiap trapesium.

Berikut adalah contoh program untuk menyelesaikan integrasi fungsi

f(x) =2

2 + x2(7.7)

#include<stdio.h>

float y(float x){

return 2/(2+x*x);

}

int main(){

float x0,xn,h,s;

int i,n;

printf("Enter x0, xn, no. of subintervals: ");

CHAPTER 7. MASALAH INTEGRASI NUMERIK 57

scanf("%f%f%d",&x0,&xn,&n);

h = (xn-x0)/n;

s = y(x0) + y(xn);

for(i = 1; i < n; i++){

s += 2*y(x0+i*h);

}

printf("Value of integral is %6.4f\n",(h/2)*s);

return 0;

}

Tugas: Ubahlah kode sumber permasalahan kode sumber untuk menye-lesaikan integral di atas untuk fungsi sinusoidal f(x) = sin(x) dengan batasintegral 0 sampai dengan π. Jelaskan kendala yang anda hadapi dan band-ingkan hasil perhitungan numerik yang anda peroleh dengan hasil perhitun-gan analitik.

7.2 Metode Simpson

Dari bentuk persamaan (7.6), dapat dikembangkan suatu pendekatan nu-merik yang lebih teliti. Berikut akan diilustrasikan secara lebih grafis.

Tijau sebuah fungsi parabolik y = ax2+bx+c pada posisi (−h, y0), (0, y1)-(−h, y2) seperti ditunjukan gambar berikut

CHAPTER 7. MASALAH INTEGRASI NUMERIK 58

Dan mengingat bentuk integral dari fungsi tersebut adalah

I =

∫ h

−h(ax2 + bx+ c)dx (7.8)

= (ax3

3+bx2

2+ cx)|h−h

=2ah3

3+ 2ch

=h

3(2ah2 + 6c)

Dengan mengingat bahwa

y0 = ah2 − bh+ c (7.9)

y1 = c (7.10)

y0 = ah2 + bh+ c (7.11)

dapat dibuktikan bahwa

y0 + 4y1 + y0 = (ah2 − bh+ c) + 4c+ ah2 + bh+ c (7.12)

= 2ah2 + 6c, (7.13)

sehingga diperoleh kaitan

I =h

3(y0 + 4y1 + y0) (7.14)

Untuk kasus sembarang fungsi yang dintegralkan pada interval [a, b]berikut ∫ b

a

f(x)dx (7.15)

Dapat diilustrasikan sebagai berikut

CHAPTER 7. MASALAH INTEGRASI NUMERIK 59

Dan akan diperoleh bentuk integral∫ b

a

f(x)dx =h

3(y0 + 4y1 + y2) +

h

3(y2 + 4y3 + y4) + ...+

h

2(yn−2 + 4yn−1 + yn)

(7.16)

Setelah diurutkan berdasarkan suku masing-masing dapat diperoleh∫ b

a

f(x)dx =h

3(y0 + 4y1 + 2y2 + 4y3 + 2y4 + ...+ 4yn−1 + yn)

(7.17)

Bentuk ungkapan matematis di atas disebut sebagai bentuk pendekatannumerik metode Simpson. Untuk n cacah diskretisasi yang genap makaungkapan di atas bisa diubah kedalam bentuk jumlahan dapat diberikansebagai berikut

∫ b

a

f(x)dx =h

3

y0 + 2

n/2−1∑j=1

y2j + 4

n/2∑j=1

y2j−1 + yn

(7.18)

Adapun kode program yang menggunakan metode ini dapat dilihat sebagaiberikut:

Contoh program integrasi numerik metode Simpson untuk fungsi

f(x) =2

2 + x2(7.19)

CHAPTER 7. MASALAH INTEGRASI NUMERIK 60

#include<stdio.h>

float y(float x){

return 2/(2+x*x);

}

int main(){

float x0,xn,h,s;

int i,n;

printf("Enter x0, xn, no. of subintervals: ");

scanf("%f%f%d",&x0,&xn,&n);

h = (xn - x0)/n;

s = y(x0)+y(xn)+4*y(x0+h);

for(i = 3; i<=n-1; i+=2){

s += 4*y(x0+i*h) + 2*y(x0+(i-1)*h);

}

printf("Value of integral is %6.4f\n",(h/3)*s);

return 0;

}

Soal Tugas:

1. Ubah program kode untuk fungsi f(x) = 1/x dengan batas integral−1 sampai 1.

2. Ubah program kode untuk fungsi f(x) = sin(x) dengan batas integral0 sampai dengan π.

3. Apa yang dapat kelompok anda simpulkan?

Chapter 8

Interpolasi dan Pendekatan

Pada dua bab sebelumnya telah ditunjukan suatu metode pendekatan yangdapat digunakan ntuk menyelesaikan permasalahan pencarian nilai akar dannilai integrasi fungsi secara numerik. Pada bagian ini akan akan dijelaskanbeberapa metode pendekatan untuk suatu fungsi dan/atau turunannya.Dengan interpolasi, pendekatan polinomial terhadap suatu fungsi dapat di-lakukan dengan cara mendekatinya pada beberapa titik nilai. Beberapatitik nilai ini bisa jadi merupakan suatu hasil pengukuran dalam sebuahpercobaan atau bahkan hasil sebuah interasi numerik yang keduanya tidakdapat dengan mudah untuk di plot menggunakan fungsi-fungsi yang seder-hana. Dua jenis metode interpolasi yang umum digunakan, yaitu InterpolasiLagrange dan Hermite akan dibahas secara lebih detail pada bab ini.

8.1 Interpolasi Lagrange

Pada Bab sebelumnya telah ditunjukan bahwa untuk suatu fungsi sem-barang maka dapat dilakukan suatu pendekatan yang disebut dengan pen-dekatan deret Taylor. Dalam deret Taylor, ungkapan matematis dan tu-runan nya perlu diketahui sebelum dilakukan pendekatan. Hal ini tentumerupakan suatu kondisi yang belum tentu bisa dipenuhi dalam setiap ka-sus. Oleh karenanya perlu dikembangkan suatu metode pendekatan yangbisa digunakan untuk menyelesaikan permasalahan dimana fungsi dan ben-

61

CHAPTER 8. INTERPOLASI DAN PENDEKATAN 62

tuk turunan dari fungsi yang ingin didekati tidak diketahui ungkapan matem-atisnya. Yang perlu diketahui adalah beberapa nilai fungsi pada beberapatitik uji saja.

Salah satu metode yang bisa digunakan pada kondisi tersebut adalahmetode Interpolasi Lagrange. Untuk memformulasikan interpolasi Lagrangetinjau suatu fungsi sembarang pada dua buah titik x1 dan x2, dan melaluideret Taylor pada sekitar x dapat diperoleh bentuk

f(x1) = f(x) + (x1 − x)f ′(x) + ...

f(x2) = f(x) + (x2 − x)f ′(x) + ... (8.1)

Selanjutnya, dilakukan suatu pendekatan suatu fungsi p(x) (yang dike-tahui turunannya) terhadap f(x) pada deret Taylor di atas sehingga diper-oleh bentuk

f(x1) = p(x) + (x1 − x)p′(x) + ...

f(x2) = p(x) + (x2 − x)p′(x) + ... (8.2)

Syarat utama yang perlu diperhatikan bagi p(x) adalah mempunyai nilaiyang sama dengan f(x) pada beberapa titik uji termasuk x1 dan x2. Den-gan syarat ini setidaknya diperoleh suatu kondisi awal yang menunjukanbahwa p(x) adalah suatu fungsi pendekatan yang masuk akal setidaknyapada beberapa titik uji tersebut.

Persamaan (8.2) menunjukan dua buah persamaan dengan dua buahvariabel yang tidak diketahui yaitu p(x) dan p′(x). Dengan penyelesaianuntuk p(x) sebagai berikut

p(x) =x− x2x1 − x2

f(x1) +x− x1x2 − x1

f(x2), (8.3)

yang merupakan fungsi linear terhadap x. Persamaan (8.3) di atas meru-pakan fungsi linear yang menghubungkan dua buah titik yaitu (x1, f(x1))dan (x2, f(x2)).

Pendekatan pada suku yang lebih tinggi pada bentuk deret Taylor tentusaja dapat dilakukan dengan syarat bahwa titik ketiga sebagai titik uji dike-tahui. Dengan pendekatan suku ketiga pada deret Taylor akan dapat diper-

CHAPTER 8. INTERPOLASI DAN PENDEKATAN 63

oleh

f(x1) = f(x) + (x1 − x)f ′(x) +(x1 − x)1

2f ′′(x) + ...

f(x2) = f(x) + (x2 − x)f ′(x) +(x1 − x)2

2f ′′(x) + ...

f(x3) = f(x) + (x3 − x)f ′(x) +(x3 − x)3

2f ′′(x) + .... (8.4)

Dengan penyelesaian p(x)

p(x) =(x− x2)(x− x3)

(x1 − x2)(x1 − x3)f(x1) +

(x− x1)(x− x3)(x2 − x1)(x2 − x3)

f(x2)

+(x− x1)(x− x2)

(x3 − x1)(x3 − x2)f(x3) (8.5)

Sekali lagi syarat yang harus dipenuhi oleh p(x) adalah setidaknya mempun-yai nilai yang sama pada tiga buah titik uji x1, x2 dan x3. Pendekatan yangpaling sederhana untuk fungsi yang melalui tiga buah titik adalah suatufungsi parabolik p(x) = ax2 + bx + c. Dengan merubah nilai-nilai a, b danc maka akan dapat diperoleh suatu parabola yang melalui tiga buah titik.Perlu diingat bahwa hanya tedapat satu buah parabola yang bisa memenuhitiga buah titik sekaligus, maka bentuk pendekatan parabolik ini merupakansuatu pendekatan yang relatif cukup ideal. Bentuk ungkapan terakhir inisesungguhnya telah digunakan pada Bab sebelumnya yaitu pendekatan nu-merik pada proses integrasi. Khususnya pada metode Simpson di mana un-tuk sembarang fungsi dilakukan diskretisasi dan setiap tiga buah titik di-lakukan pendekatan dengan menggunakan suatu fungsi parabolik.(Lihat subbab 7.2).

Dari persamaan (8.3) dan (8.4) dapat diformulasikan suatu bentukumum interpolasi polinomial berorde (n− 1) sebagai berikut

p(x) =n∑

j=1

lj,n(x)f(xj), (8.6)

Dimana fungsi f(xj) telah diketahui pada sejumlah titik n pada xj dan

lj,n(x) =(x− x1)(x− x2)...(x− xj−1)(x− xj+1)...(x− xn)

(xj − x1)(xj − x2)...(xj − xj−1)(xj − xj+1)...(xj − xn). (8.7)

CHAPTER 8. INTERPOLASI DAN PENDEKATAN 64

Dengan bentuk umum ini, dapat dipilih pendekatan untuk sembarang fungsidengan polinomial yang diperkirakan sesuai atau mendekati fungsi tersebut.

8.2 Interpolasi Hermite

Tinjau sebuah sembarang fungsi f(x) yang diketahui turunannya. Kemu-dian fungsi tersebut didekati dengan sebuah fungsi polinom sebagai berikut

p(x) = ax3 + bx2 + cx+ d. (8.8)

Kemudian konstanta-konstanta a, b, c dan d di peroleh dengan menggunakansyarat

p(x1) = f(x1), p(x2) = f(x2)

p′(x1) = f ′(x1), p′(x2) = f ′(x2), (8.9)

pendekatan ini tidak lain adalah metode interpolasi terhadap suatu fungsiyang kontinyu dan mempunyai derifatif yang kontinyu. Dengan perhitunganmatematik dapat diperoleh

p(x) =(1− 2(x− x1))(x− x2)2

(x1 − x2)2f(x1) +

(1− 2(x− x2))(x− x1)2

(x2 − x1)2f(x2)

+((x− x1))(x− x2)2

(x1 − x2)2f ′(x1) +

((x− x2))(x− x1)2

(x2 − x1)2f ′(x2) (8.10)

Selanjutnya pendekatan ini disebut sebagai Interpolasi Hermite menggu-nakan fungsi kubik (pangkat tiga). Tentu saja berbagai fungsi yang laindapat digunakan untuk melakukan pendekatan tergantung pada sejumlahinformasi yang diketahui tentang fungsi yang akan dicari pendekatannya.Misalnya diketahui nilai fungsi pada sejumlah n titik dan nilai turunannyadisejumlah r titik, maka dapat digunakan polinomial berorde n+r−1 yangmemenuhi sejumlah n + r syarat, untuk mendekati fungsi tersebut. Secaraumum bentuk interpolasi Hermite dapat dituliskan sebagai

p(x) =n∑

j=1

hj,n(x)f(xj) +n∑

j=1

h̄j,n(x)f ′(xj), (8.11)

CHAPTER 8. INTERPOLASI DAN PENDEKATAN 65

dimana h dan h̄ memenuhi

hj,n(x) = [1− 2(x− xj)l′j,n(xj)]l2j,n(x) (8.12)

dan

h̄j,n(x) = (x− xj)l2j,n(x). (8.13)

Dimana lj,n(x) didefinisikan melalui proses interpolasi Lagrange sesuai den-gan persamaan (8.7).

8.3 Pendekatan Pada Turunan (diferensial)

Terdapat banyak cara yang dapat digunakan untuk melakukan turunan se-cara numerik. Salah satu cara yang paling sederhana adalah dimulai daridefinisi turunan dalam kalkulus

f ′(x) =df(x)

dx= lim

h→0

f(x+ h)− f(x)

h. (8.14)

Ungkapan di atas menghasilkan suatu pendekatan

f ′h(x) =f(x+ h)− f(x)

h, (8.15)

yang mana f ′h(x) merupakan pendekatan bagi f ′(x) pada nilai h→ 0. Per-tanyaan yang muncul dengan pendekatan ini adalah bagaimana jika nilaih tidak mendekati 0. Pada situasi ini maka dapat dilakukan pendekatandengan menggunakan deret Taylor terhadap f(x+ h) disekitar titik f(x).

f(x+ h) = f(x) + hf ′(x) +h2

2f ′′(x) + ... (8.16)

dan untuk f ′(x)

f ′(x) =1

h[f(x+ h)− f(x)− h2

2f ′′(x) + ...] (8.17)

CHAPTER 8. INTERPOLASI DAN PENDEKATAN 66

Persamaan terakhir (8.17) merupakan ungkapan turunan yang diperolehdari deret Taylor dengan suku terakhir memberikan akurasi lebih diband-ingkan dengan persamaan (8.18). Untuk itu perlu dituliskan

f ′(x) =f(x+ h)− f(x)

h+O(h), (8.18)

dengan O(h) menunjukan orde terakhir pendekatan yang dilakukan.

Lebih lanjut persamaan (8.18) disebut sebagai pendekatan ForwardDifference terhadap turunan. Dengan cara yang sama, yaitu menggunakanderet Taylor terhadap f(x− h) maka akan diperoleh ungkapan

f ′(x) =1

h[f(x)− f(x− h)− h2

2f ′′(x) + ...]. (8.19)

Persamaan (8.19) tersebut menghasilkan pendekatan turunan yang dise-but Backward Difference. Dan untuk mengindikasikan orde tertinggi padaproses pendekatan perlu dituliskan sebagai berikut

f ′(x) =f(x)− f(x− h)

h+O(h). (8.20)

Perbedaan nilai O(h) pada persamaan (8.18) dan persamaan (8.20) adalahpada perbedaan tanda (plus atau minus). Nilai dari keduanya bersifatsimetris (sama). Karenanya semestinya dapat dihasilkan suatu pendekatanyang lebih akaurat dari siafat tersebut. Untuk itu, tinjau deret Taylor suatufungsi dengan memperhatikan suku-suku berode tinggi sebagai berikut

f(x+ h) = f(x) + hf ′(x) +h2

2f ′′(x) +

h3

6f ′′′(x)

+h4

24f ′′′′(a) + ..., (8.21)

dan

f(x− h) = f(x) + hf ′(x)− h2

2f ′′(x)− h3

6f ′′′(x)

+h4

24f ′′′′(a) + .... (8.22)

CHAPTER 8. INTERPOLASI DAN PENDEKATAN 67

Dari kedua unkapan di atas dapat diperoleh ungkapan f ′(x) dengan caramengurangkan kedua persamaan di atas sehingga diperoleh

f ′(x) =f(x+ h)− f(x− h)

2h+O(h2). (8.23)

Dengan bentuk ini dapat diperoleh pendekatan yang lebih akurat terhadapturunan suatu fungsi.