Lagrange's Interpolation
#include<iostream.h>
#include<math.h>
#include<conio.h>
#define MAX 10
void main()
{ clrscr();
int n, i, j;
float x[MAX], f[MAX], fp, lf, sum, xp;
cout<<"input no. of data points:"<<endl;
cin>>n;
cout<<"input values of x and fx"<<endl;
cout<<"one set on each line"<<endl;
for(i=1; i<=n; i++)
cin>>x[i]>>f[i];
cout<<"input x where the interpolation is required:"<<endl;
cin>>xp;
sum=0.0;
for(i=1; i<=n; i++)
{ lf=1.0;
for(j=1; j<=n; j++)
{ if(i!=j)
lf=lf*(xp-x[j])/(x[i]-x[j]);
}
sum= sum+lf*f[i];
}
fp= sum;
cout<<" LAGRANGIAN INTERPOLATION "<<endl;
cout<<"interpolated function value:"<<endl;
cout<<"at x= "<<xp<<" it is "<<fp<<endl;
getch();
}
Newton’s Interpolation
#include<iostream.h>
#include<conio.h>
void main()
{ clrscr();
int i, j, n;
float xp, fp, sum, pi, x[10], f[10], a[10], d[10][10];
cout<<"input numbers of data points:"<<endl;
cin>>n;
cout<<"Input values of x and fx"<<endl;
cout<<"one set on each line"<<endl;
for(i=1; i<=n; i++)
cin>>x[i]>>f[i];
for(i=1; i<=n; i++)
d[i][1]=f[i];
for(j=2; j<=n; j++)
for(i=1; i<=n-j+1; i++)
d[i][j]=(d[i+1][j-1]-d[i][j-1])/(x[i+j-1]-x[i]);
for(j=1; j<=n; j++)
a[j]=d[1][j];
cout<<"enter xp where interpolation is required:"<<endl;
cin>>xp; csitnepal
Source: www.csitnepal.com Page 19
sum=a[1];
for(i=2; i<=n; i++)
{ pi =1.0;
for(j=1; j<=i-1; j++)
pi=pi*(xp-x[j]);
sum=sum+a[i]*pi;
}
fp=sum;
cout<<"NEWTON's INTERPOLATION"<<endl;
cout<<"***********************"<<endl;
cout<<endl;
cout<<"interpolation values"<<endl;
cout<<"at x="<<xp<<" it is"<<fp<<endl;
getch();
}
Fitting a straight line
#include<iostream.h>
#include<conio.h>
#include<math.h>
#define MAX 10
#define EPS 0.000001
void main()
{ clrscr();
int i, n;
float x[10], y[10];
float sumx, sumy, sumxx, sumxy, xmean, ymean;
float denom;
float a,b;
cout<<"LINEAR REGRESSION METHOD"<<endl;
cout<<endl;
cout<<"input the no. of data points:"<<endl;
cin>>n;
cout<<"input x and y values"<<endl;
cout<<"one set on each line:"<<endl;
for(i=1; i<=n; i++)
cin>>x[i]>>y[i];
sumx=0.0; csitnepal
Source: www.csitnepal.com Page 22
sumy=0.0;
sumxx=0.0;
sumxy=0.0;
for(i=1; i<=n; i++)
{ sumx=sumx+ x[i];
sumy=sumy+ y[i];
sumxx=sumxx+ x[i]*x[i];
sumxy= sumxy+ x[i]*y[i];
}
xmean=sumx/n;
ymean=sumy/n;
denom=n*sumxx-sumx*sumx;
if(fabs(denom)>EPS)
{ b=(n*sumxy-sumx*sumy)/denom;
a=ymean-b*xmean;
cout<<"linear regression line y=a+bx"<<endl;
cout<<"the coefficients are:"<<endl;
cout<<"a= "<<a<<endl;
cout<<"b= "<<b<<endl;
}
else
cout<<"NO SOLUTION"<<endl;
getch();
}
Differentiation using newton's interpolating polynomial
#include<iostream.h>
#include<conio.h>
#include<math.h>
void main()
{ int i, j, k, n;
float x[10], f[10], a[10], d[10][10], xp, dif, sum, p;
clrscr();
cout<<"NUMERICAL DIFFERENTIATION USING NEWTON's POLYNOMIAL"<<endl;
cout<<"input no. of data points:"<<endl;
cin>>n;
cout<<"input values of x and f(x)"<<endl;
cout<<"one set on each line"<<endl;
for(i=1; i<=n; i++)
cin>>x[i]>>f[i];
for(i=1; i<=n; i++)
d[i][1] = f[i];
for(j=2; j<=n; j++)
for(i=1; i<=n-j+1; i++)
d[i][j]=(d[i+1][j-1]-d[i][j-1])/(x[i+j-1]-x[i]);
for(j=1; j<=n; j++)
a[j]=d[1][j];
cout<<"input xp where derivative is required:"<<endl;
cin>>xp;
dif =a[2];
for(k=3; k<=n; k++)
{ sum= 0.0;
for(i=1; i<=k-1; i++)
{ p= 1.0;
for(j=1; j<=k-1; j++)
{ if (i==j)
continue;
p= p*(xp-x[j]);
}
sum= sum+p;
}
dif=dif+a[k]*sum;
}
cout<<"derivative at x= "<<xp<<" is "<<dif<<endl;
getch();
}
No comments:
Post a Comment