You are on page 1of 11

18/1/2011

1. BISECTION METHOD

#include<iostream>
#include<conio.h>
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
using namespace std;
class algebraic_polynomial
{
float x,f,k;
int n,i;
float A[10],X[10],F[10];
public:
void getdata(void);
float polynomial(float x);
};
void algebraic_polynomial::getdata()
{
for(i=0;i<10;i++)
{
A[i]=0;
X[i]=1;
F[i]=0;
}
cout<<"\n enter the degree of polynomial such that 0<=degree<=9: ";
cin>>n;
for(i=0;i<n+1;i++)
{
cout<<"\n enter the coefficient of x^"<<i<<": ";
cin>>A[i];
}
cout<<"\n required polynomial is: "<<endl;
for (i=0;i<n;i++)
{
cout<<"("<<A[i]<<" * x^"<<i<<") + ";
}
cout<<"("<<A[n]<<" * x^"<<n<<")"<<endl;
}
float algebraic_polynomial::polynomial(float x)
{
f=0;
k=x;

VIPUL GUPTA
2k8/EE/889

for (i=0;i<n+1;i++)
{
X[i]=1;
}
for (i=1;i<n+1;i++)
{
X[i]=X[i-1]*k;
}
for (i=0;i<n+1;i++)
{
F[i]=A[i]*X[i];
}
for (i=0;i<n+1;i++)
{
f=f+F[i];
}
cout<<"\n value of polynomial("<<k<<") is: "<<f<<endl;
return f;
}
float mod_poly(float z)
{
float m,p;
p=z;
if(p>=0){m=p;}
else if(p<0){m=(-1)*p;}
return m;
}
int main(void)
{
float a,b,c,A,B,C;
algebraic_polynomial P;
P.getdata();
cout<<"\n enter the value of a: ";
cin>>a;
cout<<"\n enter the value of b: ";
cin>>b;
A=P.polynomial(a);
B=P.polynomial(b);
if (A*B>0)
{

cout<<"\n Please enter appropriate values of a and b."<<endl;


}
else if(A*B==0)
{
if(A==0)
{cout<<"\n"<<a<<" is a root of the polynomial."<<endl;}
if(B==0)
{cout<<"\n"<<b<<" is a root of the polynomial."<<endl;}
}
else if(A*B<0)
{
do
{
c=(a+b)/2;
cout<<"\n value of c is: "<<c;
C=P.polynomial(c);
if(A*C<0)
{b=c;}
else if(C*B<0)
{a=c;}
}while(mod_poly(C)>0.0001);
cout<<"\n approximate root of the polynomial is: "<<c<<endl;
}
system("pause");
return 0;
}

8/2/2011

2. NEWTON RAPHSON METHOD

#include<iostream>
#include<conio.h>
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
using namespace std;
class algebraic_polynomial
{
float x,f,k,g;
int n,i;
float A[10],X[10],F[10],D[10],G[10];
public:
void getdata(void);
float polynomial(float x);
float derivative(float x);
};
void algebraic_polynomial::getdata()
{
for(i=0;i<10;i++)
{
A[i]=0;
X[i]=1;
F[i]=0;
D[i]=0;
}
cout<<"\n enter the degree of polynomial such that 0<=degree<=9: ";
cin>>n;
for(i=0;i<n+1;i++)
{
cout<<"\n enter the coefficient of x^"<<i<<": ";
cin>>A[i];
D[i]=i*A[i];
}
cout<<"\n required polynomial is: "<<endl;
for (i=0;i<n;i++)
{
cout<<"("<<A[i]<<" * x^"<<i<<") + ";
}
cout<<"("<<A[n]<<" * x^"<<n<<")"<<endl;
cout<<"\n derivative of the polynomial is: "<<endl;

VIPUL GUPTA
2k8/EE/889

for (i=1;i<n;i++)
{
cout<<"("<<D[i]<<" * x^"<<i-1<<") + ";
}
cout<<"("<<D[n]<<" * x^"<<n-1<<")"<<endl;
}
float algebraic_polynomial::polynomial(float x)
{
f=0;
k=x;
for (i=0;i<n+1;i++)
{
X[i]=1;
}
for (i=1;i<n+1;i++)
{
X[i]=X[i-1]*k;
}
for (i=0;i<n+1;i++)
{
F[i]=A[i]*X[i];
}
for (i=0;i<n+1;i++)
{
f=f+F[i];
}
cout<<"\n value of polynomial("<<k<<") is: "<<f;
return f;
}
float algebraic_polynomial::derivative(float x)
{
g=0;
k=x;
for (i=0;i<n+1;i++)
{
X[i]=1;
}
for (i=2;i<n+1;i++)
{

X[i]=X[i-1]*k;
}
for (i=0;i<n+1;i++)
{
G[i]=D[i]*X[i];
}
for (i=0;i<n+1;i++)
{
g=g+G[i];
}
cout<<"\n value of derivative("<<k<<") is: "<<g<<endl;
return g;
}
float mod_poly(float z)
{
float m,p;
p=z;
if(p>=0){m=p;}
else if(p<0){m=(-1)*p;}
return m;
}
int main(void)
{
float x,h,N,D;
algebraic_polynomial P;
P.getdata();
cout<<"\n enter the value of expected root: ";
cin>>x;
do
{
N=P.polynomial(x);
D=P.derivative(x);
if(D!=0)
{
h=(-N)/D;
cout<<"\n value of increment h is: "<<h;
x=x+h;
cout<<"\n incremented value of x is: "<<x;
}
else if(D==0)
{
cout<<"\n Please enter appropriate value of expected root.";
break;

}
}while(mod_poly(N)>0.0001);
if(D!=0)
{cout<<"\n approximate value of the root is: "<<x<<endl;}
else if(D==0)
{cout<<"\n ERROR!! derivative tends towards zero"<<endl;}
system("pause");
return 0;
}

