Posts Tagged ‘language matlab’

x0 = 5;
x1 = x0;

fx0 = (3*x0+sin(x0)-exp(x0))
fx1 = (3+cos(x0)-exp(x0))

if(fx0 ~= 0 && fx1 ~= 0)
while(abs(x1 - x0) < 0.0000001 || abs(fx1) < 0.000001)
x1 = x0
x0 = x0 - (fx0/fx1)
end
end
x1 = 1
x2 = 2

fx1 = (x1^3) + (x1^2) - (3*x1) - 3;
fx2 = (x2^3) + (x2^2) - (3*x2) - 3;

while(abs(x1 -x2)> 0.00001)
    x3 = (x1 +x2)/2;
    fx3 = (x3^3) + (x3^2) - (3*x3) - 3;

    if (fx1 * fx3 < 0)
        x2 = x3;
        fx2 = fx3;
    else
        x1 = x3;
        fx1 = fx3;
    end

end

x3

Bisection Method // Matlab code

Posted: January 31, 2012 by muhammadakif in Algorithms
Tags: ,
format long;
x = sym('x');
expr = input('Please enter the equation : ');
fx = sym(expr);

x1 = input('Please enter value of X1 : ');
x2 = input('Please enter value of X2 : ');
iter = input('Please enter number of Iterations : ');

fx1 = subs(fx,x,x1);
fx2 = subs(fx,x,x2);

x3 = 0;
counter = 0;

fid=fopen('c:\bisection.csv','w');
fprintf(fid,'%s\n','Iteration,x1,x2,x3,F(x1),F(x2),F(x3),Max Errors');

if fx1*fx2 &gt;= 0
    message = 'x1 and x2 values are not valid for desired root';
    disp(message)
else 

   while ((counter == 0 || abs(x1-x2) &gt; 0.000001 || subs(fx,x,x3) == 0) &amp;&amp; counter &lt;= iter)
       counter = counter + 1;

       x3 = (x1 + x2) / 2;   

       fprintf(fid,'%d,',counter);
       fprintf(fid,'%5.8f,',x1);
       fprintf(fid,'%5.8f,',x2);
       fprintf(fid,'%5.8f,',x3);
       fprintf(fid,'%5.8f,',subs(fx,x,x1));
       fprintf(fid,'%5.8f,',subs(fx,x,x2));
       fprintf(fid,'%5.8f,',subs(fx,x,x3));
       fprintf(fid,'%5.8f\n',abs((x2-x1)/(2^counter)));

       x3 = (x1 + x2) / 2;
       if subs(fx,x,x3) * subs(fx,x,x1)&lt; 0
           x2 = x3;
       else
           x1 = x3;
       end    
   end    
end    

sprintf('The root of the equation using Bisection method is :: %d', x3)

fclose(fid);