Top Banner
Modul Dasar dasar C Tujuan Praktikum : a. Mahasiswa dapat mengenal bahasa pemrograman C++. b. Mahasiswa dapat membuat source code, Struktur Program di C++ dan fungsi dari bahasa C++. c. Mahasiswa dapat mengkompile source code dan memanggil program. d. Mahasiswa dapat mengetahui input dan output dan menganalisa dari sebuah program. Dasar Toeri 1. Membuat Source Code Source code merupakan nama lain dari listing program dari suatu program yang akan dikompile. Source code ditulis dengan menggunakan text editor atau aplikasi pengolah kata lainnya yang disediakan oleh sistem operasi. Misal di sistem operasi linux menggunakan text editor vi atau emacs sedangkan di Microsoft menggunakan notepad. Source code yang dituliskan dengan text editor tesebut harus disimpan dengan nama yang berekstension *.cpp atau *.c. Karena source code ditulis dalam bahasa pemrograman C/ C++ yang Modul Praktikum Komputasi Numerik, Teknik Informatika, STTA Yogyakarta 1 I
39

Modul Komputasi Numerik

Dec 08, 2015

Download

Documents

Ferry Mulyawan

kubis
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Modul Komputasi Numerik

Modul Dasar dasar C

Tujuan Praktikum :

a. Mahasiswa dapat mengenal bahasa pemrograman C++.

b. Mahasiswa dapat membuat source code, Struktur Program di C++ dan fungsi

dari bahasa C++.

c. Mahasiswa dapat mengkompile source code dan memanggil program.

d. Mahasiswa dapat mengetahui input dan output dan menganalisa dari sebuah

program.

Dasar Toeri

1. Membuat Source Code

Source code merupakan nama lain dari listing program dari suatu program yang

akan dikompile. Source code ditulis dengan menggunakan text editor atau aplikasi

pengolah kata lainnya yang disediakan oleh sistem operasi. Misal di sistem operasi

linux menggunakan text editor vi atau emacs sedangkan di Microsoft menggunakan

notepad. Source code yang dituliskan dengan text editor tesebut harus disimpan dengan

nama yang berekstension *.cpp atau *.c. Karena source code ditulis dalam bahasa

pemrograman C/ C++ yang akan kita gunakan dalam praktikum Algoritma dan

Pemrograman.

2. Mengkompilasi Source Code

Source code bukanlah suatu program, tetapi dari source code ini dapat dihasilkan

suatu program. Program merupakan file yang berextensi exe. Linux menyediakan

perangkat lunak yang dapat digunakan untuk mengubah suatu source code menjadi

program, perangkat lunak ini sering diberi nama sebagai compiler, dan compiler yang

ada di Linux salah satunya adalah gcc stau g++.

Modul Praktikum Komputasi Numerik, Teknik Informatika, STTA Yogyakarta 1

I

Page 2: Modul Komputasi Numerik

Cara memanggilnya :

g++ nama_source_code.cpp –o nama_program

Parameter –o harus dituliskan, sebab kalau tidak, akan membuat hasil compiler berupa

file program bernama a.out.

3. Memanggil Program

Dari hasil compile akan diperoleh suatu file bernama program yang mempunyai

extensi *.exe. Program ini dapat dijalankan secara langsung dengan cara menuliskan

nama programnya.

Contoh : /pertama menjalankan program bernama pertama.

4. Struktur Program di C++

Dalam bahasa pemrograman C++ strukturnya adalah sebagai berikut:

a. Header. Ex: #include<iostream.h>

b. Main adalah isi dari program diawali {……. dan diakhiri dengan ……..}

Contoh:

1. #include <iostream.h> #include<math.h>2. #define square (x) ((x)*(x))3. float masukandata(void);4. float luasp(float sisi)5.6. void tampil(float luasnya);7. int main()8. {9. float sisi;10. float luas;11. sisi = masukandata();12. luas = luasp(sisi);13. tampil(luas);14. }15.16. float masukandata(void)

Modul Praktikum Komputasi Numerik, Teknik Informatika, STTA Yogyakarta 2

Page 3: Modul Komputasi Numerik

17. {18. float input;19. cout <<”Masukkan sisi bujursangkar = “ ;20. cin >> input;21. return (input);22. }23.24. float luasp(float sisi)25. {26. float luas;27. luas = square(sisi);28. return(luas);29. }30. void tampil (float luas)31. {32. cout << “\n\nluas Bujursangkarnya adalah = “ << luas

<< “persegi”;33. }

