Upload presentasi
Presentasi sedang didownload. Silahkan tunggu
Diterbitkan olehHerman Chandra Telah diubah "6 tahun yang lalu
1
Introduction 06 to Algorithm Algoritma matematika
2
CONTOH -1 Menghitung luas bidang yang dibatasi oleh garis
Diberikan sebuah trapesium ABCD dengan gambar sebagai berikut. #include<iostream.h> void main() { float Awal, Akhir, dx, TotalLuas; float X, Y, Luasdx; Awal = 20; Akhir = 70; dx = (Akhir - Awal) / 50; TotalLuas = 0; while(Awal < Akhir) { X = Awal + (0.5 * dx); Y = X; Luasdx = Y * dx; TotalLuas = TotalLuas + Luasdx; Awal = Awal + dx; } cout << TotalLuas; Y C Y = x Secara matematik, Luas trafesium ABCD, Dapat dihitung = ( ) * 50 / 2 = 2250 70 D 20 X A B 20 70 Trapesium ini dibentuk oleh empat buah garis : y = 0, y = x, x = 20, dan x = 70 D’ Pandanglah satu bagian kecil disamping : Luas A A’ D’ D = luas A A’ E’ E bila garis tingginya diambil tepat diantara 20 dan 21 yaitu di 20.5 karena persamaan garis y = x, maka tingginya = 20.5 sehingga luas A A’ E’ E = dx kali y = 1 x = 20.5 E E’ D y Bila program ini di-RUN Maka tercetak : 2250 20 21 A A’ dx=1
3
CONTOH-2 Penyelesaian secara matematik Menggunakan integral
Hitung luas area yang dibatasi oleh : y = — , y =0, x=0.5, dan x=2.0 1 x 2.0 Benarkah ? 1 x Luas = —— dx 1 x 0.5 — dx = ln x dx y 0.5 2.0 2.0 = ln x 0.5 = ln ln 0.5 = = //seperxy.cpp #include<iostream.h> #include<iomanip.h> #include<math.h> void main() { float x,y,dx,Luas,dluas; dx = ; Luas = 0.0; for(x=0.5; x<2.0; x=x+dx) { y=1/x; dluas = y * dx; Luas = Luas + dluas; } setiosflags(ios::fixed); cout << setprecision(7) << Luas; Penyelesaian menggunakan program komputer //seperx.cpp #include<iostream.h> #include<math.h> void main() { float x,y,dx,Luas,dluas; dx = ; Luas = 0.0; for(x=0.5; x<2.0; x=x+dx) { y=1/x; dluas = y * dx; Luas = Luas + dluas; } cout << Luas; Dengan program didapat Luas area dari x = 0.5 sampai x=2.0 sebagai berikut : Bila dx Maka Luas = 0.1 0.01 0.001 0.0001 Makin kecil dx, Makin teliti hasil perhitungan Tercetak : Mendekati perhitungan dengan menggunakan integral (matematik) Tercetak : Jadi terbukti bahwa : 1 x — dx = ln x
4
? 1 CONTOH-3 y=ex, y =0, x=0, dan x=2 Luas = ex dx y
2.0 Hitung luas area yang dibatasi oleh : y=ex, y =0, x=0, dan x=2 Luas = ex dx 0.0 2.0 y Dihitung dengan Excel dengan dx = 0.1 = ex = e2 - e0 0.0 = = – 1 = 1 Bandingkan dengan Total (ex * dx) mulai x = 0.0 sampai dengan x=2.0 dengan dx = yang dihitung menggunakan program komputer (Bahasa C) berikut ini : x 2 y = ex //epngktx.cpp #include<stdio.h> #include<math.h> void main() { float x,y,e, dx, dLuas, Luas; e = ; dx = 0.001; Luas = 0.0; for(x=0.0005; x < 2.0; x=x+dx ) { y = pow(e,x); dLuas = y*dx; Luas=Luas+dLuas; } printf("\n %f ", Luas); Benarkah ex dx = ex e = ? Tercetak : Dianggap sama Jadi terbukti benar bahwa : ex dx = ex
5
CONTOH-11 Soal y = r2 – x2 dLuas = y dx x 8 r = 8
Hitung Luas Lingkaran Bila jari-jari = 8 cm dLuas = y dx x dx 8 Yang dihitung cukup seperempat lingkaran, misal bagian yang berada di kudran ke- I r = 8 Rumus yang digunakan : 1 2 1 2 Jadi luas lingkaran dengan jari-jari = 8, adalah 4 * = a2–u2 du = —— u a2-u2 + —— a2 arc sin —— + C u a 1 4 Luas —— lingkaran = y dx = r2 – x2 dx 8 1 2 1 2 x r sama dengan hasil hitungan degan rumus biasa yaitu : r2 = — x r2-x2 + — r2 arc sin —— 1 2 1 2 8 = — — 82 arc sin —— = * 64 = 1 2 — — 82 arc sin —— 1 2 8 = = 0 = 32 arc sin 1 2 = 32 arc sin 1 2 = —— = 32 —— sin 90o = 1 arc sin 1 = 90o 90o dalam radian adalah = —— 2 = 16 = 16 * = (ini luas seperempat lingkaran)
6
Bila luas 1 / 4 lingkaran dihitung dengan program komputer
//LuasL03a.cpp #include<stdio.h> #include<math.h> void main() { float x,y, r, xx, dx, midx, Luas,dluas; r = ; dx=2.0; midx = 1.0; Luas = 0.0; for(xx=0.0; xx<r; xx=xx+dx) { x = xx+midx; y = sqrt(r*r - x*x); dluas = y * dx; Luas = Luas + dluas; } printf("%f", Luas); //LuasL02b.cpp #include<stdio.h> #include<math.h> void main() { unsigned long int x,r, xx, midx, dx; float y, dLuas, Luas; dx=2; midx= 1; r = 8000; Luas = 0; for(xx=0; xx<r; xx=xx+dx) { x = xx + midx; y=sqrt(r*r - x*x); dLuas = y * dx; Luas = Luas + dLuas; } printf("\n\n %f", Luas); Tercetak : Tercetak : Bila r = 8.0 Tentunya Luas = Bandingkan dengan perhitungan menggunakan integral yang hasilnya = Bila r = 8 Tentunya Luas = Bandingkan dengan perhitungan menggunakan integral yang hasilnya =
7
Pada program pertama, jari-jari yang sebenarnya hanya 8 cm, dibuat menjadi cm, jadi program ini membuat skala yang diperbesar kali. Dengan dx = 2.0 berarti dx = (cukup kecil walaupun belum mendekati nol ). //pecahan.cpp Pada program kedua, skala diperbesar 1000 kali Hal ini dibuat untuk menghindari penyimpanan nilai dalam bentuk pecahan dalam tipe float atau double, karena penyimpanan bilangan pecahan ketelitiannya terbatas. Dicetak dengan format #include<stdio.h> void main() { float x,y; y = 0.1; printf(“\n%20.18f\n”, y); for(x=0.0; x < 1; x = x + y) { printf("\n%20.18f", x); } “ %20.18f” “ %f ” Komputer tidak dapat menyimpan 0.1 dengan ketelitian 100 persen, walaupun bila dicetak dengan format : “%f”, akan tercetak , Tetapi penyimpanan dalam komputer sebenarnya =
8
Perhatikan hasilnya bila dipaksakan menggunakan bilangan pecahan ( float)
//LuasL01.cpp #include<stdio.h> #include<math.h> void main() { float r,x,y,dx,Luas,dluas; r = 8.0; dx = 0.01; Luas = 0.0; for(x=0.0; x<r; x=x+dx) { y = sqrt(r*r - x*x); dluas = y * dx; Luas = Luas + dluas; } printf("%f", Luas); //LuasL01a.cpp #include<stdio.h> #include<math.h> void main() { float r,x,y,dx,Luas,dluas; r = 8.0; Luas = 0.0; for(x=0.0; x<r; x=x+0.01) { y = sqrt(r*r - x*x); dluas = y * 0.01; Luas = Luas + dluas; } printf("%f", Luas); Tercetak : Tercetak : Bila dicetak dengan format: %22.18 Maka tercetak :
9
//LuasL01.cpp #include<stdio.h> #include<math.h> void main() { float r,x,y,dx,Luas,dluas; r = 8.0; dx = 0.02; Luas = 0.0; for(x=0.0; x<r; x=x+dx) { y=sqrt(r*r - x*x); dluas = y * dx; Luas = Luas + dluas; } printf("%f", Luas); //LuasL01.cpp #include<stdio.h> #include<math.h> void main() { float r,x,y,dx,Luas,dluas; r = 8.0; dx = 0.002; Luas = 0.0; for(x=0.0; x<r; x=x+dx) { y=sqrt(r*r - x*x); dluas = y * dx; Luas = Luas + dluas; } printf("%f", Luas); Tercetak : Tercetak :
10
Bubble Sort #include<iostream.h> #define n 10 void main()
{ int I, K, X; int A[n]; for(I=0; I<=n-1; I++) { cin >> A[I]; } cout << "Sebelum disort : " ; { cout << " " << A[I];} cout << "\n"; for(K=0; K <= n-2; K++) {for(I=0; I <= n-2 - K; I++) { if (A[I] > A[I+1]) { X = A[I]; A[I] = A[I+1]; A[I+1] = X; } cout << "Sesudah disort : "; Bubble Sort Menginput 12 buah bilangan bulat, dengan nilai acak (tidak urut), Kemudian mengurutkannya menaik (sort ascending) Dan mencetak hasil yang telah urut menaik
11
Soal-6. Sebuah toko mainan hanya menjual dua macam robot, Robot-A dan Robot-B. Robot-A berkepala 2 dan berkaki 3. Robot B berkepala 3 dan berkaki 4. Dalam toko tersebut mungkin hanya ada Robot-A, (karena Robot-B sudah habis terjual), atau hanya ada Robot-B, atau kedua macam robot ada tersedia. Seorang anak menghitung dari semua robot yang ada ternyata terdapat 22 kepala dan 31 kaki. Ternyata terdapat 5 Robot A dan 4 Robot B. Susun program untuk menginput dua buah nilai yang menyatakan jumlah kepala dan jumlah kaki hasil hitungan anak tersebut. Kemudian hitung dan cetak ada berapa buah Robot-A dan berapa buah Robot-B. Tetapi apabila anak tersebut salah menghitung , maka cetak perkataan “Hitungan Salah”. Contoh: Bila diinput untuk jumlah seharusnya Kepala Kaki Tercetak 1 1 0 2 3 0 Hitungan Salah 2 1 4 0 0 3 3 1 2 2 5 0 5 4 Tercetak : x y Jumlah Robot-B Jumlah Robot-A
12
Misal jumlah robot A = X , dan jumlah robot B = Y Bila diinput : Jumlah kepala = 22 Dan jumlah kaki = 31, //Robot09 #include<iostream.h> void main() { int a,b,Head,Foot,X,Y; cin >> Head >> Foot; X=3*Head; Y = 2*Foot; b = X-Y; a = (Head-3*b)/2; if( a< 0 || b < 0) cout << "Data Salah"; else cout << a << " " << b; } Maka secara aljabar dapat dibuat persamaan : 2X + 3Y = 22 3X + 4Y = 31 6X + 9Y = 66 6X + 8Y = 62 Y = 4 X = 5 Robot A = X Robot B = Y
13
Misal jumlah robot A = X , dan jumlah robot B = Y //Robot1 #include<stdio.h> void main() { int A, B, Ha,Fa,Hb,Fb, Head, Foot; int Flag=0; A=0; scanf("%i %i", &Head, &Foot); while(Flag==0 && A < Head/2) { A++; Ha=A*2; Fa=A*3; Hb=Head-Ha; B=Hb/3; if((A*2+B*3)==Head && (A*3+B*4) == Foot) Flag=1; } if(Flag==1) printf("%i %i", A,B); else printf("Tidak ada Solusi"); Bila diinput : Jumlah kepala = 22 Dan jumlah kaki = 31, Maka secara aljabar dapat dibuat persamaan : 2X + 3Y = 22 3X + 4Y = 31 6X + 9Y = 66 6X + 8Y = 62 Y = 4 X = 5 Robot A = X Robot B = Y
14
Misal jumlah robot A = X , dan jumlah robot B = Y //Robot1 #include<iostream.h> void main() { int A, B, Ha,Fa,Hb,Fb, Head, Foot; int Flag=0; A=0; cin >> Head >> Foot; while(Flag==0 && A < Head/2) { A++; Ha=A*2; Fa=A*3; Hb=Head-Ha; B=Hb/3; if((A*2+B*3)==Head && (A*3+B*4) == Foot) { Flag=1; } } if(Flag==1) cout << A << " " << B; else cout << "Tidak ada Solusi"; Bila diinput : Jumlah kepala = 22 Dan jumlah kaki = 31, Maka secara aljabar dapat dibuat persamaan : 2X + 3Y = 22 3X + 4Y = 31 6X + 9Y = 66 6X + 8Y = 62 Y = 4 X = 5 Robot A = X Robot B = Y
15
Soal. Soal. Bila diinput : 3.1, maka X = 31 dan Y = 10 3.2 16 5
Susun program untuk menginput sebuah bilangan integer lebih besar dari nol. Kemudian cetak perkataan “Bujur Sangkar ” , bila bilangan yang diinput tadi merupakan kwadrat suatu bilangan inteteger lain. Selainnya cetak perkataan “Bukan Bujur Sangkar”. Contoh : Bila diinput : 49, maka cetak perkataan “Bujur Sangkar” karena 49 = 7 kwadrat atau 7 x 7 Bila diinput : 50, maka cetak perkataan “Bukan Bujur Sangkar”. Soal. Sebuah nilai integer, bila dibagi dengan nilai integer lain yang nilainya berbeda, kemungkinan akan menghasilkan bilangan real. Contoh : 15 / 2 = 7.5 yang dalam programming dapat ditulis dengan Z = A/B, dimana Z bertipe real (Bahasa C; float) , sedangkan X dan Y bertipe integer ( Bahasa C : int ). Susun program untuk menentukan nilai X dan Y bila diberikan (diinput) nilai real Z. Contoh: Bila diinput : 3.1, maka X = 31 dan Y = 10
16
Soal. Susun program (penggalan program) untuk menginputkan sebuah bilangan integer lebih besar dari nol. Kemudian periksa apakah bilangan tersebut adalah bilangan Perfect Number atau tidak. Bila ya, maka cetak “Perfect”, bila tidak cetak perkataan “Not Perfect”. Contoh bilangan perfect : 6 adalah bilangan perfect, karena 6 habis dibagi oleh : 1, 2, atau 3 , dan = 6 28 adalah bilangan perfect, karena 28 habis dibagi oleh : 1, 2, 4, 7, atau 14 dan = 28 Soal. Sebuah bilangan bila dibagi dengan 2, 3, 4, 5, 6 maka sisanya = 1. Tapi bila dibagi dengan 7 maka sisanya = 0. Bilangan tersebut mungkin lebih dari satu buah. Susun program untuk mencari dan mencetak satu yang terkecil dari bilangan-bilangan tersebut.
18
Sebuah kebun besar ditanami pohon bibit sebanyak n baris
Sebuah kebun besar ditanami pohon bibit sebanyak n baris. Setiap baris terdiri dari n pohon. Pohon-pohon tersebut kemudian dicabut dan ditanam ulang menjadi 13 buah kebun dengan ukuran lebih kecil yaitu setiap kebun kecil terdiri dari m baris dan setiap baris terdiri dari m pohon. Setelah terbentuk 13 kebun kecil ukuran m x m, ternyata pada kebun besar masih tersisa 1 pohon. Susun program untuk mencetak berapa jumlah pohon semula yang ada di kebun besar.
22
seleseai Tahap-6
Presentasi serupa
© 2024 SlidePlayer.info Inc.
All rights reserved.