Professional Documents
Culture Documents
Fun Coes
Fun Coes
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
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