5. Fungsi

Fungsi dalam suatu program sangat berguna untuk membuat source code dari

program tersebut menjadi ringkas dan padat. Suatu fungsi dalam source code akan

dipanggil dan dikerjakan sesuai dengan urut-urutan source code-nya. Fungsi harus

mengembalikan suatu nilai, baik isi maupun kosong, yang disebut void.

Latihan:

1. #include <iostream.h>2. int tambah (int x, int y)3. {4. cout <<”Berada di dalam fungsi tambah ( )\n”;5. cout << “Angka I = “;6. cin >> a;7. cout << “Angka II = “;8. cin >> b;9. cout << “\nPanggil fungsi tambah ( ) …..\n “;10. c = tambah(a,b);11. cout << “\n Kembali ke fungsi main ( )\n “;12. cout << “Hasil penjumlahan “ << a << “dan “ << b <<

“adalah “ << c << “\n”;13. cout << “ \nSelesai…\n”;14. return 0;15. }

Modul Praktikum Komputasi Numerik, Teknik Informatika, STTA Yogyakarta 3

Page 4: Modul Komputasi Numerik

6. Input dan Output

Program komputer berfungsi mengolah dan memroses suatu data yang diinputkan

menjadi informasi yang dioutputkan menjadi informasi yang dioutputkan. Statemen

input dalam c++, cin dengan cara penulisannya :

cin >> a;

statemen output dalam c++, cout dengan cara penulisan

cout << “-----------------------“;

7. Analisa Program

Menganalisa bagian perbagian dan menjelaskan dari kegunaan masing-masing bagian

program

Contoh:

#include <iostream.h> // mencari (#) preprosesor (include) file

iostream.h dalam (< >) yang digunakan

untuk input dan output.

int main () // menjalankan fungsi main yang dipanggil

secara otomatis leh sistem operasi yang akan

mengembalikan nilai integer.

1. {2. int nomer;3. cout << “Masukkan suatu angka “;4. cin >> nomer;5. cout << “Angkanya adalah “ << number;6. return 0;7. }

Modul Praktikum Komputasi Numerik, Teknik Informatika, STTA Yogyakarta 4

Page 5: Modul Komputasi Numerik

Tugas

1. Buatlah source code dari program yang memiliki algoritma sebagai berikut :

a. Masukkan suatu kalimat = “Hallo, ini program pertamaku”

b. Tulis/ tampilkan kalimat yang pernah dimasukkan

2. Analisa program tersebut.

Modul Praktikum Komputasi Numerik, Teknik Informatika, STTA Yogyakarta 5

Page 6: Modul Komputasi Numerik

Modul Bilangan Random

Tujuan praktikum:

Memahami pseudo-random pada komputer dan cara membangkitkannya.

Mengetahui batasan-batasan pseudo-random untuk tipe integer.

Mengetahui cara memanipulasi untuk membangkitkan bilangan random tipe

float menggunakan ‘benih’ yang dibangkitkan dengan fungsi timer().

Mengetahui cara membangkitkan bilangan random menggunakan fungsi

standard rand() dan srand() pada C.

Dasar teori:

Bahasa pemrograman C menyediakan fungsi librari rand() untuk

membangkitkan bilangan random tipe integer antara 0 sampai dengan RAND_MAX,

yang adalah harga maksimum yang bergantung pada sistem komputer yang digunakan.

Pada modul 1 kita akan mencoba menggunakan fungsi rand() dan memodifikasi output

yang dihasilkan.

Bilangan random yang dihasilkan oleh komputer adalah pseudo-random

(buatan), yang bukan benar-benar bilangan random seperti ‘melempar uang logam’

dalam ilmu statistik. Output dari fungsi rand() menghasilkan bilangan random yang

cukup valid namun pada implementasinya akan bergantung pada librari dari sistem

komputer yang digunakan. Pada kuliah Metode Numerik akan dipelajari pentingnya

pentingnya ke-random-an dari pseudo-random komputer dan aplikasinya pada bidang

ilmu pengetahuan.

Fungsi yang lain adalah srand(), yang berfungsi untuk inisialisasi ‘benih’ untuk

pseudo-random dengan rand(). Dengan benih pseudo-random yang berbeda akan

dihasilkan urutan bilangan random yang berbeda pula.

Batan atas urutan bilangan random RAND_MAX adalah system-dependend

yang didefinisikan pada stdlib.h, dan untuk mengetahui harga batas atas bilangan

integer bilangan random yang dihasilkan tersebut dapat digunakan dengan program

