Modul Dasar dasar C. 1. Struktur Program di C++

26 

Loading....

Loading....

Loading....

Loading....

Loading....

Teks penuh

(1)

Modul Praktikum Komputasi Numerik, Teknik Informatika, STTA Yogyakarta 1

Modul Dasar dasar C

1. 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) 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. }

(2)

Modul Praktikum Komputasi Numerik, Teknik Informatika, STTA Yogyakarta 2 2. 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. }

3. 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 << “---“;

(3)

Modul Praktikum Komputasi Numerik, Teknik Informatika, STTA Yogyakarta 3 4. 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.}

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.

(4)

Modul Praktikum Komputasi Numerik, Teknik Informatika, STTA Yogyakarta 4

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:

(5)

Modul Praktikum Komputasi Numerik, Teknik Informatika, STTA Yogyakarta 5 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>

(6)

Modul Praktikum Komputasi Numerik, Teknik Informatika, STTA Yogyakarta 6

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.

(7)

Modul Praktikum Komputasi Numerik, Teknik Informatika, STTA Yogyakarta 7

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 aij.

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. }

(8)

Modul Praktikum Komputasi Numerik, Teknik Informatika, STTA Yogyakarta 8 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]  cijaijbij

[C] = [A] – [B]  cijaijbij

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++) {

(9)

Modul Praktikum Komputasi Numerik, Teknik Informatika, STTA Yogyakarta 9 22. cout << a[i][j] << " "; 23. 24. } 25. cout << endl; 26. } 27. 28. for (i=1;i<3;i++) { 29. for (j=1;j<3;j++) { 30.

31. cout << "Masukkan elemen matrik B " << i << "," << j << " : ";

32. cin >> b[i][j];

33. }

34. }

35.

36. cout << "Matrik B : " <<endl;

37. for (i=1;i<3;i++) { 38. for (j=1;j<3;j++) { 39. 40. cout << b[i][j] << " "; 41. 42. } 43. cout << endl; 44. } 45. 46. for (i=1;i<3;i++) { 47. for (j=1;j<3;j++) { 48. c[i][j]=a[i][j]+b[i][j]; 49. } 50. } 51.

52. cout << "Matrik C : " << endl;

53. for (i=1;i<3;i++) { 54. for (j=1;j<3;j++) { 55. cout << c[i][j] << " "; 56. } 57. cout << endl; 58. } 59. }

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

(10)

Modul Praktikum Komputasi Numerik, Teknik Informatika, STTA Yogyakarta 10 Sedang perkalian dua buah matrix [C] = [A] [B] dapat dilakukan dengan persamaan sebagai berikut (ingat jumlah baris-kolom dari matrik [C]).

  n k kj ik ij a b c 1

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.

           11 21 12 22 21 12 22 11 1 1 ] [ a a a a a a a a A 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.

(11)

Modul Praktikum Komputasi Numerik, Teknik Informatika, STTA Yogyakarta 11

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 = 5 4x1 + 7x2 - 3x3 = 20 2x1 - 2x2 + 5x3 = 10

dapat di-representasikan sebagai:

(12)

Modul Praktikum Komputasi Numerik, Teknik Informatika, STTA Yogyakarta 12 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.

(13)

Modul Praktikum Komputasi Numerik, Teknik Informatika, STTA Yogyakarta 13 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];

(14)

Modul Praktikum Komputasi Numerik, Teknik Informatika, STTA Yogyakarta 14

7. //input ukuran matrik

8. cout << "Masukkan besar matriks : "; 9. cin >> ukuran;

10.

11. Step #4 : Input matriks A dan matriks B

12.

13. //masukkan matrik a

14. 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 b 22. for (i=1;i<=ukuran;i++){

23. cout << "Masukkan elemen matrik b[" << i << "] = "; 24. cin >> b[i];

25. }

26.

27. //inisialisasi nilai awal

28. 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 sigma

46. 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 != l 53. } // tutup for l 54. 55. f[k] = (b[k] - sigma[k])/a[k][k]; 56. cout << "x[" << k << "] = " << f[k] << endl; 57. } // tutup for k 58.

(15)

Modul Praktikum Komputasi Numerik, Teknik Informatika, STTA Yogyakarta 15 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 while 69. } //tutup void Latihan:

1. Ujilah Program di atas dengan beberapa matrik dengan beberapa dimensi. 2. Lakukan analisis program di atas

(16)

Modul Praktikum Komputasi Numerik, Teknik Informatika, STTA Yogyakarta 16

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:

e

v c gm c f( ) 1 (c/m)t  c (ordinat) f(c) (absis) 4 8 12 16 20 34.115 17.653 6.067 -2.269 -8.401 12 16 Akar persamaan c f(c)

V

(17)

Modul Praktikum Komputasi Numerik, Teknik Informatika, STTA Yogyakarta 17 Akar persamaan didapatkan c = 14.75. Cara mengecek kebenaran dari estimasi grafis di atas adalah dengan memasukkan kembali harga tersebut ke dalam persamaannya.

1

