You are on page 1of 4

Parmetros

epsilon = 0.01;
n_iteracoes = 15;
%x0 = 2; %chute inicial metodo Newton
espacamento = 0.1;%espaamento para a analise do numero de zeros no
intervalo
f=@(x) x^3 +x^2 -2; %equao para analise
%f=@(x) x*log10(x) -1;
df=@ (x) 3*x^2 + 2*x;

Mtodo da bissetriz
function[xb,nb] = func_bissetriz(xmin,xmax)
clear
variaveis;
a = xmin;
b = xmax;
xb=[];
nb=0;
p(1) = xmin;
num_passos = (b - a) / espacamento;
for k = 1 :(num_passos - 1)
p(k + 1) = p(k) + espacamento;
if sign(f(p(k))) ~= sign(f(p(k + 1))) %verifica se ha mudana de sinal
nb = nb + 1;
xb(nb,1) = p(k);
xb(nb,2) = p(k + 1);
end
end
if isempty(xb) %se nao houver raiz no intervalo
disp('nao ha raiz no intervalo')
disp('modifique o intervalo')
else
disp('numero de raizes:') %mostra o numero de raizes
disp(nb)
disp('intervalos')
xb
end
for l = 1 : nb
a = xb(l,1);
b = xb(l,2)
dif = a - b;
x = (a + b) / 2;
cont = 0;
n = (log10(dif / epsilon)) / log10(2)
n1 = fix(n)
for i = 1 : n1
if (f(a) * f(b))<0
cont = cont + 1;
if f(a) * f(x)<0
b = x;
else
a = x;
end
else
a = a - 0.1;

b = b + 0.1;
n = (log10((b - a) / epsilon)) / log10(2);
i = i - 1;
end
x = ( a + b) / 2;
end
if cont < 1
disp('nao ha raiz no intervalo')
else
disp('raiz e aprox.')
x
disp('esta no intervalo de')
a
b
end
end
end

Mtodo da falsa posio


function[xb,nb] = func_falsa_posicao(xmin,xmax);
clear
variaveis;
a = xmin;
b = xmax;
cont=0;
xb=[];
nb=0
p(1)=xmin;
num_passos = (b-a)/espacamento;
for k = 1:(num_passos-1)
p(k+1) = p(k)+espacamento;
if sign(f(p(k))) ~= sign(f(p(k+1))) %check for sign change
nb = nb + 1;
xb(nb,1) = p(k);
xb(nb,2) = p(k+1);
end
end
if isempty(xb) %display that no brackets were found
disp('nao ha raiz no intervalo')
disp('modifique o intervalo')
else
disp('numero de raizes:') %display number of brackets
disp(nb)
disp('intervalos')
xb
end
for l = 1:nb
a=xb(l,1);
b=xb(l,2)
for i=1:n_iteracoes
a1=(f(b)-f(a))/(b-a);
a2=f(b)-b*a1;
x=-a2/a1;

if (f(a) * f(b))<0
cont=cont+1;
if f(a) * f(x)<0
b = x;
else
a = x;
end
else
a = a + 0.1;
b = b - 0.1;
end
end
if cont<1
disp('nao ha raiz no intervalo')
else
disp('raiz e aprox.')
x
disp('esta no intervalo de')
a
b
root(l)=x;
end
end
end

Mtodo da Newton-Raphson
function x = func_newton_raphson(x0)
clc
variaveis;
x=x0;
for i = 1 : n_iteracoes
x = x - (f(x) / df(x));
end
disp('soluao')
x
end

Mtodo da Secante
function[r] = func_secante(xp1,xp2)%num iteraoes muito alto as soluoes
comeam a d erro
variaveis;
clc
%f=@(x) x^3 -10*x^2 -400;
x(1) = 20;
x(2) = 30;
j = n_iteracoes + 3;
for i = 3:j
x(i) = x(i-1) - ((f(x(i-1)))*((x(i-2) - x(i-1))/(f(x(i-2)) - f(x(i1)))));

end
disp('a soluo ')
r = x(j);
end

You might also like