singkat sebagai berikut:

Modul Praktikum Komputasi Numerik, Teknik Informatika, STTA Yogyakarta 6

II

Page 7: Modul Komputasi Numerik

1. #include <stdio.h>2. #include <stdlib.h>3. int main()4. {5. printf("%d\n", RAND_MAX);6. return 0;7. }

(Buatlah program di atas pada komputer, lalu compile dan jalankan)

Fungsi rand() mengembalikan harga-harga random tipe integer antara 0 –

RAND_MAX. Program di bawah ini adalah cara menggunakan fungsi rand().

1. #include <stdio.h>2. #include <stdlib.h>3. int main()4. {5. int i;6. for(i=0; i<5; i++)7. {8. printf("%d\n",rand());9. }10. return 0;11. }

(Buatlah program di atas pada komputer, lalu compile dan jalankan berulang-ulang dan

catat hasil outputnya).

Output program di atas adalah urutan bilangan random dengan harga yang selalu

sama. Hal itu disebabkan inisialisasi benih adalah identik setiap waktu. Untuk

mendapatkan urutan harga random yang berbeda pada setiap program tersebut

dijalankan anda dapat menggunakan fungsi time() untuk membangkitkan benih dengan

fungsi srand(). Fungsi srand() menggunakan unsigned int sebagai argument dan me-set

benih random yang akan dipakai untuk membangkitkan bilangan random dengan rand().

Pada banyak aplikasi, penggunaan fungsi time() untuk membangkitkan benih adalah

cara yang baik dan valid. Modifikasi program anda sehingga menjadi program di bawah

ini:

1. #include <stdio.h>2. #include <stdlib.h>3. #include <time.h>4. int main()

Modul Praktikum Komputasi Numerik, Teknik Informatika, STTA Yogyakarta 7

Page 8: Modul Komputasi Numerik

5. {6. int i;7. /* set benih untuk rand() */8. srand((unsigned)time(NULL));9. for(i=0; i<5; i++) {10. printf("%d\n", rand());11. }12. return 0;13. }

Untuk membangkitkan bilangan random pada range tertentu dapat dilakukan

dengan cara me-map bilangan integer yang dikembalikan oleh fungsi rand(). Dua

program berikut membangkitkan bilangan random tipe float.

1. #include <stdio.h>2. #include <stdlib.h>3. #include <time.h>4. int main()5. {6. float x;7. int i;8. /* set benih untuk rand() */9. srand((unsigned)time(NULL));10. for(i=0; i<5; i++) {11. x = (float) rand()/(RAND_MAX);12. printf("%f\n", x);13. }14. return 0;15. }

(Buatlah kedua program tersebut, lalu compile dan jalankan. Perhatikan dan catat output

dari masing-masing program).

Tugas:

Buatlah program dengan fungsi rand() untuk membangkitkan bilangan random antara 0

dan 99. Kemudian modifikasi program anda agar keluar dari loop pada saat bilangan

random yang dibangkitkan melampui angka 88.

Modul Praktikum Komputasi Numerik, Teknik Informatika, STTA Yogyakarta 8

Page 9: Modul Komputasi Numerik

Modul Operasi Matrix

Tujuan praktikum:

Mengetahui cara inisialisasi dan memanipulasi data elemen dari sebuah matrix

Dapat melakukan operasi matrix, penambahan, pengurangan, perkalian, inverse

dll. dengan program komputer

Dapat menggunakan array 2D pada C untuk melakukan operasi matrix

Dasar teori:

Sebuah matrix terdiri dari array segiempat dari elemen-elemen yang ditandai dengan simbul [A]. Individual elemen-elemen dari sebuah matrix [A] dinotasikan dengan . Set dari elemen-elemen horizontal disebut baris dan set dari elemen-elemen vertikal disebut kolom. Dengan demikian sebuah program matrix dapat diimplementasikan menggunakan array 2D.

Contoh:int a[2][3];

a[0][0] a[0][1] a[0][2]a[1][0] a[1][1] a[1][2]

Array 2D adalah array dari arrays, sehingga deklarasi di atas adalah array dari dua array integer. Matrix di atas mempunyai jumlah baris 2 dan jumlah kolom 3. Berikut adalah contoh program untuk mengisi data elemen-elemen 1 s/d 6 dan me-print elemen-elemen dalam baris dan kolomnya.

1. #include<iostream.h>2. #include<conio.h>3. void main(){4. clrscr();5. int a[3][3];6. int b[3][3];7. int c[3][3];8. int i,j;9. for (i=1;i<3;i++) {10. for (j=1;j<3;j++) {11. cout << "Masukkan elemen matrik A " << i << "," << j