40 0.059 75 . 14 38 . 667 ) 75 . 14 (  e0.146843(14.75)   f

Anda juga dapat mengecek validitasnya dengan mencari harga kecepatannya.

1

40.059 75 . 14 ) 1 . 68 ( 8 . 9 (14.75/68.1)10   e v

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

Metode Bisection:

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

harga-harga f(xl) dan f(xu) mempunyai tanda yang berbeda, maka berlaku

persamaan f(xl) f(xu)0. Dan paling tidak akan ada satu persamaan yang berharga di antara xlxu.

Mencari akar-akar persamaan dengan metode Bisection adalah dengan membagi dua interval xlxu 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 xl dan harga tinggi xu di mana akar-akar persamaanya akan

termuat di antaranya.

 Tentukan estimasi akar persamaan

2 u l r x x x  

 Evaluasi hasilnya dengan cara sebagai berikut:

a. Jika f(xl) f(xu)0, maka akar persamaan yang dicari ada pada interval bawah. Maka set xuxr dan kembali ke step 2.

b. Jika f(xl) f(xu)0, maka akar persamaan yang dicari ada pada interval

atas. Maka set xlxr dan kembali ke step 2.

(18)

Modul Praktikum Komputasi Numerik, Teknik Informatika, STTA Yogyakarta 18 Program mencari akar persamaan dengan metode Bisection:

/* 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. else 24. 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.

(19)

Modul Praktikum Komputasi Numerik, Teknik Informatika, STTA Yogyakarta 19

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 )) ( ) ( ( ) ( ) ( 1 2 2 1 2 2 3 x f x f x f x x x x     

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 x1baru = x1. Kemudian

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

(20)

Modul Praktikum Komputasi Numerik, Teknik Informatika, STTA Yogyakarta 20 Latihan: 1. #include<iostream.h>; 2. void main() 3. { 4. float x1,x2,x3,y1,y2,toleransi; 5. int iterasi; 6. cout << "Masukkan X1 : "; 7. cin >> x1; 8. cout << "Masukkan X2 : "; 9. cin >> x2; 10. toleransi=2; 11. iterasi=1; 12. x3=0; 13. while (toleransi > 0.0001) { 14.

15. cout << "Iterasi " << iterasi << endl; 16. cout << "X2 = " << x2 << endl; 17. cout << "X3 = " << x3 << endl; 18. 19. y1=x1*x1-10; 20. y2=x2*x2-10; 21. 22. x3=(-(y1*x2)+(y2*x1))/(y2-y1); 23. cout << "X3 : " << x3 << endl; 24. 25. toleransi=(x3*x3)-10; 26. if (toleransi<0) { 27. toleransi*=-1; 28. }

29. cout << "Toleransi = " << toleransi << endl;

30. x1=x2;

31. x2=x3;

32.

33. iterasi++;

34. }

35. cout << "Akar Persamaan = " << x3 << endl;

36. }

Tugas:

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

(21)

Modul Praktikum Komputasi Numerik, Teknik Informatika, STTA Yogyakarta 21

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).

VII

) ( ) ( ) )( ( a b a b a a c x f x f x x x f x x    

(22)

Modul Praktikum Komputasi Numerik, Teknik Informatika, STTA Yogyakarta 22  Proses iterasi berhenti jika selisih nilai xc pada suatu iterasi dengan xc pada

iterasi sebelumnya kurang dari nilai toleransi error yang diberikan

Latihan: 1. #include<iostream.h>; 2. void main() 3. { 4. float x1,x2,x3,y1,y2,toleransi; 5. int iterasi; 6. cout << "Masukkan X1 : "; 7. cin >> x1; 8. cout << "Masukkan X2 : "; 9. cin >> x2; 10. toleransi=2; 11. iterasi=1; 12. x3=0; 13. while (toleransi > 0.0001) { 14.

15. cout << "Iterasi " << iterasi << endl; 16. cout << "X2 = " << x2 << endl; 17. cout << "X3 = " << x3 << endl; 18. 19. y1=x1*x1-10; 20. y2=x2*x2-10; 21. 22. x3= ... 23. 24. cout << "X3 : " << x3 << endl; 25. 26. toleransi=(x3*x3)-10; 27. if (toleransi<0) { 28. toleransi*=-1; 29. }

30. cout << "Toleransi = " << toleransi << endl;

31. x1=x2;

32. x2=x3;

33.

34. iterasi++;

35. }

36. cout << "Akar Persamaan = " << x3 << endl;

37. }

Tugas:

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

(23)

Modul Praktikum Komputasi Numerik, Teknik Informatika, STTA Yogyakarta 23

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 1. #include<iostream.h> 2. #include<math.h> 3. void main() 4. { 5. int a,i,derajat; 6. float hasil,hasil1,x,koef[6],koef1[6];

7. cout << "Masukkan derajat tertinggi dari persamaan : "; 8. cin >> derajat;

9. cout << "Masukkan nilai x : "; 10. cin >> x;

11. for (i=derajat;i>=0;i--)

12. {

13. cout << "Masukkan koef dari x^"<< i << " : "; 14. cin >> koef[i];

15. }

16. cout << "Persamaan yang anda masukkan adalah :\n "; 17. cout << "f(x) = ";

18. hasil=0;

19. for (i=derajat;i>=1;i--)

20. {

21. cout << koef[i] << "x^" <<i<< " + ";

22. hasil+=(koef[i]*pow(x,i));

23. }

24. cout << koef[0]<< "\n";

25. hasil+=koef[0];

26. cout << "f(" <<x<< ") : " << hasil <<endl; 27.

28. cout << endl;

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

(24)

Modul Praktikum Komputasi Numerik, Teknik Informatika, STTA Yogyakarta 24 31. hasil1=0; 32. for (a=derajat-1;a>=1;a--) 33. { 34. koef1[a]=koef[a+1]*(a+1); 35. cout << koef1[a] <<"x^" << a << " + "; 36. hasil1+=(koef1[a]*pow(x,a)); 37. }

38. cout << koef[1] << endl;

39. hasil1+=koef[1];

40. cout << "f`(" <<x<< ") : " << hasil1 <<endl;

41. }

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

(25)

Modul Praktikum Komputasi Numerik, Teknik Informatika, STTA Yogyakarta 25

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 ) ( ' ) ( 1 1 1 2 x f x f x x  

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>;

(26)

Modul Praktikum Komputasi Numerik, Teknik Informatika, STTA Yogyakarta 26 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:

Figur

Memperbarui...

Related subjects :