Pages

Thursday, November 13, 2014

Numerical Mathematics : False Position code (C Programming )

Sample equation for False position

F(x)=7.50x4+8.5x3-11.5x2+12x1-55.

 //false position  
 #include<stdio.h>  
 #include<math.h>  
 #include<iostream>  
 using namespace std;  
 int main()  
 {  
   float xi,xu,xr,Es,a[40],old=0,Ea;  
   int n,K=1;  
   cout<< "HIghest power in the equation : " ;  
   cin>>n;  
   //.........................................  
   printf("Enter Xi =");  
   scanf("%f",&xi);  
   printf("Enter Xu =");  
   scanf("%f",&xu);  
   printf("Enter Es =");  
   scanf("%f",&Es);  
   //..........................................  
    printf("\n");  
   printf("enter coefficient :\n");  
   for (int i=n; i>=0; i--)  
   {  
     printf("X^%d =",i);  
     scanf("%f",&a[i]);  
   }  
    printf("\n");  
   //...........................................  
   while(1)  
   {  
     float fxi=0,fxu=0,fxr=0;  
 //  
     for (int i=n; i>=0; i--)  
     {  
        fxi=fxi+a[i]*pow(xi,i);  
        fxu=fxu+a[i]*pow(xu,i);  
     }  
     xr=xu-((fxu*(xi-xu))/(fxi-fxu));  
     for (int i=n; i>=0; i--)  
     {  
       fxr=fxr+a[i]*pow(xr,i);  
     }  
  printf("\n\n\nSTEP no: %d\n",K);  
     printf("Xi  = %.2f",xi);  
     printf("\nfxi = %.2f",fxi);  
 //  
     printf("\nXu  = %.2f",xu);  
     printf("\nfxu = %.2f",fxu);  
 //  
     printf("\nXr  = %.2f",xr);  
     printf("\nfxr = %.2f",fxr);  
 //  
     Ea=((xr-old)/xr)*100;  
     old = xr;  
     //cout <<" now =" <<old;  
     if(Ea<0)  
     {  
       Ea=Ea*(-1);  
     }  
     printf("\nEa= %f",Ea);  
     if(fxr == 0)  
     {  
       break ;  
     }  
     if((fxr*fxu)<0)  
     {  
       xi=xr;  
       printf("\n\n xI = %f\n\n",xi);  
     }  
     else if ((fxr*fxi)<0)  
     {  
       xu=xr;  
       printf("\n\n Xu =%f\n\n",xu);  
     }  
     if(Ea<Es)  
     {  
       break;  
     }  
     K++;  
   }  
   return 0;  
 }  


No comments:

Post a Comment