RSS

TUGAS METODE NUMERIK


TUGAS METODE NUMERIK

INTEGRASI NUMERIK

UNSRI 1.jpg

DISUSUN OLEH

Indra Kusuma (08053111030)

AL Farissi (08053111016)

Novilga Lestari (08053111012)

Okse Wiriantini (08053111032)

Desta Fatihayati (09061002054)

FAKULTAS ILMU KOMPUTER

JURUSAN TEKNIK INFORMATIKA

UNIVERSITAS SRIWIJAYA

BAB I

PENDAHULUAN

Integrasi numerik mengambil peranan penting dalam masalah sains dan teknik. Hal ini menginat di dalam bidang sains sering ditemukan ungkapan-ungkapam integral matematis yang tidak mudah atau bahkan tidak dapat diselesaikan secara analitis. Disamping itu, kadang-kadang fungsi yang integralkan tidak berbentuk analitis melainkan berupa titik-titik data. Hal ini sering muncul dalam banyak aplikasi teknik. Oleh sebab itu, kehadiran analisis numerik menjadi penting manakala pendekatan analitis

mengalami kebuntuan.

Kita akan membahas beberapa teknik integrasi numerik yang sangat umum digunakan untuk memperoleh pendekatan integral fungsi y(x) pada batas interval [a,b] . Secara umum, integral fungsi y(x) pada interval tersebut dapat dinyatakan :

b

I = ∫ f( x) dx

x=a

Beberapa metode integrasi numerik yang sering digunakan dalam mendekati ungkapan integral fungsi. kita tinjau sebuah fungsi f ( x) yang dintegralkan dengan batas bawah x = x0 dan batas atas x=xn .

Dalam hal ini ada banyak metode yang digunakan yaitu :

    1. Metode Pias

o Kaidah Segiempat,

o Kaidah Trapesium,

o Kaidah Titik Tengah.

    1. Metode Newton Cotes

o Kaidah Trapesium,

o Metode Simpson 1/3,

o Metode Simpson 3/8,

o Integrasi Kuadratur.

BAB II

DESKRIPSI SOFTWARE

Software ini dibuat dengan menggunakan bahasa pemrograman C++ dengan compiler Turbo C++.

BAB III

SOURCE CODE

Di bawah ini source program dari beberapa kaidah-kaidah pada Integrasi Numerik :

//=============================================================//

//program Integrasi Numerik

//=============================================================//

#include

#include

#include

#include

#include

#define MaksU 100

//=============================================================//

//variable global

//=============================================================/

int i,j,k;

//prosedur-prosedur yang di gunakan untuk menghitung rumus

//=============================================================//

//rumus untuk kaidah trapesium dan segiempat

//=============================================================//