15/3/2011

3. GAUSS ELIMINATION METHOD

VIPUL GUPTA
2k8/EE/889

#include<iostream>
#include<conio.h>
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
using namespace std;
class linear_equation
{
float x,y,z;
float A[3][3],B[3],M[3][4];
int i,j;
public:
void getdata(void);
void processdata(void);
};
void linear_equation::getdata()
{
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
cout<<"\n enter the value of A["<<i<<"]["<<j<<"] : ";
cin>>A[i][j];
}
}
for(i=0;i<3;i++)
{
cout<<"\n enter the value of B["<<i<<"] : ";
cin>>B[i];
}
cout<<"\n linear equations under consideration are: "<<endl;
cout<<A[0][0]<<"x + "<<A[0][1]<<"y + "<<A[0][2]<<"z = "<<B[0]<<endl;
cout<<A[1][0]<<"x + "<<A[1][1]<<"y + "<<A[1][2]<<"z = "<<B[1]<<endl;
cout<<A[2][0]<<"x + "<<A[2][1]<<"y + "<<A[2][2]<<"z = "<<B[2]<<endl;
}
void linear_equation::processdata()
{
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
if(j<3)

{M[i][j]=A[i][j];}
else if(j=3)
{M[i][j]=B[i];}
}
}
cout<<"\n the augmented matrix is: "<<endl;
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
cout<<M[i][j]<<" ";
}
cout<<endl;
}
if(M[0][0]==0)
{cout<<"Sorry, system encountered an error!!"<<endl;}
else
{
float a=M[1][0]/M[0][0];
float b=M[2][0]/M[0][0];
for(j=0;j<4;j++)
{
M[1][j]=M[1][j]-(a*M[0][j]);
M[2][j]=M[2][j]-(b*M[0][j]);
}
cout<<"\n augmented matrix after operation #1 is: "<<endl;
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
cout<<M[i][j]<<" ";
}
cout<<endl;
}
if(M[1][1]==0)
{cout<<"Sorry, system encountered an error!!"<<endl;}
else
{
float c=M[2][1]/M[1][1];
for(j=0;j<4;j++)
{
M[2][j]=M[2][j]-(c*M[1][j]);
}
cout<<"augmented matrix after operation #2 is: "<<endl;
for(i=0;i<3;i++)
{

for(j=0;j<4;j++)
{
cout<<M[i][j]<<" ";
}
cout<<endl;
}
}
if(M[2][2]==0)
{cout<<"Sorry, system encountered an error!!"<<endl;}
else
{
z=M[2][3]/M[2][2];
y=(M[1][3]-(M[1][2]*z))/M[1][1];
x=(M[0][3]-(M[0][2]*z)-(M[0][1]*y))/M[0][0];
cout<<"Solution of the equations is: "<<endl;
cout<<"x = "<<x<<" y = "<<y<<" z = "<<z<<endl;
}
}
}
int main()
{
linear_equation L;
L.getdata();
L.processdata();
system("pause");
return 0;
}

10

11

You might also like