Você está na página 1de 2

01 function bolzano(fn1,x,tol)

02 %Entradas
03 prompt={'Digite a equação:','Digite o intervalo:','Digite a tolerancia:'};
04 name='Entradas para calculo da bisseção';
05 numlines=1;
06 defaultanswer={'x+1','0:0.1:10','0.01'};
07 answer=inputdlg(prompt,name,numlines,defaultanswer);
08
09 % Trabalhando as entradas
10 fn1 = answer{1}
11 tol = str2num(answer{3});
12 x = str2num(answer{2})
13
14 %Teorema de bolzano
15 fn = subs(fn1,x) %usada p/ operar varivel simbolica
16 k = length(x);
17 while k>1 %Enquanto
18 if fn(k)<0
19 if fn(k-1)>0
20 a = x(k-1)
21 b = x(k)
22 k = 0;
23 end
24 else %senao
25 if fn(k-1)<0
26 a = x(k-1)
27 b = x(k)
28 k = 0;
29 end
30 end
31 if k==2
32 Data=1:64;Data=(Data'*Data)/64;
33 erro = msgbox('Intervalo não possui raiz da equação!','Bisseção','custom',
Data,hot(64));
34 a =0;
35 b = 0;
36 break
37 end
38 k = k -1;
39 end
40
41 % Bisseção
42 tol
43 ftol= subs(fn1,tol); %executar a função com os valores da tolerancia
44 while abs(a-b)>=tol
45 xm = (a+b)/2;
46 fa = subs(fn1,a);% executa a função FN1 com os valores A)
47 fm = subs(fn1,xm);
48
49 if fa*fm < 0
50 b = xm;
51 else
52 a = xm;
53 end
54 if xm == 0 || fm == 0 || abs(a-b)<=tol || abs(fm)<=ftol %
55 plot(x,fn,'b',xm,fm,'or');
56 grid on;
57 Data=1:64;Data=(Data'*Data)/64;
58 raiz = msgbox(['Raiz = ' num2str(xm)],'Bisseção','custom',Data,hot(6
4));
59 break
60 end
61 end
62

Você também pode gostar