Este programa permite a determinação de zeros de equações de qualquer grau. O método usado é o de bicessões sucessivas.
Program Equacoes;
Uses Crt;
Const MaxDif=1e-6;
Var a,b,m:Real;
Function f(x:Real):Real;
Begin
f:=x*x*x-2*x*x+0.5;
End;
Function Sinal(x:Real):Integer;
Begin
If x<0 Then Sinal:=-1 Else If x=0 Then Sinal:=0 Else Sinal:=1;
End;
Begin
ClrScr;
Write('Quais os limites do intervalo?');
ReadLn(a, b);
If f(a)*f(b)<0 Then
Begin
While Abs(b-a)>MaxDif Do
Begin
m:=(a+b)/2;
If Sinal(f(m))=Sinal(f(a)) Then a:=m Else b:=m;
End;
End
Else WriteLn('Não é possível garantir uma solucao!');
WriteLn('Zero encontrado em x=',a:0:3);
End.
Resultados para os seguintes valores:
a=-1, b=0 => x=-0.452
a=0, b=1 => x=0.597
a=1, b=2 => x=1.855
Comentários para: Nuno Castro