<< " : ";12. cin >> a[i][j];13. }14. }

Modul Praktikum Komputasi Numerik, Teknik Informatika, STTA Yogyakarta 9

III

Page 10: Modul Komputasi Numerik

15. cout << "Matrik A : " <<endl;16. for (i=1;i<3;i++) {17. for (j=1;j<3;j++) {18. cout << a[i][j] << " ";19. }20. cout << endl;21. }22. }

Penambahan atau pengurangan dua buah matrix [A] dan [B] dapat dilakukan dengan cara menambahkan atau mengurangkan masing elemen yang bersesuaian dari tiap-tiap matrix [A] dan [B] tersebut.

[C] = [A] + [B][C] = [A] – [B]

Program penambahan dua buah matrix 2 x 2. Pada program penambahan matrix di

bawah terdapat dua buah function mat_read (int mat[2][2]) dan function mat_print (int

mat[2][2]) belum dibuat. Buatlah sendiri kedua function tersebut dengan mengacu

potongan program di atas dan kemudian selesaikan program penambahan dua buah

matrix di bawah.

Program untuk menambah dua matrix 2 x 2:

1. #include<iostream.h>2. #include<conio.h>3.4. void main(){5. clrscr();6. int a[3][3];7. int b[3][3];8. int c[3][3];9. int i,j;10.11. for (i=1;i<3;i++) {12. for (j=1;j<3;j++) {13.14. cout << "Masukkan elemen matrik A " << i << "," << j

<< " : ";15. cin >> a[i][j];16. }17. }18.19. cout << "Matrik A : " <<endl;20. for (i=1;i<3;i++) {21. for (j=1;j<3;j++) {

Modul Praktikum Komputasi Numerik, Teknik Informatika, STTA Yogyakarta 10

Page 11: Modul Komputasi Numerik

22.23. cout << a[i][j] << " ";24.25. }26. cout << endl;27. }28.29. for (i=1;i<3;i++) {30. for (j=1;j<3;j++) {31.32. cout << "Masukkan elemen matrik B " << i << "," << j

<< " : ";33. cin >> b[i][j];34. }35. }36.37. cout << "Matrik B : " <<endl;38. for (i=1;i<3;i++) {39. for (j=1;j<3;j++) {40.41. cout << b[i][j] << " ";42.43. }44. cout << endl;45. }46.47. for (i=1;i<3;i++) {48. for (j=1;j<3;j++) {49. c[i][j]=a[i][j]+b[i][j];50. }51. }52.53. cout << "Matrik C : " << endl;54. for (i=1;i<3;i++) {55. for (j=1;j<3;j++) {56. cout << c[i][j] << " ";57. }58. cout << endl;59. }60. }

Perkalian sebuah matrix [A]: m x n, dengan bilangan skalar c, dapat dihitung sebagai

berikut:

c a11 c a12 ... c a1n

[B] = c [A] = c a21 c a22 ... c a2n

Modul Praktikum Komputasi Numerik, Teknik Informatika, STTA Yogyakarta 11

Page 12: Modul Komputasi Numerik

c am1 c am2 ... c amm

Sedang perkalian dua buah matrix [C] = [A] [B] dapat dilakukan dengan persamaan

sebagai berikut (ingat jumlah baris-kolom dari matrik [C]).

Inverse dari sebuah matrix [A] adalah [A]-1 yang dapat dihitung sebagai berikut:

[A] [A]-1 = [A]-1 [A] = [I]

dengan [I] adalah matrix identitas.

Untuk matrix inversi dari matrix 2 x 2 inverse matrix dapat dihitung dengan jauh lebih

sederhana sebagai berikut.

Tugas:

Buat program perkalian matrix 2 x 2 dengan bilangan skalar c yang dapat

divariasi. Kemudian tentukan matrix inverse dari matrix 2 x 2 tersebut.

Buat program perkalian matrix persegi m x n dengan m dan n = 4.

Modul Praktikum Komputasi Numerik, Teknik Informatika, STTA Yogyakarta 12

Page 13: Modul Komputasi Numerik

Modul Metode Jacobi

Tujuan praktikum:

Dapat memahami penyelesaian sistem persamaan linear dimensi banyak dengan

iterasi Jacobi.

Memahami metode trial-and-error dengan metode Jacobi.

Dapat membuat program metode numerik Jacobi untuk mencari akar-akar

