Sei sulla pagina 1di 13

SOURCE CODE DALAM C++

#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#define MaksU 10000
int i,j,k;
int Tra(double u[MaksU],double x[MaksU],double L){
double sum, sumx, x1, x10, x2, h;
int i,j,opsi;
cout << "\nMasukkan Batas Bawah (x1) ? ";
cin >> x1;
cout << "\nMasukkan Batas Atas (x2) ? ";
cin >> x2;
cout << "\nMasukkan Besar Interval (h) ? ";
cin >> h;
cout << "\nJumlah Data yang akan diproses (lihat tabel) ? ";
cin >> j;
sumx = 0.0; /* Inisialisasi Penyimpan Sementara Penjumlahan */
x10 = x1; /* No urut x sesuai interval + h */
printf("\t\n\nh = %.2f", h);
printf("\n\n\t-------------------------------------------\n");
printf("\tdata ke-\tx\tU(x)\tSum U(x)\n");
printf("\t-------------------------------------------\n\n");
for(i = 0; i < j ; i++){
u[i] = pow(i,2);
sumx += u[i];
sum = sumx - (u[j-j] + u[j-1]);
x[i] = x1;
printf("\t %d\t\t%.1f\t%.2f\t%.2f\n", i, x[i], u[i],sumx);
x1 += h;
/* Rumus Integrasi Trapezoidal */
L = h*(u[j-j] + 2*sum + u[j-1])/2;
}
printf("\n\t-------------------------------------------\n\n");
printf("\nDengan batas bawah = %.2f, atas = %.2f dan interval %.2f\n",
x10, x2, h);
printf("\nDiperoleh Luas daerah kurva L adalah %.2f", L);
printf("\n------------------------------------------------------\n\n");
}
//=============================================================//
//rumus untuk kaidah titik tengah
//=============================================================//
int TitikTengah(double u[MaksU],double x[MaksU],double L){
double sum, sumx, x1, x10, x2, h, e=2.718281828, n;
int i, j, opsi;
cout << "\nMasukkan Batas Bawah (x1) ? ";cin >> x1;
cout << "\nMasukkan Batas Atas (x2) ? ";cin >> x2;
cout << "\nMasukkan Besar Interval (h) ? ";cin >> h;
cout << "\nJumlah Data yang akan diproses (lihat tabel) ? ";cin >> j;
sumx = 0.0; /* Inisialisasi Penyimpan Sementara Penjumlahan */
x10 = x1; /* No urut x sesuai interval + h */
printf("\t\n\nh = %.2f", h);
printf("\n\n\t-------------------------------------------\n");
printf("\tdata ke-\tx\tU(x)\tSum U(x)\n");
printf("\t-------------------------------------------\n\n");
x1=x1+ (h/2);

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


u[i] = pow(e,x1);
sumx += u[i];
//sum = sumx - (u[j-j] + u[j-1]);
x[i]=x1;
n=i+0.5;
printf("\t %.1f\t\t%.1f\t%.3f\t%.3f\n", n, x[i], u[i],sumx);
x1 += h;
/* Rumus Integrasi titik tengah */
L = h*sumx;
}
printf("\n\t-------------------------------------------\n\n");
printf("\nDengan batas bawah = %.2f, atas = %.2f dan interval %.2f\n",
x10, x2, h);
printf("\nDiperoleh Luas daerah kurva L adalah %.3f", L);
printf("\n------------------------------------------------------\n\n");
}
//=============================================================//
//rumus untuk kaidah Simpson 1/3
//=============================================================//
float Simpson1per3(double u[MaksU],double x[MaksU],double L){
double h,x1,x2,L1,L2;
int i, j, k, n, opsi;
cout << "\nMasukkan Batas Bawah (x1) ? ";cin >> x1;
cout << "\nMasukkan Batas Atas (x2) ? ";cin >> x2;
cout << "\nMasukkan Besar Interval (h) ? ";cin >> h;
j = 0;
while(x1 != x2+h)
{
u[j] = pow(x1,3)/(1 + pow(x1,2));
x[j] = x1;
x1 += h;
printf("\nu[%d] = %.4f", j, u[j]);
j++;
}
/* Cetak Data Awal */
printf("\n\nu[%d] = %.4f", j-j, u[j-j]);
printf("\tu[%d] = %.4f", j-1, u[j-1]);
printf("\th = %.2f", h);
cout << "\n\nTekan Enter untuk melihat hasil perhitungan ..... \n";
getch();
printf("\n\n\t-------------------------------\n");
printf("\tdata ke-\tx\tU(x)\n");
printf("\t--------------------------------\n\n");
//Tampilkan data x dan U(x)
for(i = 0; i < j ; i++){
printf("\t %d\t\t%.2f\t%.4f\n", i, x[i], u[i]);}
printf("\n\t--------------------------------\n\n");
cout << "\nTekan Enter untuk melihat hasil perhitungan ......\n";
getch();
printf("\n\n\t----------------------------------------\n");
printf("\titerasi ke-\tU(x)\tL1(x)\tL2(x)\n");
printf("\t----------------------------------------\n\n");
L1 = 0.0;
L2 = 0.0;
//Perhitungan Simpson 3/8
for(i = 1; i <= j-2; i++){
k = fmod(i,2);
if(k != 0){

L1 += u[i];
printf("\t\t%d\t%.4f\t%.4f\t%.4f\n", i, u[i], L1, L2);}
else{
L2 += u[i];
printf("\t\t%d\t%.4f\t%.4f\t%.4f\n", i, u[i], L1, L2);}
/* Rumus Integrasi Simpson 1/3 */
L = h*(u[j-j] + 4*L1 + 2*L2 + u[j-1])/3; }
printf("\n\t----------------------------------------\n\n");
printf("\nMaka Luas daerah kurva L adalah %.4f", L);
printf("\n---------------------------------------------------\n");
return 0;
}
//=============================================================//
//rumus untuk kaidah Simpson 3/8
//=============================================================//
float Simpson3per8(double u[MaksU],double x[MaksU],double L){
double h,x1,x2,L1,L2;
int i, j, k, n, opsi;
cout << "\nMasukkan Batas Bawah (x1) ? ";
cin >> x1;
cout << "\nMasukkan Batas Atas (x2) ? ";
cin >> x2;
cout << "\nMasukkan Besar Interval (h) ? ";
cin >> h;
cout << "\n\nCara pemasukan data : \n\n";
cout << "1. Rumus Integral (rubah dulu kode program ssi rumus)\n";
cout << "Contoh dalam program ini adalah : integral(0-10) x^2 dx\n\n";
cout << "2. Tabel Data\n\n";
cout <<"Masukkan pilihan : ";
cin >> opsi;
switch(opsi){
case 1 :{
cout << "\n\nPersamaan Integral : integral(0-10) x^2 dx";
cout << "\n ------------------------------------------\n\n";
j = 0;
while(x1 != x2+h)
{
u[j] = pow(x1,2);
x[j] = x1;
x1 += h;
printf("\nu[%d] = %.2f", j, u[j]);
j++;
}
break; }
case 2 :{
cout << "\n\nPemasukan Data Berdasarkan Tabel Data\n";
cout << "-------------------------------------\n";
cout << "\nBerapa Jumlah Data yang akan diproses (lihat tabel) ?";
cin >> n;
for(i = 0, j = 0; i < j ;)
{
printf("\nx[%.2f] = ", x1);
cin >> u[j];
x[j] = x1;
x1 += h;
}
break;
}
default : cout << "\nNo Good ....... Try Again, please ...\n\n";
}
/* Cetak Data Awal */
printf("\n\nu[%d] = %.4f", j-j, u[j-j]);
printf("\tu[%d] = %.4f", j-1, u[j-1]);
printf("\th = %.2f", h);

cout << "\n\nTekan Enter untuk melihat hasil perhitungan ..... \n";
getch();
printf("\n\n\t-------------------------------\n");
printf("\tdata ke-\tx\tU(x)\n");
printf("\t--------------------------------\n\n");
for(i = 0; i < j ;){
printf("\t %d\t\t%.2f\t%.4f\n", i, x[i], u[i]);}
printf("\n\t--------------------------------\n\n");
cout << "\nTekan Enter untuk melihat hasil perhitungan ......\n";
getch();
printf("\n\n\t----------------------------------------\n");
printf("\titerasi ke-\tU(x)\tL1(x)\tL2(x)\n");
printf("\t----------------------------------------\n\n");
L1 = 0.0;
L2 = 0.0;
//Perhitungan Simpson 3/8
for(i = 1; i <= j-2; i++){
k = fmod(i,3);
if(k != 0){
L1 += u[i];
printf("\t\t%d\t%.4f\t%.4f\t%.4f\n", i, u[i], L1, L2);}
else
{
L2 += u[i];
printf("\t\t%d\t%.4f\t%.4f\t%.4f\n", i, u[i], L1, L2);}
/* Rumus Integrasi Simpson 3/8 */
L = 3*h*(u[j-j] + 3*L1 + 2*L2 + u[j-1])/8;}
printf("\n\t----------------------------------------\n\n");
printf("\nMaka Luas daerah kurva L adalah %.4f", L);
printf("\n---------------------------------------------------\n");
return 0;}
//=============================================================//
//rumus untuk kaidah Kuadratur Gauss
//=============================================================//
void KuadraturGauss(float a, float b, float t, double I){
float f, v;
float f1, f2;
float x;
x = ((a+b)+(b-a)*t)/2;
f = x*x + 1;
cout<<"-- didapat nilai x :" << x << endl;
cout<<"-- didapat nilai f :" <<f << endl;
cout<<" !! maka !!" <<endl;
f1 = f * (sqrt (3)/3);
f2 = f * (-sqrt (3)/3);
cout<<"-- nilai fi : "<<f1<<endl;
cout<<"-- nilai f2 : "<<f2<<endl;
I= (b-a)/2 * (f1+f2);}
void gauss3(float a, float b, float luas){
int i;
int orde = 3;
float t;
float weight[] = { (float) 8/9, (float)5/9, (float)5/9 };
float x[] = { 0, sqrt((float) 3/5), -sqrt((float) 3/5) };
for(i = 0; i < orde; i++){
t = ((b - a) * x[i] + (b + a)) / 2 ;

luas += weight[i] * t;
}
luas *= (b - a) / 2;
}
void gauss4(float a, float b, float luas){
int i;
int orde = 4;
float t;
float weight[] = { (float) 8/9, (float)5/9, (float)5/9, (float)8/9 };
float x[] = { 0, sqrt((float) 3/5), -sqrt((float) 3/5),0 };
for(i = 0; i < orde; i++){
t = ((b - a) * x[i] + (b + a)) / 2 ;
luas += weight[i] * t;
}
luas *= (b - a) / 2;}
//=============================================================//
//MAIN PROGRAM
//=============================================================//
void main()
{
double u[MaksU];
double x[MaksU];
double L,I;
float a,b,t,luasx;
int menu;
char jawab;
cout<<"\n\n\n\n\n\n\n\n\n\n";
cout<<"\t\t\t\t\"METODE NUMERIK\"\n";
cout<<"\t\t\t\ \"7 PROGRAM INTEGRASI NUMERIK\"\n\n\n";
cout<<"\t\ 1. Van Ray Hosea (DBC 111 0117)\n\n";
cout<<"\t\ 2. Harry Ferdinan W P (DBC 111 0122)\n\n";
cout<<"\t\ 3. Alexander Sirait (DBC 111 0119)\n\n";
cout<<"\n\n\n\n\n\n\n";
cout<<"Press any key to continue...";
getch();
clrscr();
do{
cout<<"\n\n";
cout<<"\t\..........::::::::::INTEGRASI NUMERIK::::::::::..........\n\n";
cout<<"\t\ 1. Kaidah Trapesium\n\n";
cout<<"\t\ 2. Kaidah Titik Tengah\n\n";
cout<<"\t\ 3. Kaidah Simpson 1/3 \n\n";
cout<<"\t\ 4. Kaidah Simpson 3/8\n\n";
cout<<"\t\ 5. Kuadratur Gauss 2\n\n";
cout<<"\t\ 6. Kaidah Simpson 3/8\n\n";
cout<<"\t\ 7. Kuadratur Gauss 3\n\n";
cout<<"\t\ 8. Keluar \n\n\"";
cout<<"\t\ Masukkan Pilihan Anda : ";cin>>menu;
clrscr();
switch(menu)
{
case 1:
{ cout<<"\n";
cout << "\n\nKaidah Trapesium untuk Integrasi Numerik\n";
cout << "==========================================\n";
Tra(u,x,L);
break;}

case 2:
{ cout<<"\n";
cout << "\n\nKaidah Titik Tengah untuk Integrasi Numerik\n";
cout << "==========================================\n";
TitikTengah(u,x,L);
break;}
case 3:
{ cout<<"\n";
cout << "\n\nKaidah Simpson 1/3 untuk Integrasi Numerik\n";
cout << "==========================================\n";
Simpson1per3(u,x,L);
break;}
case 4:
{ cout<<"\n";
cout << "\n\nKaidah Simpson 3/8 untuk Integrasi Numerik\n";
cout << "==========================================\n";
Simpson3per8(u,x,L);
break;}
case 5:
{
cout << "\n\nKaidah Kuadratur Gauss 2 untuk Integrasi Numerik\n";
cout<<"===========================================\n";
cout<<"Inputan Nilai :";
cout<<">> a :"; cin>>a;
cout<<">> b :"; cin>>b;
cout<<">> t :"; cin>>t;
KuadraturGauss(a,b,t,I);
cout<<"-- nilai hampiran (I) :"<<I<<endl;
break;
}
case 6:
{
cout << "\n\nKaidah Kuadratur Gauss 3 untuk Integrasi Numerik\n";
cout<<"===========================================\n";
cout<<"Inputan Nilai :";
cout<<">> a :"; cin>>a;
cout<<">> b :"; cin>>b;
cout<<">> t :"; cin>>t;
gauss3(a,b,luasx);
cout<<"-- nilai hampiran (I) :"<<luasx<<endl;
break;
}
case 7:
{
cout << "\n\nKaidah Kuadratur Gauss 4 untuk Integrasi Numerik\n";
cout<<"===========================================\n";
cout<<"Inputan Nilai :";
cout<<">> a :"; cin>>a;
cout<<">> b :"; cin>>b;
cout<<">> t :"; cin>>t;
gauss4(a,b,luasx);
cout<<" nilai hampiran (I) :"<<luasx<<endl;
break;}
case 8:break;
}
cout<<"\nTekan t untuk keluar dan y kembali ke menu(y/t) : ";
cin>>jawab;
clrscr();
}while (jawab != 't');

cout<
cout<<"\n\n\n\n\n\n\n\n\n";
cout<<"\n\t\t\t.....:::::Terima kasih:::::....."<<"\n";}

OUTPUT

Pilihan 1 :

Pilihan 2 :

TUGAS
METOE NUMERIK
INTEGRASI NUMERIK

DISUSUN OLEH :

VAN RAY HOSEA

DBC 111 0117

ALEXANDER SIRAIT

DBC 111 0119

HARRY FERINAN W.P.

DBC 111 0122

JURUSAN TEKNIK INFORMATIKA


FAKULTAS TEKNIK
UNIVERSITAS PALANGKA RAYA

Potrebbero piacerti anche