Introduction
description
Transcript of Introduction
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;
}
dx=1
20 21
A
D
y
A’
D’
E’E
X
Y
Y = x
A B
C
D
20 70
Trapesium ini dibentuk oleh empat buah garis : y = 0, y = x, x = 20, dan x = 70
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.5karena persamaan garis y = x, maka tingginya = 20.5sehingga luas A A’ E’ E
= dx kali y
= 1 x 20.5 = 20.5
CONTOH -1 Menghitung luas bidang yang dibatasi oleh garis
20
70
Secara matematik,Luas trafesium ABCD,Dapat dihitung = (70 + 20 ) * 50 / 2 = 2250
Bila program ini di-RUN
Maka tercetak : 2250
2.0
Luas = —— dx1x
0.5
= ln x
0.5
2.0
= ln 2.0 - ln 0.5
= 0.693147181 - -0.69314718
= 1.386294361
dx
y
0.5 2.0
//seperx.cpp#include<iostream.h>#include<math.h>void main(){ float x,y,dx,Luas,dluas; dx = 0.0001; Luas = 0.0; for(x=0.5; x<2.0; x=x+dx) { y=1/x; dluas = y * dx; Luas = Luas + dluas; } cout << Luas;}
Tercetak : 1.38616
Dengan program didapat Luas area dari x = 0.5 sampai x=2.0sebagai berikut :
Bila dx
Maka Luas =
0.10.010.0010.0001
1.4644061.3988261.3870401.386164
Mendekati perhitungan dengan menggunakan integral (matematik)
Benarkah ?
— dx = ln x1x
Hitung luas area yang dibatasi oleh :
y = — , y =0, x=0.5, dan x=2.01
x
CONTOH-2Penyelesaian secara matematikMenggunakan integral
Penyelesaian menggunakan program komputer
Makin kecil dx,Makin teliti hasil perhitungan
Jadi terbukti bahwa :
//seperxy.cpp#include<iostream.h>#include<iomanip.h>#include<math.h>void main(){ float x,y,dx,Luas,dluas; dx = 0.0001; 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;}
Tercetak : 1.386164
2.0
Luas = ex dx0.0
= ex = e2 - e0
0.0
2.0
= 2.718282 - 1 = 7.389046 – 1
= 6.389046
x ex
ex*dx Total
0
0.05 1.051271 0.105127 0.105127
0.15 1.161834 0.116183 0.221311
0.25 1.284025 0.128403 0.349713
0.35 1.419067 0.141907 0.491620
0.45 1.568312 0.156831 0.648451
0.55 1.733252 0.173325 0.821776
0.65 1.915540 0.191554 1.013330
0.75 2.116999 0.211700 1.225030
0.85 2.339646 0.233965 1.458995
0.95 2.585708 0.258571 1.717565
1.05 2.857649 0.285765 2.003330
1.15 3.158190 0.315819 2.319149
1.25 3.490340 0.349034 2.668183
1.35 3.857422 0.385742 3.053926
1.45 4.263110 0.426311 3.480237
1.55 4.711465 0.471147 3.951383
1.65 5.206974 0.520697 4.472081
1.75 5.754596 0.575460 5.047540
1.85 6.359812 0.635981 5.683521
1.95 7.028678 0.702868 6.386389
Dihitung dengan Excel dengan dx = 0.1
//epngktx.cpp
#include<stdio.h>
#include<math.h>
void main()
{ float x,y,e, dx, dLuas, Luas;
e = 2.718282;
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);
}
Tercetak : 6.389131
Benarkah
ex dx = ex
6.386389
Bandingkan dengan Total (ex * dx) mulai x = 0.0
sampai dengan x=2.0 dengan dx = 0.001 yang dihitung menggunakan program komputer (Bahasa C) berikut ini :
Dianggap sama ex dx = exJadi terbukti benar bahwa :
e = 2.71828
y = ex
y
x
1
2
Hitung luas area yang dibatasi oleh :
y=ex, y =0, x=0, dan x=2
CONTOH-3
Luas —— lingkaran = 14 y dx
= r2 – x2 dx
=
a2–u2 du = —— u a2-u2 + —— a2 arc sin —— + C1
2
1
2ua
— x r2-x2 + — r2 arc sin —— 12
12
xr
0
8
= — 8 82-82 + — 82 arc sin —— 12
12
88
= — 8 82-82 + — 82 arc sin —— 12
12
88
= 0 = 32 arc sin 1
= 32 arc sin 1= ——
2
= 32 ——2
= 16 = 16 * 3.1416
= 50.2656 (ini luas seperempat lingkaran)
sin 90o = 1arc sin 1 = 90o
90o dalam radian adalah = ——2
Jadi luas lingkaran denganjari-jari = 8,adalah 4 * 50.2656 = 201.0624
x
r2 – x2y =
dx
dLuas = y dx
0 8
r = 8
Soal
Hitung Luas LingkaranBila jari-jari = 8 cm
Yang dihitung cukup seperempat lingkaran, misal bagian yang berada di kudran ke- IRumus yang digunakan :
sama dengan hasil hitungan degan rumus biasa yaitu :
r2= 3.1416 * 64 = 201.0624
CONTOH-11
//LuasL03a.cpp
#include<stdio.h>
#include<math.h>
void main()
{ float x,y, r, xx, dx,
midx, Luas,dluas;
r = 80000.0; 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);
}
Tercetak : 5026550784.000000
Bila r = 8.0Tentunya Luas = 50.2655 0784
Bandingkan dengan perhitungan menggunakan integral yang hasilnya = 50.2656
Tercetak : 50265476.000000
//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);
}
Bila r = 8Tentunya Luas = 50.265 476
Bandingkan dengan perhitungan menggunakan integral yang hasilnya = 50.2656
Bila luas 1 / 4 lingkaran dihitung dengan program komputer
Pada program pertama, jari-jari yang sebenarnya hanya 8 cm, dibuat menjadi 80000 cm, jadi program ini membuat skala yang diperbesar 10 000 kali. Dengan dx = 2.0 berarti dx = 0.0002 (cukup kecil walaupun belum mendekati nol ). //pecahan.cppPada program kedua, skala diperbesar 1000 kaliHal ini dibuat untuk menghindari penyimpanan nilai dalam bentuk pecahan dalam tipe float atau double, karena penyimpanan bilangan pecahan ketelitiannya terbatas.
#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);
}
}
0.100000001490116119
0.0000000000000000000.1000000014901161190.2000000029802322390.3000000119209289550.4000000059604644780.5000000000000000000.6000000238418579100.7000000476837158200.8000000715255737300.900000095367431641
0.100000
0.0000000.1000000.2000000.3000000.4000000.5000000.6000000.7000000.8000000.900000
Dicetak dengan format
“ %20.18f” “ %f ”
Komputer tidak dapat menyimpan 0.1 dengan ketelitian 100 persen, walaupun bila dicetak dengan format : “%f”, akan tercetak 0.100000,Tetapi penyimpanan dalam komputer sebenarnya = 0.100000001490116119. . . . .
Tercetak : 50.304272
Bila dicetak dengan format: %22.18Maka tercetak : 50.304271697998046900
//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);
}
Tercetak : 50.304264
//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);
}
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.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);
}
Tercetak : 50.343361
//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 : 50.274395
#include<iostream.h>#define n 10void main(){ int I, K, X; int A[n]; for(I=0; I<=n-1; I++) { cin >> A[I]; } cout << "Sebelum disort : " ; for(I=0; I<=n-1; I++) { 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 : "; for(I=0; I<=n-1; I++) { cout << " " << A[I];}}
Bubble Sort
Menginput 12 buah bilangan bulat, dengan nilai acak (tidak urut),Kemudian mengurutkannya menaik (sort ascending)Dan mencetak hasil yang telah urut menaik
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
Kepala Kaki Tercetak 5 7 6 8 6 9 7 9 7 10 8 12 9 12 9 13 9 14 10 14 10 15 10 16 22 31
1 1 0 2 3 0 Hitungan Salah 2 1 4 0 0 3 3 1 Hitungan Salah 2 2 5 0 Hitungan Salah 5 4
Tercetak :
x y
JumlahRobot-B
Jumlah Robot-A
seharusnya
Misal jumlah robot A = X ,dan jumlah robot B = Y
Bila diinput :
Jumlah kepala = 22 Dan jumlah kaki = 31,
Maka secara aljabar dapat dibuat persamaan :
2X + 3Y = 223X + 4Y = 31
6X + 9Y = 666X + 8Y = 62
Y = 4X = 5
Robot A = X Robot B = Y
//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;}
Misal jumlah robot A = X ,dan jumlah robot B = Y
Bila diinput :
Jumlah kepala = 22 Dan jumlah kaki = 31,
Maka secara aljabar dapat dibuat persamaan :
2X + 3Y = 223X + 4Y = 31
6X + 9Y = 666X + 8Y = 62
Y = 4X = 5
Robot A = X 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");}
Misal jumlah robot A = X ,dan jumlah robot B = Y
Bila diinput :
Jumlah kepala = 22 Dan jumlah kaki = 31,
Maka secara aljabar dapat dibuat persamaan :
2X + 3Y = 223X + 4Y = 31
6X + 9Y = 666X + 8Y = 62
Y = 4X = 5
Robot A = X 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;elsecout << "Tidak ada Solusi";
}
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 7Bila 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 3.2 16 5 2.5 5 2
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 1+2+3 = 6
28 adalah bilangan perfect, karena 28 habis dibagi oleh : 1, 2, 4, 7, atau 14 dan 1+2+4+7+14 = 28
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.
Soal.
Soal.
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.