berikut sintak code dari metode numerik dimana kita mencari interpolasi penaksiran menggunakan interpolasi lagrange untuk coba silakan.
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define MAX 1000
int pil, n;
int i, j;
double fx, x[MAX], y[MAX], p[MAX], xcari, ycari=1,penyebut=1,pembilang=1;
void data();
double feksak(double xcari);
void main()
{
char ulang;
puts("");
puts(" polinomial lagrange");
puts("============================================\n");
data();
while ( ulang != 'T' && ulang != 't')
{
printf("\nMasukan Titik x yang Dicari = ");
scanf("%lf", &xcari);
fflush(stdin);
ycari=0;
for(i=0;i<n;i++)
{
j=0;
while(j<n)
{
if(i==j)
j++;
else
{
penyebut=penyebut*(x[i]-x[j]);
pembilang=pembilang*(xcari-x[j]);
j++;
}
}
ycari=ycari+((y[i]/penyebut)*pembilang);
penyebut=1;
pembilang=1;
}
printf("\nDengan x= %g, didapatkan:\n", xcari);
printf("p%d(%g)\t= %g\n", n-1, xcari,ycari);
printf("f(%g)\t= %g\n", xcari, feksak(xcari));
printf("Error\t= %g\n", fabs(feksak(xcari)-ycari));
printf("Apakah Anda Ingin Mengulang Pencarian X ? [Y / y]=");
scanf("%c",&ulang);
}
puts("\n===================================================");
}
double feksak(double xcari)
{
return cos(xcari);
}
void data()
{
printf("Masukan Derajat Interpolasi = ");
scanf("%d", &n);
fflush(stdin);
n=n+1;
for(i=0;i<n;i++)
{
printf("Masukkan x ke-%d = ", i+1);
scanf("%lf", &x[i]);
y[i]=feksak(x[i]);
fflush(stdin);
}
puts("");
for(i=0;i<n;i++)
printf("(x[%d],y[%d])\t= (\t%1g,\t%g)\n",i+1,i+1, x[i], y[i]);
}
Add Comments