int TrapSegi(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 << "\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\n";

cout << "------------------------------------------\n\n";

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

{

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

break;

}

case 2 :

{

cout << "\n\nPemasukan Data Berdasarkan Tabel Data\n";

cout << "-------------------------------------\n";

cout << "\nBerapa Jumlah Data yang akan diproses (lihat tabel) ?";

cin >> j;

for(i = 0; i <>

{

printf("\nu[%d] = ", i);

cin >> u[i];

}

sumx = 0.0; /* Inisialisasi Penyimpan Sementara Penjumlahan */

x10 = x1; /* No urut x sesuai interval + h */

printf("\n\n\th = %.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 <>

{

sumx += u[i];

sum = sumx - (u[j-j] + u[j-1]);

x[i] = x1;

printf("\t %d\t\t%.1f\t%.4f\t%.4f\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 %.4f", L);

printf("\n------------------------------------------------------\n\n");

break;

}

default : cout << "\nNo Good ......... Try Again, please ..\n";

}

return 0;

}

//=============================================================//

//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 << "\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) e^x 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) e^x dx\n";

cout << "------------------------------------------\n\n";

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

{

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

break;

}

case 2 :

{

cout << "\n\nPemasukan Data Berdasarkan Tabel Data\n";

cout << "-------------------------------------\n";

cout << "\nBerapa Jumlah Data yang akan diproses (lihat tabel) ?";

cin >> j;

for(i = 0; i <>

{

printf("\nu[%d] = ", i);

cin >> u[i];

}

sumx = 0.0; /* Inisialisasi Penyimpan Sementara Penjumlahan */

x10 = x1; /* No urut x sesuai interval + h */

printf("\n\n\th = %.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 <>

{

sumx += u[i];

sum = sumx - (u[j-j] + u[j-1]);

x[i] = x1;

printf("\t %d\t\t%.1f\t%.4f\t%.4f\n", i, x[i], u[i], sumx);

x1 += h;

/* Rumus Integrasi titik tengah */

L = h*(u[j-j] + sum + u[j-1]);

}

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 %.4f", L);

printf("\n------------------------------------------------------\n\n");

break;

}

default : cout << "\nNo Good ......... Try Again, please ..\n";

}

return 0;

}

//=============================================================//

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

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

{

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

//Tampilkan data x dan U(x)

for(i = 0; 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 <>

{

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

//Tampilkan data x dan U(x)

for(i = 0; 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,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)

{

//variabel yang di ketahui

//k.awal : nilai a dan b di inputkan oleh user

//k.akhir I berupa hampiran Integrasi

float f;

float f1, f2;

float x;

x = ((a+b)+(b-a)*t)/2;

f = x*x + 1;

cout<<"-- didapat nilai x :"< cout<

cout<<"-- didapat nilai f :"< cout<<

cout<<" !! maka !!"; cout<

f1 = f * (sqrt (3)/3);

f2 = f * (-sqrt (3)/3);

cout<<"-- nilai fi : "< cout<

cout<<"-- nilai f2 : "< cout<

I= (b-a)/2 * (f1+f2);

}

//=============================================================//

//MAIN PROGRAM

//=============================================================//

void main()

{

double u[MaksU];

double x[MaksU];

double L,I;

float a,b,t;

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\ \"PROGRAM INTEGRASI NUMERIK\"\n\n\n";

cout<<"\t\ KELOMPOK 4\n\n";

cout<<"\t\ 1. Indra Kusuma (08053111030)\n\n";

cout<<"\t\ 2. Al Farissi (08053111016)\n\n";

cout<<"\t\ 3. Novilga Lestari (08053111012)\n\n";

cout<<"\t\ 4. Okse Wiriantini (08053111032)\n\n";

cout<<"\t\ 5. Desta Fatihayati (09061002054)\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\ METODE PIAS\n\n";

cout<<"\t\ 1. Kaidah SegiEmpat\n\n";

cout<<"\t\ 2. Kaidah Trapesium\n\n";

cout<<"\t\ 3. Kaidah Titik Tengah\n\n";

cout<<"\t\ METODE NEWTON-COTES\n\n";

cout<<"\t\ 4. Kaidah Trapesium\n\n";

cout<<"\t\ 5. Kaidah Simpson 1/3\n\n";

cout<<"\t\ 6. Kaidah Simpson 3/8\n\n";

cout<<"\t\ 7. Kuadratur Gauss\n\n";

cout<<"\t\ Masukkan Pilihan Anda : ";cin>>menu;

clrscr();

switch(menu)

{

case 1:

{ cout<<"\n";

cout<<"\t\ METODE PIAS\n";

cout << "\n\nKaidah SegiEmpat untuk Integrasi Numerik\n";

cout << "==========================================\n";

TrapSegi(u,x,L);

break;

}

case 2:

{ cout<<"\n";

cout<<"\t\ METODE PIAS\n";

cout << "\n\nKaidah Trapesium untuk Integrasi Numerik\n";

cout << "==========================================\n";

TrapSegi(u,x,L);

break;

}

case 3:

{ cout<<"\n";

cout<<"\t\ METODE PIAS\n";

cout << "\n\nKaidah Titik Tengah untuk Integrasi Numerik\n";

cout << "==========================================\n";

TitikTengah(u,x,L);

break;

}

case 4:

{ cout<<"\n";

cout<<"\t\ METODE NEWTON-COTES\n";

cout << "\n\nKaidah Trapesium untuk Integrasi Numerik\n";

cout << "==========================================\n";

TrapSegi(u,x,L);

break;

}

case 5:

{ cout<<"\n";

cout<<"\t\ METODE NEWTON-COTES\n";

cout << "\n\nKaidah Simpson 1/3 untuk Integrasi Numerik\n";

cout << "==========================================\n";

Simpson1per3(u,x,L);

break;

}

case 6:

{ cout<<"\n";

cout<<"\t\ METODE NEWTON-COTES\n";

cout << "\n\nKaidah Simpson 3/8 untuk Integrasi Numerik\n";

cout << "==========================================\n";

Simpson3per8(u,x,L);

break;

}

case 7:

{

cout << "\n\nKaidah Kuadratur Gauss untuk Integrasi Numerik\n";

cout<<"===========================================\n";

cout<<"Inputan Nilai :"; cout<

cout<<">> a :"; cin>>a;

cout<<">> b :"; cin>>b;

cout<<">> t :"; cin>>t;

cout<<

KuadraturGauss(a,b,t,I);

cout<<"-- nilai hampiran (I) :" <

cout<

break;

}

}

cout<<"\nApakah anda ingin kembali ke menu lagi (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";

}

BAB IV

RUNNING PROGRAM

Pertama pilihlah metode yang ingin Anda gunakan :

Contoh Salah Satu Metode, KAidah Segiempat :

0 komeng..:

Copyright 2009 deSTAlicious-1812's diary. All rights reserved.
Free WPThemes presented by Leather luggage, Las Vegas Travel coded by EZwpthemes.
Bloggerized by Miss Dothy