//Metodo da dicotomia
//Primero definimos a equacao que queremos analisar
x=[-1:0.1:4];
//f(x)=(1-x)*exp(x.^2);
deff("y=f(x)", "y=(1-x).*exp(x.^2);");

//g(x)=x;
deff("y=g(x)","y=x");
//Queremos achar a raiz de f(x)=g(x);
// Vamos plotar os dois graficos para saber se existe raiz no intevalo definido.
plot2d(x,[f(x);g(x)]');
// nao da pra ver.
y=[0:0.2:1];
plot2d(y,[f(y);g(y)]');
//da pra ver que tem um zero entre 0 e 1
// algoritmo da dicotomia:
a=0;
b=1;
raiz=0.5;
itera=1;
erro=(b-a)/2;
erro_zero=f(raiz)-g(raiz);
while erro>%eps, 
if erro_zero==0 then break; end;
if (f(a)-g(a))*(f(raiz)-g(raiz))>0 then a=raiz;
else b=raiz; end;
raiz=(a+b)/2;
itera=itera+1;
erro=(b-a)/2;
erro_zero=f(raiz)-g(raiz);
end;
//executando este script obtemos a solucao
