Anda di halaman 1dari 1

#include <stdio.

h>
#include <math.h>
#define lbound 0
#define ubound 0.8
#define analytic 1.64053333 /*analytical value*/
#define ha 0.05 /*untuk analytical*/

double f(double x)
{
return (0.2+25.0*x-200.0*pow(x,2)+675.0*pow(x,3)-
900.0*pow(x,4)+400.0*pow(x,5));
}

int main()
{
int i,r,nmax=9,n[]={2,3,4,5,6,7,8,9,10};
double xa,ya,h[9],J[9],error[9],x[9],f1[9],f2[9],xp[9],yp[9];
FILE*fp;
fp=fopen("output.csv","w+");
fprintf(fp,"Total Segments(n),Length of Segments (h),Integral Value (I),Error
Compared to Analytical Value(in %%)");
for(i=0;i<nmax;++i){
x[i]=lbound;
h[i]=(ubound-lbound)/n[i];
J[i]=0;
/*ditambahkan 0.000001 karena pada segment n=7, pada tahap terakhir
menyentuh upper bound*/
while (x[i]<=(ubound-h[i]+0.00001)){
f1[i]=f(x[i]);
x[i]+=h[i];
f2[i]=f(x[i]);
J[i]+=h[i]*(f1[i]+f2[i])/2.0;
}
error[i]=100*fabs(analytic-J[i])/analytic; /*dikalikan 100 maksudnya
dikalikan 100%*/
fprintf(fp,"\n%d,%.4lf,%.4lf,%.3lf",n[i],h[i],J[i],error[i]);
}
fprintf(fp,"\nTotal Segments(n),x(i),y(i)"); /*untuk tabel segment 4 & 10*/
for(r=0;r<nmax;++r){
h[r]=(ubound-lbound)/n[r];
if(n[r]==4||n[r]==10){
for(xp[r]=lbound;xp[r]<=(ubound-h[r]+0.00001);xp[r]+=h[r]){
yp[r]=f(xp[r]);
fprintf(fp,"\n%d,%.3lf,%.3lf",n[r],xp[r],yp[r]);
}
}
else
;
}
fprintf(fp,"\n x(Analytical),y(Analytical)"); /*untuk tabel analytical*/
for(xa=lbound;xa<=ubound+0.00001;xa+=ha){
ya=f(xa);
fprintf(fp,"\n%.3lf,%.3lf",xa,ya);
}
fclose(fp);
return 0;
}

Anda mungkin juga menyukai