%%%%%   Este programa encontra um zero REAL de uma funçao pelo  %%%%%%
%%%%%                    METODO DA BISSECÇAO                    %%%%%%
function bisseccao
clear all
clc
i=1;
precisao = input('Entre com a precisao desejada: ');
a = input('Entre com o limite inferior do intervalo [a,b]: ');
b = input('Entre com o limite superior do intervalo [a,b]: ');
if(abs(f(a))<= precisao)
 disp ('**********   O valor de a é um zero de f **********');
end
if(abs(f(b))<= precisao)
 disp ('**********   O valor de b é um zero de f **********');
end
if(f(a)*f(b)>0)
 disp ('********** ATENÇÃO:  Não temos garantia de ter zero nesse intervalo!!!!   **********');
end
amp=(b-a);
while abs(amp)>=precisao,
x=(a+b)/2;
aux(i)=x;
i=i+1;
M=f(a);

if(M*f(x)>=0)
  a=x;
else
  b=x;
end
amp=(b-a);
end 
disp ('**********   AS APROXIMACOES FORAM:   **********');
disp (aux')
disp ('*****  A SOLUCAO ENCONTRADA PELO METODO DA BISSECCAO FOI:  *****');
disp (x)
disp ('O valor de f(x) calculado na solucao foi: ');
disp (f(x))
disp ('O numero de iteracoes foi: ');
disp (i-1)
%
function f=f(t)
  %f = t^3 - 9*t + 3;                 %%%   funcao 1   %%%
  %f = t^2 + t - 6;                   %%%   funcao 2   %%%
  %f = exp(-t^2) - cos(t);            %%%   funcao 3   %%%
  %f = t^3 - t - 1;                   %%%   funcao 4   %%%
  %f = 4*sin(t) - exp(t);             %%%   funcao 5   %%%
  %f = t*log10(t) - 1;                %%%   funcao 6   %%%
  %f = t^2 - 5*t + 5;                 %%%   funcao 7   %%%
  %f = t^2 - 4*t + 2;                 %%%   funcao 8   %%%
  %f = t^2 - 10*t + 23;               %%%   funcao 9   %%%
  %f = t^2 - 2;                      %%%   funcao 10  %%%
  %f = -t^3 + 17*t^2 - 75*t + 91;      %%%   funcao 11  %%%
  %f = t.^3 + 6*t.^2 + 9*t - 6;
  f = 1.7 + 32.17*((exp(t)-exp(-t))/2  - sin(t))/(2*t^2);
  %f = exp(t)+t-2;