penyelesain soal metode numerik

Upload: arif-ayip

Post on 10-Oct-2015

74 views

Category:

Documents


8 download

DESCRIPTION

- Dekomposisi LU dan Partial Pivot- Interpolasi polinom Newton- Polynomial Lagrange

TRANSCRIPT

  • TUGAS METODE NUMERIK

    PEMBUATAN ALGORITMA PROGRAM C++

    UNTUK MENYELESAIKAN SOAL UTS

    Oleh Mahasiswa Pra S2 Matematika 2013:

    Dosen:

    Dr. Dwi Ratna S., M.T

    Jurusan Matematika - Fakultas MIPA

    Institut Teknologi Sepuluh Nopember (ITS)

    Surabaya

    2014

    Arif Fadllullah (1213200039)

    Dwi Lesmideyarti (1213200044)

    Salya Rater (1213200036)

  • SOAL:

    1. a) Selesaikan sistem persamaan berikut dengan menggunakan dekomposisi LU dan partial pivot:

    21 62 3 = 38 31 2 + 73 = 34 81 + 2 23 = 20

    b) Tentukan matriks invers.

    2. Jika diberikan data:

    x1= 3 f(x1) = 6.5

    x2= 4 f(x2) = 2

    x3= 2,5 f(x3) = 7

    x4= 5 f(x4) = 0

    a) Hitung f(3,4) dengan menggunakan polinom interpolasi Newton orde ke-1 sampai orde ke-3.

    b) Hitung galat yang terjadi pada masing-masing orde dengan menggunakan persamaan berikut:

    [+1, , 1, . . , 0]( 0)( 1) . . ( )

    3. Diketahui data berikut:

    x 1 2 3 5 6

    f(x) 4,75 4 5,25 19,75 36

    Hitung f(3,5) dengan menggunakan metode polynomial lagrange dari orde ke-1 sampai orde ke-3.

    Pilihlah titik-titik awal untuk mendapatkan hasil yang akurat. Apakah hasil yang diperoleh

    menunjukkan adanya hubungan dengan orde polynomial yang digunakan?

    JAWAB:

    1. a) Berikut ditampilkan algoritma dan hasil program untuk mencari dekomposisi LU dan partial pivot

    Partial pivot: /*---------------------------------------Fungsi Partial Pivoting------------------------------------------*/

    void partial_pivoting(int baris, int kolom)

    {

    float temp[5]; //inisialisasi variabel array temp untuk menampung sementara data nilai

    int i, j; //inisialisasi variabel untuk increement

    //i=0 dijalankan jika nilai baris ke 0 kolom ke 0 lebih besar daripada baris ke 1 kolom ke 0 dan baris ke 2 kolom ke 0

    if(nilai[0][0]>nilai[1][0]&&nilai[0][0]>nilai[2][0]) i=0;

    //i=1 dijalankan jika nilai baris ke 1 kolom ke 0 lebih besar daripada baris ke 0 kolom ke 0 dan baris ke 2 kolom ke 0

    else if(nilai[1][0]>nilai[0][0]&&nilai[1][0]>nilai[2][0]) i=1;

    //i=2 dijalankan jika nilai baris ke 2 kolom ke 0 lebih besar daripada baris ke 0 kolom ke 0 dan baris ke 1 kolom ke 0

    else if(nilai[2][0]>nilai[0][0]&&nilai[2][0]>nilai[1][0]) i=2;

    for(j=0;j

  • {

    nilai[0][j]=nilai[0][j]/temp[4]; //partial pivoting, dimana semua baris pertama pada matriks dibagi dengan nilai

    baris ke-0 kolom ke-0

    }

    }

    Dekomposisi LU: /*-------------------------------Fungsi Mencari Akar Persamaan Dengan LU---------------------------------*/

    void proses_LU(int baris, int kolom)

    {

    //inisialisasi variabel dan array untuk temp data

    int l=0, k;

    float x, temp[3];

    char jud;

    /*-------------------------MENCARI MATRIKS U-----------------------------------*/

    temp[0]=nilai[1][0]; //mengcopy nilai yang tersimpan pada nilai[1][0] ke temp[0]

    temp[1]=nilai[2][0]; //mengcopy nilai yang tersimpan pada nilai[2][0] ke temp[1]

    //perulangan untuk menghasilkan nilai 0 pada baris ke 2 kolom ke 0, baris ke 3 kolom ke 0, dan baris ke 3 kolom ke 1

    secara gauss elimination

    for(i=1;i

  • nilai[6][0]=nilai[0][3];

    nilai[6][1]=nilai[1][3]-(nilai[4][0]*nilai[6][0]);

    nilai[6][2]=nilai[2][3]-(nilai[5][0]*nilai[6][0])-(nilai[5][1]*nilai[6][1]);

    /*---------------------MENCETAK NILAI AKAR PERSAMAAN-----------------------------------*/

    nilai[7][2]=nilai[6][2]/nilai[2][2];

    nilai[7][1]=(nilai[6][1]-(nilai[1][2]*nilai[7][2]))/nilai[1][1];

    nilai[7][0]=(nilai[6][0]-(nilai[0][1]*nilai[7][1])-(nilai[0][2]*nilai[7][2]))/nilai[0][0];

    cout

  • Tampilan Hasil Program Dekomposisi LU dan Partial Pivot:

    b) Berikut ditampilkan algoritma dan hasil program untuk mencari matriks invers: void olah_invers_identitas(int l, int m, int kolom)

    {

    float temp[3];

    int r, s;

    /* Proses Pertama--------------------------------------*/

    temp[0]=nilai[m][m];

    for(j=0;j

  • int k, l, m;

    //Membuat matrik identitas

    for(i=0;i

  • }

    //Mencari nilai f(x) dan galat untuk orde ke-2

    b[1]=(((nilai_fx[m]-nilai_fx[l])/(nilai_x[m]-nilai_x[l]))-b[0])/(nilai_x[m]-nilai_x[i]);

    if(orde==2)

    {

    L=nilai_fx[i]+(b[0]*(x-nilai_x[i]))+(b[1]*(x-nilai_x[i])*(x-nilai_x[l]));

    galat=(b[1]*(x-nilai_x[i])*(x-nilai_x[l]));

    }

    //Mencari nilai f(x) dan galat untuk orde ke-3

    k=(((nilai_fx[n]-nilai_fx[m])/(nilai_x[n]-nilai_x[m]))-((nilai_fx[m]-nilai_fx[l])/(nilai_x[m]-

    nilai_x[l])))/(nilai_x[n]-nilai_x[l]);

    b[2]=(k-b[1])/(nilai_x[n]-nilai_x[i]);

    if(orde==3)

    {

    L=nilai_fx[i]+(b[0]*(x-nilai_x[i]))+(b[1]*(x-nilai_x[i])*(x-nilai_x[l]))+(b[2]*(x-nilai_x[i])*(x-

    nilai_x[l])*(x-nilai_x[m]));

    galat=(b[2]*(x-nilai_x[i])*(x-nilai_x[l])*(x-nilai_x[m]));

    }

    cout

  • Tampilan Hasil Program untuk mencari f(3.4) orde ke-1 s/d 3 serta galatnya berdasarkan rumus

    interpolasi newton:

    3. Berikut ditampilkan algoritma polinom interpolasi Lagrange orde ke-1 sampai orde ke-3.

    Interpolasi Lagrange /*-----------------------------Fungsi Proses Lagrange berdasarkan orde ke 1 s/d 3-------------------------*/

    void orde_lagrange(int orde, int i, float x, int p)

    {

    float L=0, p1, p2, p3;

    int l,m,n;

    for(i=p; i

  • Tampilan Hasil Program untuk mencari f(3.5) orde ke-1 s/d 3 berdasarkan rumus interpolasi

    lagrange:

    Input Pilih Menu

    Input Banyaknya Baris Data

    Input data tabel nilai x dan f(x) secara

    berurutan dari terkecil hingga ke besar

    Input nilai yang dicari, misal

    f(3.5)