Wednesday, October 1, 2014

Implement the cubic spline using c programming.

Code:
#include
#include
#include
int main()
{
    char choice='y';
    int n,i,j,k;
    float h[10],a,b,c,d,sum,s[10]={0},x[10],F[10],f[10],p,m[10][10]={0},temp;
    clrscr();
    cout<<"No of samples ? ";cin>>n;
    cout<<"enter all sample points: "<
    for(i=0;i
    cin>>x[i]>>f[i];

    for(i=n-1;i>0;i--)
    {
        F[i]=(f[i]-f[i-1])/(x[i]-x[i-1]);
        h[i-1]=x[i]-x[i-1];
    }
for(i=1;i
    {
    m[i][i]=2*(h[i-1]+h[i]);
    if(i!=1)
    {
        m[i][i-1]=h[i-1];
        m[i-1][i]=h[i-1];
    }
    m[i][n-1]=6*(F[i+1]-F[i]);
    }
for(i=1;i
    {
        temp=(m[i+1][i]/m[i][i]);
        for(j=1;j<=n-1;j++)
            m[i+1][j]-=temp*m[i][j];
    }
for(i=n-2;i>0;i--)
    {
        sum=0;
        for(j=i;j<=n-2;j++)
            sum+=m[i][j]*s[j];
        s[i]=(m[i][n-1]-sum)/m[i][i];
    }
    while(choice=='y')
    {
        cout<>p;
        for(i=0;i
            if(x[i]<=p&&p<=x[i+1])
            {
            a=(s[i+1]-s[i])/(6*h[i]);
            b=s[i]/2;
            c=(f[i+1]-f[i])/h[i]-(2*h[i]*s[i]+s[i+1]*h[i])/6;
            d=f[i];
            sum=a*pow((p-x[i]),3)+b*pow((p-x[i]),2)+c*(p-x[i])+d;
            }
        cout<<"coefficients of sub interval : "<
        cout<
        cout<<"wanna continue (y/n) ? ";cin>>choice;
    }
    getch();
    return 0;

}

No comments:

Post a Comment