BLOG PENUH KESENANGAN

Sebuah blog dari seorng mahasiswa labil.

AREK TEKNIK

KUNJUNGAN INDUSTRI FAKULTAS TEKNIK 2013

UNIVERSITAS NEGERI MALANG

Universitas Penuh Kenangan :*

MUSIC

Penggemar Akut Music :3

TEAM O'SHEA

TEAM IAN O'SHEA FOREVER!!!

Showing posts with label komputasi numerik. Show all posts
Showing posts with label komputasi numerik. Show all posts

Wednesday, May 1, 2013

Metode Biseksi

Pada kesempatan kali ini saya akan beragi ilmu mengenai metode biseksi, setelah sebelumnya saya memposting mengenai integrasi numerik.Metode biseksi digunakan dalam implementasi dari mata kuliah komputasi numerik.
Langsung saja, berikut merupakan source program dari metode biseksi tersebut:

#include<stdio.h>
#include<conio.h>
#include<math.h>

float f(float x)
{
float d;
d=(x*x*x)+(4*x*x)-10;
return d;
}
main()
{
float x1,x2,xr,error,tol;
int i=1;
printf("\n\t\t\t\t METODE BISECTION\n");
printf("\t\t\t\t METODE BAGI DUA \n");
printf("\t\t\t\t ****************\n\n");

printf("\t\t\t\t x^3+4x^2-10=0\n\n");
printf("\tMasukkan batas atas persamaan(x1): ");scanf("%f",&x1);
printf("\tMasukkan batas bawah persamaan (x2): ");scanf("%f",&x2);
printf("\tMasukkan nilai toleransi: ");scanf("%f",&tol);
printf("\tTidak ada akar di antara kedua batas persamaan\n");
{
printf("\n \ti \tx1 \tx2 \txr \tf(x1) \tf(x2) \tf(xr) \terror \n");
do
{
xr=(x1+x2)/2;
error=fabs(x2-x1);
printf("\t%d\t%.3f\t%.3f\t%.3f\t%.3f\t%.3f\t%.3f\t%.3f\n",i,x1,x2,xr,f(x1),f(x2),f(xr),error);
if(f(x1)*f(x2)<tol)
x2=xr;
else
x1=xr;
i++;
}
while(error>tol);
printf("\n \tnilai xr terakhir : %.3f\n",xr);
printf("\tBanyaknya iterasi : %d \n",i-1);
printf("\n\t\t\t\t\t\t\tTERIMA KASIH");
printf("\n\t\t\t\t\t\t\t*************");
}
getch();
return 0;
}

Integrasi Numerik

Pada kesempatan kali ini saya ingin berbagi ilmu tentang kompeetensi numerik. Disini saya ingin berbagai cara menyelesaikan suatu kasus menggunakan metode integrasi numerik dengan menggunakan program c++. Berikut source codenya:

#include <stdio.h>
#include <math.h>
#include <conio.h>

float jumlah_atas(float, float, float);
float jumlah_bawah(float, float, float);
float trapezoida(float, float, float);

float f(float);

int main(){
     float batas_atas;
     float batas_bawah;
     int jumlah_h = 20;

     printf("Masukkan batas atas : ");
     scanf("%f", &batas_atas);
     printf("Masukkan batas bawah : ");
     scanf("%f", &batas_bawah);
     printf("Masukkan jumlah h : ");
     scanf("%d", &jumlah_h);

     printf("Jumlah atas  : %20.18f \n",
     jumlah_atas(batas_bawah, batas_atas, jumlah_h));
     printf("Jumlah bawah : %20.18f \n",
     jumlah_bawah(batas_bawah, batas_atas, jumlah_h));
     printf("Rata-rata    : %20.18f \n\n",
     (jumlah_atas(batas_bawah, batas_atas, jumlah_h) + jumlah_bawah(batas_bawah, batas_atas, jumlah_h)) /2);
     printf("Jumlah trapezoida  : %20.18f \n", trapezoida(batas_bawah, batas_atas, jumlah_h));
}

/*definisi fungsi yang akan dicari nilainya*/
float f(float x){
     return exp(x)*sin(x);
}

/* mencari nilai luas dengan metode jumlah atas */
float jumlah_atas(float bwh, float ats, float jlh){
     float i, luas = 0;
     float node1, node2;
     float y_node1, y_node2, y;
     float lebar_segmen = (ats - bwh) / jlh;
     for(i = bwh; i < ats; i += lebar_segmen){
           node1 = i;
           node2 = i + lebar_segmen;
     y_node1 = f(node1);
     y_node2 = f(node2);
     if(y_node1 < y_node2)
           y = y_node1;
     else
           y = y_node2;

     luas += lebar_segmen * y;
     }
     return luas;
}

/* mencari nilai luas dengan metode jumlah bawah */
float jumlah_bawah(float bwh, float ats, float jlh){
     float i, luas = 0;
     float node1, node2;
     float y_node1, y_node2, y;
     float lebar_segmen = (ats - bwh) / jlh;
     for(i = bwh; i < ats; i += lebar_segmen){
           node1 = i;
           node2 = i + lebar_segmen;
           y_node1 = f(node1);
           y_node2 = f(node2);
           if(y_node1 > y_node2)
                y = y_node1;
           else
                y = y_node2;

           luas += lebar_segmen * y;
     }
     return luas;
}

/* mencari nilai luas dengan metode trapezoidal */
float trapezoida(float bwh, float ats, float jlh){
     int i;
     float luas = 0;
     float lebar_segmen = (ats - bwh) / jlh;
     float node, y;

     luas = 0.5 * lebar_segmen * (f(ats) + f(bwh));
     for(i = 1; i < jlh; i++){
           node = bwh + i * lebar_segmen;
           y = f(node);
           luas += lebar_segmen * y;
     }
     return luas;
   getch();
}

 Dan hasil dari script tersebut adalah:

Sekian ilmu yang dapat saya bagi. Semoga bermanfaat, terima kasih.