Secant Method
Algorithm : Secant Method Secant(a,b) { Let us consider a function f(x)=0.This algorithm finds a root of f(x)=0 between a and b. error=10-6 if(f(a)*f(b)>0) //f(a) is a function { which returns the value of f(x) at x=a print “Root not lie between [a,b]” } else { p0=a p1=b p2=pi-f(p1)*(p1-p0)/(f(p1)-f(p0)) do { p0=p1 p1=p2 p2=pi-f(p1)*(p1-p0)/(f(p1)-f(p0)) } while(|p1-p2|<error) print “p2” } } C Program For Secant Method Source Code: #include<stdio.h> #include<conio.h> #include<math.h> void secant(float,float); float f(float); void main() { int i; clrscr(); printf("\nThe equation is : x^3-9x+1=0\n"); for(i=-32768;i<32767;i++) { if(f(i)*f(i+1)<0) secant(i,i+1); } getch(); } void secant(float m,float n) { float error,c,a,b; error=0.000001; a=m; b=n; c=b-((f(b)*(b-a))/(f(b)-f(a))); printf("a f(a) b f(b) c "); printf("\n-----------------------------------------------------------"); do { a=b; b=c; c=b-((f(b)*(b-a))/(f(b)-f(a))); printf("\n%f %f %f %f %f",a,f(a),b,f(b),c); }while(fabs(b-c)>error); printf("\nThe root is %f\n",c); } float f(float x) { return (x*x*x-9*x+1); } OUTPUT : The equation is : x^3-9x+1=0 a f(a) b f(b) c ----------------------------------------------------------- -3.000000 1.000000 -3.035714 0.345616 -3.054577 -3.035714 0.345616 -3.054577 -0.009359 -3.054080 -3.054577 -0.009359 -3.054080 0.000084 -3.054084 -3.054080 0.000084 -3.054084 -0.000002 -3.054084 The root is -3.054084 a f(a) b f(b) c ----------------------------------------------------------- 1.000000 -7.000000 0.125000 -0.123047 0.109344 0.125000 -0.123047 0.109344 0.017212 0.111265 0.109344 0.017212 0.111265 -0.000009 0.111264 0.111265 -0.000009 0.111264 0.000000 0.111264 The root is 0.111264 a f(a) b f(b) c ----------------------------------------------------------- 3.000000 1.000000 2.900000 -0.710998 2.941555 2.900000 -0.710998 2.941555 -0.021475 2.942849 2.941555 -0.021475 2.942849 0.000486 2.942820 2.942849 0.000486 2.942820 0.000000 2.942820 The root is 2.942820
Tags:
Non Linear
0 comments