persamaan linear suku banyak.

Dasar teori:

Metode Jacobi merupakan salah satu metode penyelesaian sistem persamaan

linear (baca: matriks) berdimensi banyak (baca: lebih dari 2). Untuk matriks dengan

dimensi kecil (kurang atau sama dengan dua), lebih efektif diselesaikan dengan aturan

eliminasi atau metode Cramer.

Sistem persamaan linear dapat di-representasikan (dimodelkan) dalam bentuk

matriks sebagai berikut:

Sebagai contoh:

3x1 + x2 - x3 = 54x1 + 7x2 - 3x3 = 202x1 - 2x2 + 5x3 = 10

dapat di-representasikan sebagai:

Modul Praktikum Komputasi Numerik, Teknik Informatika, STTA Yogyakarta 13

IV

Page 14: Modul Komputasi Numerik

 

Tujuannya supaya mudah untuk diselesaikan secara matematis.

Aturan Jacobi:

Iterasi Jacobi memiliki rumus persamaan sebagai berikut:

atau 

Iterasi berakhir jika:

Atau perhitungan saat ini tidak berbeda jauh (baca: mirip) dengan perhitungan sebelumnya.

Jika di-implementasikan ke contoh di atas menjadi:

Modul Praktikum Komputasi Numerik, Teknik Informatika, STTA Yogyakarta 14

Page 15: Modul Komputasi Numerik

Jika inisialisasi nilai awal x1, x2 dan x3 = 0, maka:

Iterasi berikutnya ditunjukkan pada tabel berikut ini:

Jika diperhatikan pada tabel di atas, nilai x1, x2 dan x3 semakin stabil (perbedaan nilai

saat ini dengan nilai sebelumnya semakin kecil). Proses ini dapat diteruskan sesuka hati

sampai diperoleh toleransi error yang diinginkan.

Menulis Kode Program Iterasi Jacobi

1. #include<iostream.h>2. void main()3. {4. int i, j, k, l, ukuran, iterasi;5. float f[10], a[10][10],b[10],x[10], toleransi, sigma[10];6.

Modul Praktikum Komputasi Numerik, Teknik Informatika, STTA Yogyakarta 15

Page 16: Modul Komputasi Numerik

7. //input ukuran matrik8. cout << "Masukkan besar matriks : ";9. cin >> ukuran;10.11. Step #4 : Input matriks A dan matriks B12. 13. //masukkan matrik a14. for (i=1;i<=ukuran;i++){15. for (j=1;j<=ukuran;j++){16. cout << "Masukkan a[" << i << "][" << j << "] = ";17. cin >> a[i][j];18. }19. }20.21. //masukkan matrik b22. for (i=1;i<=ukuran;i++){23. cout << "Masukkan elemen matrik b[" << i << "] = ";24. cin >> b[i];25. }26.27. //inisialisasi nilai awal28. for (i=1;i<=ukuran;i++){29. x[i]=0;30. }31.32. toleransi = 10;33. iterasi = 0;34.35. while (toleransi > 0.00001)36. {37. iterasi++;38. cout << "---------------------------------------\n";39. cout << "iterasi ke " << iterasi << endl;40.41. if (iterasi > 50)42. break;43.44.45. //menghitung jumlah total sigma46. for (k=1;k<=ukuran;k++) {47. sigma[k] = 0;48. for (l=1;l<=ukuran;l++) {49.50. if (k != l) {51. sigma[k] = sigma[k] + (a[k][l]*x[l]);52. } // tutup if k != l53. } // tutup for l54.55. f[k] = (b[k] - sigma[k])/a[k][k];56. cout << "x[" << k << "] = " << f[k] << endl;57. } // tutup for k58.

Modul Praktikum Komputasi Numerik, Teknik Informatika, STTA Yogyakarta 16

Page 17: Modul Komputasi Numerik

59. toleransi = (f[1]-x[1])+(f[2]-x[2])+(f[3]-x[3]);60. if (toleransi < 0) {61. toleransi *= -1;62. }63.64. for (i=0;i<=ukuran;i++) {65. x[i] = f[i];66. }67.68. } //tutup while69. } //tutup void

Latihan:

1. Ujilah Program di atas dengan beberapa matrik dengan beberapa dimensi.

2. Lakukan analisis program di atas

Modul Praktikum Komputasi Numerik, Teknik Informatika, STTA Yogyakarta 17

Page 18: Modul Komputasi Numerik

Modul Metode Bisection

Tujuan praktikum:

