Selasa, 22 Juni 2010

Aplikasi Metode Polinomial Lagrange Dengan Program C++

Program C++ Metode Numerik -
Polinomial Lagrange,


Metode lagrange merupakan salah
satu metode dari polinomial, metode ini menggunakan konsep interpolasi yakni
langsung menentukan nilai suatu titik terhadap titik - titik polinomial tertentu.

Misalkan :














x
f(x)
3.350.298507
3.400.294118
3.50.285714
3.600.277778
Rumus Lagrange





P1 =
(x - b)f(a)

+

(x - a)f(b)

(a - b)
(b - a)
secara umum:













Pn =
(x - b)(x - c) ... (x - k) f(a)

+

(x - a)(x - c) ... (x - k) f(b)

+ ..+

(x - a)(x - c) ... (x - j) f(k)

(a - b)(a - c) ... (a - k)
(b - a)(b - c) ... (b - k)
(k - a)(k - c) ... (k - j)
Dari Soal Diatas misalkan x=3.44 didapat:















P1 =(3.44 - 3.5)(0.298507)
+
(3.44 - 3.4)(0.298507)
=

0.298507

(3.4 - 3.5)
(3.5 - 3.4)

P1Merupakan hasil polinomial lagrang dalam orde 1, jika kita menggunakan order 2maka jumlah titik yang digunakan adalah 3, demikian untuk orde n jumlah titikyang digunakan untuk adalah n+1 untuk menentukan Pn(x) dengan menggunakan metode Lagrange
Dari penjelasandiatas kita dapat membuat metode lagrange yang dimplementasikan pada program C++, berikut penjelasan rincinya:


#include <stdio.h>
#include <iostream.h>
#include <string.h>
#include <conio.h>

float x[100],f[100],xp,penyebut,pembilang,P;
int i,j,k,n,jlh;
char option;

int main() {
FILE *fp; //fp -> Type File

//Jika File data.txt tidak bisa di buka

if(!(fp = fopen("data.txt","r"))) {
fprintf(stdout,"cannot open file\n");
return(0);
}

jlh=0; //jlh = jumlah data

//Perulangan Membaca Data
while(!feof(fp)) {
fscanf(fp,"%f",&x[jlh]);
fscanf(fp,"%*c");
fscanf(fp,"%f", &f[jlh]);
fscanf(fp,"%*c");
jlh++;
}

fclose(fp);

//Menampilkan Data X[i] dan F[i]
cout<<"Jumlah Data = "<<jlh<<endl<<endl;
for(i=0;i<=jlh-1;i++)
{
cout<<" "<<x[i]<<"\t"<<f[i]<<endl;
}

//Memnentukan Nilai Xp yang akan dicari
orde: cout<<"\nnilai xp = ";cin>>xp;
cout<<"Pilhan Order 1 - "<<jlh-1<<" = ";cin>>n;
cout<<endl;

//P di set nol
P=0;
for(i=0;i<=n;i++) //Perulangan untuk penjumlahan berikutnya
{
penyebut=1;pembilang=1;
for(j=0;j<=n;j++) // perulangan untuk menentukan penyebut
{ // dan pembilang
if(x[j]!=x[i]) // selain dari x[i] agar tidak terjadi
{ // pengurangan x[i]- x[j] = 0

pembilang=pembilang*(xp-x[j]);
penyebut=penyebut*(x[i]-x[j]);

}

}

//Hasil penjumlahan P dengan P sebelumnya
P=P+((pembilang/penyebut)*f[i]);
cout<<"Penyebut = "<<pembilang<<endl;
cout<<"Pembilang = "<<penyebut<<endl;
cout<<" P"<<i<<" = "<<P<<endl<<endl;

}

cout<<"Pilih Order lain y/n -> "; cin>>option;
cout<<endl;

if(option=='y')
{
goto orde;
}

}



Penjelasan:

Program Plonomial lagrange ini menggunakan input data dari file txt, dengan nama file data.txt dengan isi file tersebut dengan data sebagai berikut:
3.20 0.312500
3.30 0.303030
3.35 0.298507
3.40 0.294118
3.50 0.285714
3.60 0.277778
3.65 0.273973
3.70 0.270270

Data ini dibaca menggunakankode fopen("data.txt","r") data x dan f(x) di pisahkan oleh "space" sehinggakita bisa mengambil data x sebelum spasi dan f(x) untuk data berikutnya, dengan menggunakan kode fscanf selanjutnya data disimpan dalam data Array x[i] dan f[i], data dibaca perbaris sehingga akan terjadi perulangan disini kita menggunakan kode while hingga semua data terbaca.
setelah data terbaca sekarang kita memasuki program lagrange. variabel yang digunakan adalah P, Pembilang, Penyebutpembilang digunakan untuk melakukan perulangan perkalian pada rumus lagrang (x - a)(x - c) ... (x - k) dan penyebut digunakan untuk melakukan perulangan perkalian pada rumus lagrang (b - a)(b - c) ... (b - k) dari rumus lagrange telihat bahwa tidak ada rmus (a-a) sehingga dari programkita menggunakan kode if(x[j]!=x[i]) tujuannya agar tidak terjadi (x[j]-x[i])=0
Setelah didapat nilai pembilang dan penyebut kita bisa mendapatkan nilai P=P+((pembilang/penyebut)*f[i]); maksudnya: nilai P sebelumnya ditambah dengan nilai P sesudahnya sesuai dengan rumus

















P0


P1=P0+P1
P1 =(x - b)f(a)
+
(x - a)f(b)

(a - b)
(b - a)
Demikian program polinomial lagrange ini, semoga bermanfaat ya..
tetapkunjungi www.julkahendri.co.cc untukdapatkan recomendasi berbagai informasi untuk anda semua.

Artikel Terkait



0 komentar:

Posting Komentar

Anda dapat menggunakan beberapa tag HTML, seperti <b>, <i>, <a>
Penting: Jika anda tidak memiliki account gmail pilih Name/URL pada form ini

Links Free Traffic And BackLink

 
Copyright © JHN-SOFT Poweredby Julka Hendri