computacionais
Cesar, Mario, Vinicius e Wagner
Equao:
Representao grfica:
Newton
Algoritmo:
function [x,k]=newton(f,df,x,tol,maxit)
tic;
k=0; fx=feval(f,x);
if abs(fx)<tol
fprintf('A raiz eh x(%3i)=%8.4f\n',k,x)
return
end
while(1)
k=k+1; fx=feval(f,x) ; fl=feval(df,x);
x0=x ; x=x-fx/fl ; fx=feval(f,x);
deltax=fx/fl;
Newton if (abs(fx)<tol | abs(x-x0)<tol)
fprintf('Raiz: x(%2i)=%.6f\n',k,x)
t2=toc;
fprintf('tempo de execuao t(%f)\n',t2)
erro= tol-deltax;
fprintf('Raiz: %.6f\n',erro)
return
end
if (k==maxit)
disp('Maxit atingido. Raiz nao encontrada')
return
end
end
Equao:
+
=
2
Representao grfica:
Bisseco
Condies:
Iterao 1
Bisseco
A,B,X
Iterao 2
Bisseco
A,B,X
Iterao 3
Bisseco
A,B,X
Iterao 4
Bisseco
A,B,X
Iterao 5
Bisseco
A,B,X
Algoritmo:
function x=bissec(f,a,b,tol,maxit)
tic;
fa=feval(f,a);
fb=feval(f,b);
if fa*fb>0.0
error('A funo tem o mesmo sinal nos pontos extremos.')
end
for k=1:maxit
x=(a+b)/2;
fx=feval(f,x);
Bisseco if abs(b-a)<=tol
t2=toc;
erro=b-a;
fprintf('A raiz encontrada eh x(%i)=%.6f\n',k,x)
fprintf('erro=%.6f\n',erro)
fprintf('tempo de execuao t(%f)\n',t2)
break;
end
if ((fx*fa)< 0)
b=x;
else
a=x;
fa=fx;
end;
Equao:
Representao grfica:
Secante
Algoritmo:
function xfinal=secante(fx,a,b,tol,maxit)
tic;
x(1)=a;
x(2)=b;
y(1)=feval(fx,x(1));
y(2)=feval(fx,x(2));
erro=1; k=2;
while erro>tol & k<maxit
x(k+1)=x(k)-y(k)*(x(k)-x(k-1))/(y(k)-y(k-1));
y(k+1)=feval(fx,x(k+1));
erro(k)=( abs(x(k+1)-x(k) )) ;
if erro(k)<tol;
disp('O metodo da Secante converge com |x(k)-x(k-1)| < tolerancia.')
xfinal=x(k+1);
Secante break;
end
if (y(k+1)==0)
disp('Encontrado o valor exato da raiz.');
break;
end;
k=k+1;
end
t2=toc;
fprintf('A raiz encontrada eh x(%i)=%.6f',k,xfinal)
fprintf('erro=%.6f\n',erro)
fprintf('tempo de execuao t(%f)\n',t2)
Equao: Fator:
Representao grfica:
Pgaso
Algoritmo:
function xf=pegaso(f,a,b,Toler,IterMax)
tic;
fa=feval(f,a);
fb=feval(f,b);
x = b;
fx = fb;
iter=0;
while 1
iter = iter + 1;
DeltaX = - fx/(fb-fa)*(b-a);
x = x + DeltaX;;
fx = feval(f,x);
if ( abs(DeltaX)<Toler & abs(fx)<Toler) | (iter >= IterMax)
break;
Pgaso end
if fx*fb <0
a = b;
fa = fb;
else
fa = fa * fb / (fb+fx);
end
b = x;
fb = fx;
end
Raiz = x ;
t2=toc;
fprintf('Raiz: x(%2i)=%.6f %.6f\n',iter,Raiz,t2)
if (abs(DeltaX) < Toler) & (abs(fx) < Toler)
Erro = 0
else
Erro = 1
end
y= 4x3 + x + cos(x) -10
6.21
6.21 Raz Iteraes Erro Tempo Tempo rel tol a b x0
6.22
6.22 Raz Iteraes Erro Tempo Tempo rel tol a b x0
6.23
6.23 Raz Iteraes Erro Tempo Tempo rel tol a b x0
6.29
6.29 Raz Iteraes Erro Tempo Tempo rel tol a b x0
6.30
6.30 Raz Iteraes Erro Tempo Tempo rel tol a b x0