Regula Falsi Method
Algorithm : Regula-Falsi Method Regula_falsi(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 { c=a+((|f(a)|/(f(a)+f(b)))*(b-a)) do { fc=f(c) fa=f(a) fb=f(b) if(fc=0) { print “The root is c” return } else { if(fc<0) { if(fa<0) a=c else b=c } else if(fc>0) { if(fa>0) a=c else b=c } cprev=c c= a+((|f(a)|/(f(a)+f(b)))*(b-a)) } } while(|cprev-c|>error) print “The root is c” } } C Program For Regula Falsi Method Source Code: #include<stdio.h> #include<conio.h> #include<math.h> void regula(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) regula(i,i+1); } getch(); } void regula(float a,float b) { float error,c,Cprev,FA,FB,FC; error=0.000001; printf("a f(a) b f(b) c f(c) "); printf("\n----------------------------------------------------------------------"); FA=f(a); FB=f(b); c=a+(fabs(f(a))/(fabs(f(a))+fabs(f(b))))*fabs(b-a); do { FA=f(a); FB=f(b); FC=f(c); printf("\n%f %f %f %f %f %f ",a,FA,b,FB,c,FC); if(FC==0) { printf("\n\nThe root is %f\n\n",c); return; } else { if(FC<0) { if(FA<0) a=c; else b=c; } else { if(FA>0) a=c; else b=c; } } Cprev=c; c=a+(fabs(f(a))/(fabs(f(a))+fabs(f(b))))*fabs(b-a); }while(fabs(Cprev-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 f(c) ---------------------------------------------------------------------- -4.000000 -27.000000 -3.000000 1.000000 -3.035714 0.345616 -4.000000 -27.000000 -3.035714 0.345616 -3.047902 0.117005 -4.000000 -27.000000 -3.047902 0.117005 -3.052010 0.039333 -4.000000 -27.000000 -3.052010 0.039333 -3.053389 0.013191 -4.000000 -27.000000 -3.053389 0.013191 -3.053851 0.004420 -4.000000 -27.000000 -3.053851 0.004420 -3.054006 0.001483 -4.000000 -27.000000 -3.054006 0.001483 -3.054058 0.000496 -4.000000 -27.000000 -3.054058 0.000496 -3.054075 0.000166 -4.000000 -27.000000 -3.054075 0.000166 -3.054081 0.000057 -4.000000 -27.000000 -3.054081 0.000057 -3.054083 0.000021 The root is -3.054084 a f(a) b f(b) c f(c) ---------------------------------------------------------------------- 0.000000 1.000000 1.000000 -7.000000 0.125000 -0.123047 0.000000 1.000000 0.125000 -0.123047 0.111304 -0.000360 0.000000 1.000000 0.111304 -0.000360 0.111264 -0.000001 The root is 0.111264 a f(a) b f(b) c f(c) ---------------------------------------------------------------------- 2.000000 -9.000000 3.000000 1.000000 2.900000 -0.710998 2.900000 -0.710998 3.000000 1.000000 2.941555 -0.021475 2.941555 -0.021475 3.000000 1.000000 2.942783 -0.000623 2.942783 -0.000623 3.000000 1.000000 2.942819 -0.000020 2.942819 -0.000020 3.000000 1.000000 2.942820 0.000000 The root is 2.942820
Tags:
Non Linear
0 comments