Dapat memahami penyelesaian persamaan f(x) = 0 dan mencari akar-akar

persamaannya dengan metode penggambaran grafis.

Memahami metode trial-and-error dengan metode Bisection untuk mencari akar-

akar persamaan f(x) = 0.

Dapat membuat program metode numerik Bisection untuk mencari akar-akar

persamaan f(x) = 0.

Dasar teori:

Metode paling sederhana untuk mencari akar-akar persamaan f(x) = 0 adalah dengan

me-plot fungsi yang dicari akar-akarnya. Akar-akar persamaan adalah harga-harga f(x)

yang memotong sumbu x. Metode ini biasa disebut metode grafis.

Contoh:

Gunakan metode grafis untuk menentukan koefisien penurunan parasut c yang turun

dengan massa m = 68.1 kg, kecepatan v = 40 m/s, pada waktu turun t = 10 detik.

Grafitasi bumi adalah g = 9.8 m/detik2.

Persamaan:

c (ordinat) f(c) (absis)

48121620

34.11517.6536.067-2.269-8.401

Modul Praktikum Komputasi Numerik, Teknik Informatika, STTA Yogyakarta 18

12 16

Akar persamaanc

f(c)

V

Page 19: Modul Komputasi Numerik

Akar persamaan didapatkan c = 14.75. Cara mengecek kebenaran dari estimasi grafis di

atas adalah dengan memasukkan kembali harga tersebut ke dalam persamaannya.

Anda juga dapat mengecek validitasnya dengan mencari harga kecepatannya.

yang harganya mendekati kecepatan jatuh parasut v = 40 m / detik.

Metode Bisection:

Secara umum jika f(x) adalah berharga real dan kontinyu pada interval dan

harga-harga dan mempunyai tanda yang berbeda, maka berlaku persamaan

. Dan paling tidak akan ada satu persamaan yang berharga di antara

.

Mencari akar-akar persamaan dengan metode Bisection adalah dengan membagi dua

interval kemudian mencari akar-akarnya pada tiap-tiap interval, lalu membagi

dua kembali interval yang memuat akar-akar persamaannya. Step-step algoritma dari

metode Bisection adalah sebagai berikut:

Pilih harga rendah dan harga tinggi di mana akar-akar persamaanya akan

termuat di antaranya.

Tentukan estimasi akar persamaan

Evaluasi hasilnya dengan cara sebagai berikut:

a. Jika , maka akar persamaan yang dicari ada pada interval

bawah. Maka set dan kembali ke step 2.

b. Jika , maka akar persamaan yang dicari ada pada interval

atas. Maka set dan kembali ke step 2.

c. Jika , maka akar persamaan yang dicari adalah .

Program mencari akar persamaan dengan metode Bisection:

Modul Praktikum Komputasi Numerik, Teknik Informatika, STTA Yogyakarta 19

Page 20: Modul Komputasi Numerik

/* User perlu memdefinisikan fungsi yang dicari akarnya sebagai fungsi pada program

dengan nama: ffunction. Contoh diberikan pada program ini. */

1. #include<iostream.h>2. void main() {3. float a,b,c,fa,fb,fc,konvergensi;4. int iterasi;5.6. cout << "Masukkan Nilai A : ";7. cin >> a;8. cout << "Masukkan Nilai B : ";9. cin >> b;10.11. konvergensi=1;12. iterasi=0;13. while (konvergensi > 0.000005)14. {15. c=(a+b)/2;16.17. fa=(2*a)+3;18. fb=(2*b)+3;19. fc=(2*c)+3;20.21. if ((fc*fb) > 0)22. b=c;23. else24. a=c;25.26. konvergensi=a-b;27. if (konvergensi < 0)28. konvergensi=konvergensi*-1;29.30. iterasi++;31. }32.33. cout << "Jumlah iterasi : " << iterasi << endl;34. cout << "Akar persamaan : " << a <<endl;35.36. }

Tugas:

Buatlah program untuk mencari akar-akar persamaan pada metode grafis di atas

menggunakan metode Bisection.

Modul Praktikum Komputasi Numerik, Teknik Informatika, STTA Yogyakarta 20

Page 21: Modul Komputasi Numerik

Modul Metode Secant

Tujuan praktikum:

Mempelajari pemrograman komputer untuk menyelesaikan persamaan linear

simultan

Mempelajari teknik metode secant untuk menyelesaikan persamaan non linear

Dasar teori:

Metode Secant

Metode ini juga pengembangan dari metode Interpolasi Linier. Metode ini

