#include<stdio.h>
#include<conio.h>
#include<math.h>
#define MAX 10
void slm(FILE *);
void expcurve(FILE *);
void geocurve(FILE *);
void hyperbola(FILE *);
void polynomial(FILE *);
void main()
{
FILE *fp;
int i,choice,number;
float xvalue[MAX],yvalue[MAX];
fp=fopen("curfitt.dat","w");
clrscr();
printf("\n\n");
fprintf(fp,"\n\n");
printf("MAIN MENU ");
fprintf(fp,"MAIN MENU ");
printf("\n\n");
fprintf(fp,"\n\n");
printf("\n1.Fitting a Straight line ");
fprintf(fp,"\n1.Fitting a Straight line ");
printf("\n2.Fitting a Exponential curve ");
fprintf(fp,"\n2.Fitting a Exponential curve ");
printf("\n3.Fitting a Geometric curve ");
fprintf(fp,"\n3.Fitting a Geometric curve ");
printf("\n4.Fitting a Hyperbola ");
fprintf(fp,"\n4.Fitting a Hyperbola ");
printf("\n5.Fitting a Polynomial ");
fprintf(fp,"\n5.Fitting a Polynomial ");
printf("\n6.Exit ");
fprintf(fp,"\n6.Exit ");
printf("\n\n");
fprintf(fp,"\n\n");
printf("\nEnter your choice : ");
fprintf(fp,"\nEnter your choice : ");
scanf("%d",&choice);
fprintf(fp,"%d",choice);
switch(choice)
{
case 1 : slm(fp);
break;
case 2 : expcurve(fp);
break;
case 3 : geocurve(fp);
break;
case 4 : hyperbola(fp);
break;
case 5 : polynomial(fp);
break;
case 6 : exit(1);
break;
}
fclose(fp);
getch();
}
void slm(FILE *fp)
{
int i,number;
float sumx=0,sumy=0,xvalue[MAX],yvalue[MAX];
float productxy[MAX],sumxy=0,square[MAX],sumx2=0;
float denominator,a,b;
printf("\n\n");
fprintf(fp,"\n\n");
printf("Enter how many values you want for (x,y) : ");
fprintf(fp,"Enter how many values you want for (x,y) : ");
scanf("%d",&number);
fprintf(fp,"%d",number);
for(i=0;i<number;i++)
{
printf("\nEnter value for x(%d) : ",i);
fprintf(fp,"\nEnter value for x(%d) : ",i);
scanf("%f",&xvalue[i]);
fprintf(fp,"%f",xvalue[i]);
}
printf("\n\n");
fprintf(fp,"\n\n");
for(i=0;i<number;i++)
{
printf("\nEnter value for y(%d) : ",i);
fprintf(fp,"\nEnter value for y(%d) : ",i);
scanf("%f",&yvalue[i]);
fprintf(fp,"%f",yvalue[i]);
}
for(i=0;i<number;i++)
{
sumx=sumx+xvalue[i];
}
for(i=0;i<number;i++)
{
sumy=sumy+yvalue[i];
}
for(i=0;i<number;i++)
{
productxy[i]=xvalue[i]*yvalue[i];
sumxy=sumxy+productxy[i];
}
for(i=0;i<number;i++)
{
square[i]=xvalue[i]*xvalue[i];
sumx2=sumx2+square[i];
}
clrscr();
printf("\n\n");
fprintf(fp,"\n\n");
printf("STRAIGHT LINE MEHTOD ");
fprintf(fp,"STRAIGHT LINE MEHTOD ");
printf("\n\n");
fprintf(fp,"\n\n");
printf(" x y Ex2 Exy ");
fprintf(fp," x y Ex2 Exy ");
printf("\n\n");
fprintf(fp,"\n\n");
for(i=0;i<number;i++)
{
printf( "%0.2f %0.2f %.2f %.2f ",xvalue[i],yvalue[i],square[i],productxy[i]);
fprintf(fp, "%0.2f %0.2f %.2f %.2f ",xvalue[i],yvalue[i],square[i],productxy[i]);
printf("\n");
fprintf(fp,"\n");
}
denominator=(number*sumx2)-(sumx*sumx);
a=(sumy*sumx2)-(sumx*sumxy)/denominator;
b=((number*sumxy)-(sumx*sumy))/denominator;
printf("\n\n");
fprintf(fp,"\n\n");
printf("The equation is : ");
fprintf(fp,"The equation is : ");
printf(" y = %.2fx + %.2f ",b,a);
fprintf(fp," y = %.2fx + %.2f ",b,a);
}
void expcurve(FILE *fp)
{
int i,number;
float xvalue[MAX],yvalue[MAX],sumx=0,sumlogy=0;
float productxlogy[MAX],sumxlogy=0,square[MAX],sumx2=0;
float denominator,a,b,c;
printf("\n\n");
fprintf(fp,"\n\n");
printf("Enter how many values you want for (x,y) : ");
fprintf(fp,"Enter how many values you want for (x,y) : ");
scanf("%d",&number);
fprintf(fp,"%d",number);
for(i=0;i<number;i++)
{
printf("\nEnter value for x(%d) : ",i);
fprintf(fp,"\nEnter value for x(%d) : ",i);
scanf("%f",&xvalue[i]);
fprintf(fp,"%f",xvalue[i]);
}
printf("\n\n");
fprintf(fp,"\n\n");
for(i=0;i<number;i++)
{
printf("\nEnter value for y(%d) : ",i);
fprintf(fp,"\nEnter value for y(%d) : ",i);
scanf("%f",&yvalue[i]);
fprintf(fp,"%f",yvalue[i]);
}
for(i=0;i<number;i++)
{
sumx=sumx+xvalue[i];
}
for(i=0;i<number;i++)
{
sumlogy=sumlogy+log(yvalue[i]);
}
printf("\nsumlogy=%.4f ",sumlogy);
for(i=0;i<number;i++)
{
productxlogy[i]=xvalue[i]*log(yvalue[i]);
sumxlogy=sumxlogy+productxlogy[i];
}
printf("\n%.4f ",sumxlogy);
for(i=0;i<number;i++)
{
square[i]=xvalue[i]*xvalue[i];
sumx2=sumx2+square[i];
}
clrscr();
printf("\n\n");
fprintf(fp,"\n\n");
printf("EXPONENTIAL CURVE MEHTOD ");
fprintf(fp,"EXPONENTIAL CURVE MEHTOD ");
printf("\n\n");
fprintf(fp,"\n\n");
printf(" x y Ex2 Exlogy ");
fprintf(fp," x y Ex2 Exlogy ");
printf("\n\n");
fprintf(fp,"\n\n");
for(i=0;i<number;i++)
{
printf( "%0.2f %0.2f %.2f %.2f ",xvalue[i],yvalue[i],square[i],productxlogy[i]);
fprintf(fp, "%0.2f %0.2f %.2f %.2f ",xvalue[i],yvalue[i],square[i],productxlogy[i]);
printf("\n");
fprintf(fp,"\n");
}
denominator=(number*sumx2)-(sumx*sumx);
c=((sumlogy*sumx2)-(sumx*sumxlogy))/denominator;
b=((number*sumxlogy)-(sumx*sumlogy))/denominator;
a=exp(c);
printf("\n\n");
fprintf(fp,"\n\n");
printf("The equation is : ");
fprintf(fp,"The equation is : ");
printf(" y = %.4fe^%.4fx ",a,b);
fprintf(fp," y = %.4fe^%.4fx ",a,b);
}
void geocurve(FILE *fp)
{
int i,number;
float sumlogx=0,sumlogy=0,xvalue[MAX],yvalue[MAX];
float productlogxlogy[MAX],sumlogxlogy=0,square[MAX],sumlogx2=0;
float denominator,a,b,c;
printf("\n\n");
fprintf(fp,"\n\n");
printf("Enter how many values you want for (x,y) : ");
fprintf(fp,"Enter how many values you want for (x,y) : ");
scanf("%d",&number);
fprintf(fp,"%d",number);
for(i=0;i<number;i++)
{
printf("\nEnter value for x(%d) : ",i);
fprintf(fp,"\nEnter value for x(%d) : ",i);
scanf("%f",&xvalue[i]);
fprintf(fp,"%f",xvalue[i]);
}
printf("\n\n");
fprintf(fp,"\n\n");
for(i=0;i<number;i++)
{
printf("\nEnter value for y(%d) : ",i);
fprintf(fp,"\nEnter value for y(%d) : ",i);
scanf("%f",&yvalue[i]);
fprintf(fp,"%f",yvalue[i]);
}
for(i=0;i<number;i++)
{
sumlogx=sumlogx+log(xvalue[i]);
}
for(i=0;i<number;i++)
{
sumlogy=sumlogy+log(yvalue[i]);
}
for(i=0;i<number;i++)
{
productlogxlogy[i]=log(xvalue[i])*log(yvalue[i]);
sumlogxlogy=sumlogxlogy+productlogxlogy[i];
}
for(i=0;i<number;i++)
{
square[i]=log(xvalue[i])*log(xvalue[i]);
sumlogx2=sumlogx2+square[i];
}
clrscr();
printf("\n\n");
fprintf(fp,"\n\n");
printf("GEOMETRIC CURVE MEHTOD ");
fprintf(fp,"GEOMETRIC CURVE MEHTOD ");
printf("\n\n");
fprintf(fp,"\n\n");
printf(" x y Elogx2 Elogxlogy ");
fprintf(fp," x y Elogx2 Elogxlogy ");
printf("\n\n");
fprintf(fp,"\n\n");
for(i=0;i<number;i++)
{
printf( "%0.2f %0.2f %.2f %.2f ",xvalue[i],yvalue[i],square[i],productlogxlogy[i]);
fprintf(fp, "%0.2f %0.2f %.2f %.2f ",xvalue[i],yvalue[i],square[i],productlogxlogy[i]);
printf("\n");
fprintf(fp,"\n");
}
denominator=(number*sumlogx2)-(sumlogx*sumlogx);
c=((sumlogy*sumlogx2)-(sumlogx*sumlogxlogy))/denominator;
b=((number*sumlogxlogy)-(sumlogx*sumlogy))/denominator;
a=exp(c);
printf("\n\n");
fprintf(fp,"\n\n");
printf("The equation is : ");
fprintf(fp,"The equation is : ");
printf(" y = %.2fx^%.2f ",a,b);
fprintf(fp," y = %.2fx^%.2f ",a,b);
}
void hyperbola(FILE *fp)
{
int i,number;
float denominator,a,b,xvalue[MAX],yvalue[MAX];
float sumx=0,square[MAX],sumx2=0,denomy[MAX],sumdenomy=0;
float productxy[MAX],sumxy=0;
printf("\n\n");
fprintf(fp,"\n\n");
printf("Enter how many values you want for (x,y) : ");
fprintf(fp,"Enter how many values you want for (x,y) : ");
scanf("%d",&number);
fprintf(fp,"%d",number);
for(i=0;i<number;i++)
{
printf("\nEnter value for x(%d) : ",i);
fprintf(fp ,"\nEnter value for x(%d) : ",i);
scanf("%f",&xvalue[i]);
fprintf(fp,"%f",xvalue[i]);
}
printf("\n\n");
fprintf(fp,"\n\n");
for(i=0;i<number;i++)
{
printf("\nEnter value for y(%d) : ",i);
fprintf(fp,"\nEnter value for y(%d) : ",i);
scanf("%f",&yvalue[i]);
fprintf(fp,"%f",yvalue[i]);
}
for(i=0;i<number;i++)
{
sumx=sumx+xvalue[i];
}
for(i=0;i<number;i++)
{
square[i]=xvalue[i]*xvalue[i];
sumx2=sumx2+square[i];
}
for(i=0;i<number;i++)
{
denomy[i]=1/yvalue[i];
sumdenomy=sumdenomy+denomy[i];
}
for(i=0;i<number;i++)
{
productxy[i]=xvalue[i]*denomy[i];
sumxy=sumxy+productxy[i];
}
clrscr();
printf("\n\n");
fprintf(fp,"\n\n");
printf("HYPERBOLA CURVE MEHTOD ");
fprintf(fp,"HYPERBOLA CURVE MEHTOD ");
printf("\n\n");
printf(" x y Elogx2 Elogx/y ");
fprintf(fp," x y Elogx2 Elogx/y ");
printf("\n\n");
fprintf(fp,"\n\n");
for(i=0;i<number;i++)
{
printf( "%0.2f %0.2f %.2f %.2f ",xvalue[i],yvalue[i],square[i],productxy[i]);
fprintf(fp, "%0.2f %0.2f %.2f %.2f ",xvalue[i],yvalue[i],square[i],productxy[i]);
printf("\n");
fprintf(fp,"\n");
}
denominator=(number*sumx2)-(sumx*sumx);
b=((number*sumxy)-(sumx*sumdenomy))/denominator;
a=((sumdenomy*sumx2)-(sumx*sumxy))/denominator;
printf("\n\n");
fprintf(fp,"\n\n");
printf("The equation is ");
fprintf(fp,"The equation is ");
printf(" y = 1/( %.3f + %.3fx ) ",a,b);
fprintf(fp," y = 1/( %.3f + %.3fx ) ",a,b);
}
void polynomial(FILE *fp)
{
int degree,i,j,k,l,number;
float z[MAX][MAX+1],a[MAX];
float temp,sum;
float denominator,b,xvalue[MAX],yvalue[MAX];
printf("\n\n");
fprintf(fp,"\n\n");
printf("Enter how many values you want for (x,y) : ");
fprintf(fp,"Enter how many values you want for (x,y) : ");
scanf("%d",&number);
fprintf(fp,"%d",number);
for(i=0;i<number;i++)
{
printf("\nEnter value for x(%d) : ",i);
fprintf(fp,"\nEnter value for x(%d) : ",i);
scanf("%f",&xvalue[i]);
fprintf(fp,"%f",xvalue[i]);
}
printf("\n\n");
fprintf(fp,"\n\n");
for(i=0;i<number;i++)
{
printf("\nEnter value for y(%d) : ",i);
fprintf(fp,"\nEnter value for y(%d) : ",i);
scanf("%f",&yvalue[i]);
fprintf(fp,"%f",yvalue[i]);
}
printf("\nEnter the highest degree of the polynomial :");
fprintf(fp,"\nEnter the highest degree of the polynomial :");
scanf("%d",°ree);
fprintf(fp,"%f",degree);
for(i=0;i<=degree;i++)
{
for(j=0;j<=degree;j++)
{
z[i][j]=0;
for(k=0;k<number;k++)
{
if(i==0 && j==0)
{
z[i][j]=0;
break;
}
elseif (j==degree+1)
z[i][j]=z[i][j]+pow(xvalue[k],i)*yvalue[k];
else
z[i][j]=z[i][j]+pow(xvalue[k],j+1);
}
printf("\nz[%d][%d]=%.3f",i,j,z[i][j]);
fprintf(fp,"\nz[%d][%d]=%.3f",i,j,z[i][j]);
}
}
for(j=0;j<degree;j++)
{
for(i=j+1;i<=degree;i++)
{
temp=z[i][j]/z[j][j];
for(k=j;k<=degree;k++)
{
z[i][k]=z[i][k]-(temp*z[j][k]);
}
}
}
a[degree]=z[degree][degree+1]/z[degree][degree];
for(i=degree-1;i>=0;i--)
{
sum=0;
for(j=i+1;j<=degree;j++)
{
sum=sum+(z[i][j]*a[j]);
}
a[i]=(z[i][degree+1]-sum)/z[i][i];
printf("%.3f",a[i]);
fprintf(fp,"%.3f",a[i]);
if(i!=0)
{
printf("* X^%d + ",i);
fprintf(fp,"* X^%d + ",i);
}
}
printf("\n\n");
fprintf(fp,"\n\n");
}