Saturday, 8 March 2014

MULLER'S METHOD PROGRAM

/*CSEMATTER.BLOGSPOT.IN
PROGRAM TO IMPLEMENT MULLER'S METHOD*/

#include<stdio.h>
#include<conio.h>
#include<math.h>
#define I 2
float Y(float x)
{return cos(x)-x*exp(x);
}
main()
{int i,itr,maxitr;
float x[4],li,di,mu,s,l,doa;
clrscr();
printf("Enter initial approximation");
for(i=I-2;i<3;i++)
{scanf("%f",&x[i]);
}
printf("Enter maxitr & error");
scanf("%d %f",&maxitr,&doa);
for(itr=1;itr<=maxitr;itr++)
{
li=((x[I]-x[I-1])/(x[I-1]-x[I-2]));
di=((x[I]-x[I-2])/(x[I-1]-x[I-2]));
mu=Y(x[I-2])*li*li-Y(x[I-1])*di*di+Y(x[I])*(di+li);
s=sqrt((mu*mu-4*Y(x[I])+di*li*Y(x[I-2])*li-Y(x[I-1])*di+Y(x[I])));
if(mu<0)
l=((2*Y(x[I])*di)/(-mu+s));
else
l=((2*Y(x[I])*di)/(-mu-s));
x[I+1]=x[I]+l*(x[I]-x[I-1]);
if(fabs(x[I+1]-x[I])<doa)
{printf("Solution is %f",x[I+1]);
getch();
exit(0);
}
for(i=I-2;i<3;i++)
x[i]=x[i+1];
}
printf("Solution does not converge");
getch();
}

/* OUTPUT
Enter initial approximation -1 0 1
Enter maxitr & error 10 0.0001
Solution is 0.517823
*/

No comments:

Post a Comment