dapat disebut metode Ekstrapolasi Linier. Pada metode ini fungsi f(x1) tidak perlu

berlawanan tanda dengan f(x2), namun dipilih dua harga yang dekat dengan akar

sebenarnya yang ditunjukkan oleh fungsi dari kedua titik tersebut. Algoritma dari

metode ini adalah :

1. Memilih harga pendekatan awal, x1 dan x2.

2. Menentukan harga

3. Jika |f(x3)| ≤ toleransi, maka harga x3 adalah harga x yang dicari, bila tidak

dilanjutkan ke tahap 4.

4. Jika |f(x1)| > |f(x2)|, maka x1baru = x2, jika tidak maka x1

baru = x1. Kemudian

menentukan harga x2baru = x3, dan kembali ke tahap 2.

Modul Praktikum Komputasi Numerik, Teknik Informatika, STTA Yogyakarta 21

VI

Page 22: Modul Komputasi Numerik

Latihan:

#include<iostream.h>;void main(){float x1,x2,x3,y1,y2,toleransi;int iterasi;cout << "Masukkan X1 : ";cin >> x1;cout << "Masukkan X2 : ";cin >> x2;toleransi=2;iterasi=1;x3=0;while (toleransi > 0.0001) {

cout << "Iterasi " << iterasi << endl;cout << "X2 = " << x2 << endl;cout << "X3 = " << x3 << endl;

y1=x1*x1-10;y2=x2*x2-10;

x3=(-(y1*x2)+(y2*x1))/(y2-y1);cout << "X3 : " << x3 << endl;

toleransi=(x3*x3)-10;if (toleransi<0) {toleransi*=-1;}cout << "Toleransi = " << toleransi << endl;x1=x2;x2=x3;

iterasi++;}cout << "Akar Persamaan = " << x3 << endl;}

Tugas:

1. Pilih input persamaan yang sesuai sehingga program di atas dapat dijalankan2. Tulis jawaban dari persamaan anda dalam selembar kertas dan dikumpulkan

pada akhir praktikum

Modul Praktikum Komputasi Numerik, Teknik Informatika, STTA Yogyakarta 22

Page 23: Modul Komputasi Numerik

Modul Metode Regula Falsi

Tujuan praktikum:

Mempelajari pemrograman komputer untuk menyelesaikan persamaan non

linear dengan metode regula falsi

Dasar teori:

Metode biseksi dapat diperbaiki apabila proses penetuan interval tidak perlu

setengah dari interval sebelumnya.

Jika bisa dicari interval yang lebih baik maka proses penyelesaian akan

memakan waktu yang lebih cepat dengan jumlah iterasi yang lebih sedikit.

Metode regula falsi titik xc ditentukan dari perpotongan garis linear g(x) yang

menghubungkan f(xa) dan f(xb) dengan y=0

Perhatikan grafik berikut:

Xc dicari dengan persamaan :

Sama dengan metode biseksi jika f(xc)*f(xb)<0 maka xb=xc

Jika f(xc)*f(xb)>0 maka xa=xc.

Pada gambar dengan bertambahnya iterasi, nilai xc akan konvergen ke akar

persamaan (penyelesaian).

Modul Praktikum Komputasi Numerik, Teknik Informatika, STTA Yogyakarta 23

VII

Page 24: Modul Komputasi Numerik

Proses iterasi berhenti jika selisih nilai xc pada suatu iterasi dengan xc pada

iterasi sebelumnya kurang dari nilai toleransi error yang diberikan

Latihan:

#include<iostream.h>;void main(){float x1,x2,x3,y1,y2,toleransi;int iterasi;cout << "Masukkan X1 : ";cin >> x1;cout << "Masukkan X2 : ";cin >> x2;toleransi=2;iterasi=1;x3=0;while (toleransi > 0.0001) {

cout << "Iterasi " << iterasi << endl;cout << "X2 = " << x2 << endl;cout << "X3 = " << x3 << endl;

y1=x1*x1-10;y2=x2*x2-10;

x3= ...........

cout << "X3 : " << x3 << endl;

toleransi=(x3*x3)-10;if (toleransi<0) {toleransi*=-1;}cout << "Toleransi = " << toleransi << endl;x1=x2;x2=x3;

iterasi++;}cout << "Akar Persamaan = " << x3 << endl;}

Tugas:

3. Pilih input persamaan yang sesuai sehingga program di atas dapat dijalankan4. Tulis jawaban dari persamaan anda dalam selembar kertas dan dikumpulkan

pada akhir praktikum

Modul Praktikum Komputasi Numerik, Teknik Informatika, STTA Yogyakarta 24

Page 25: Modul Komputasi Numerik

Modul Persamaan Diferensial

Tujuan praktikum:

Mahasiswa mampu menyelesaikan persamaan-persamaan diferensial biasa

beserta masalah syarat awalnya.

Mahasiswa mampu menyelesaikan sistem linear beserta masalah syarat awalnya.

Mahasiswa dapat melakukan studi lanjut tentang persamaan diferensial.

Dasar teori:

Persamaan diferensial adalah hubungan antara sekelompok fungsi dengan turunan-turunannya. Persamaan diferensial biasa adalah sebuah persamaan diferensial yang menghubungkan fungsi dengan sebuah variabel ke turunannya terhadap variabel itu sendiri

#include<iostream.h>#include<math.h>void main(){int a,i,derajat;float hasil,hasil1,x,koef[6],koef1[6];cout << "Masukkan derajat tertinggi dari persamaan : ";cin >> derajat;cout << "Masukkan nilai x : ";cin >> x;for (i=derajat;i>=0;i--){cout << "Masukkan koef dari x^"<< i << " : ";cin >> koef[i];}cout << "Persamaan yang anda masukkan adalah :\n ";cout << "f(x) = ";hasil=0;for (i=derajat;i>=1;i--){cout << koef[i] << "x^" <<i<< " + ";hasil+=(koef[i]*pow(x,i));}cout << koef[0]<< "\n";hasil+=koef[0];cout << "f(" <<x<< ") : " << hasil <<endl;

cout << endl;cout << "Turunan dari persamaan adalah : " <<endl;cout << "f`(x) = ";

Modul Praktikum Komputasi Numerik, Teknik Informatika, STTA Yogyakarta 25

VIII

Page 26: Modul Komputasi Numerik

hasil1=0;for (a=derajat-1;a>=1;a--){koef1[a]=koef[a+1]*(a+1);cout << koef1[a] <<"x^" << a << " + ";hasil1+=(koef1[a]*pow(x,a));}cout << koef[1] << endl;hasil1+=koef[1];cout << "f`(" <<x<< ") : " << hasil1 <<endl;}

Tugas:

1. Amati program di atas, jalankan dengan memasukkan data beberapa derajat

pangkat dan koefisien masing-masing pangkat tersebut

2. Tulis persamaan dan jawaban (hasil turunan) dan dikumpulkan pada akhir

praktikum

Modul Praktikum Komputasi Numerik, Teknik Informatika, STTA Yogyakarta 26

Page 27: Modul Komputasi Numerik

Modul Iterasi Newton

Tujuan praktikum:

Mahasiswa mampu menyelesaikan persamaan-persamaan non linear dengan

metode iterasi regula falsi

Dasar teori:

Metode Newton-Raphson

Metode ini menggunakan fungsi derivatif sebagai fungsi garis singgung. Algoritma dari metode ini adalah :

1. Memilih harga pendekatan awal, x1.

2. Menentukan harga

3. Jika |f(x2)| ≤ toleransi, maka harga x2 adalah harga x yang dicari, bila tidak

dilanjutkan ke tahap 4.

4. Menetukan harga x1baru = x2. Kemudian kembali ke tahap 2.

Latihan:

1. #include<iostream.h>;2. #include<math.h>;

Modul Praktikum Komputasi Numerik, Teknik Informatika, STTA Yogyakarta 27

IX

Page 28: Modul Komputasi Numerik

3. void main()4. {5. float x1,x2,toleransi;6. int iterasi;7. cout << "Masukkan X1 : ";8. cin >> x1;9.10. toleransi=2;11. iterasi=1;12. x2=0;13.14. while (toleransi > 0.0001) {15.16. cout << "Iterasi " << iterasi << endl;17. cout << "X1 = " << x1 << endl;18.19. x2=x1-((((2*x1*x1)-(10*x1)+12))/((4*x1)-10));20. cout << "X2 : " << x2 << endl;21.22. toleransi=(x2-x1);23. if (toleransi<0)24. {25. toleransi*=-1;26. }27. cout << "Toleransi = " << toleransi << endl;28. x1=x2;29.30. iterasi++;31. }32. cout << "Akar Persamaan = " << x2 << endl;33. }

Tugas:

1. Amati program di atas, jalankan dengan persamaan yang dapat diinput.

Modul Praktikum Komputasi Numerik, Teknik Informatika, STTA Yogyakarta 28