NUMÉRICO
Elyaquim D Torres e Rebeca T de Siqueira
Resumo. Este relatório fornece informações dos procedimentos e métodos utilizados para a resolução
do trabalho 01 da disciplina de Cálculo Numérico ministrada pelo Prof. Dr. Gustavo Bono. Este
relatório também contém as implementações computacionais utilizadas para a resolução de cada um
dos problemas propostos.
1 INTRODUÇÃO
Este relatório fornece informações sobre os métodos e implementações computacionais
utilizadas para a resolução de problemas específicos propostos pelo professor orientador,
exibindo-as conforme a abordagem dos exercícios que compõem a lista. O principal tema
abordado por tais atividades são referentes às diferentes formas de solucionar uma função
encontrando os pontos onde f(x)=0, ou seja, sua(s) raiz(es).
2 MUDANÇAS DE BASE
Devido as diversas formas de representação de um número, às vezes, faz-se necessária a
representação do mesmo em outra base dependendo onde ou em que plataforma ele será
utilizado, afim de que a compatibilidade ou qualquer outra variável no momento da
compilação não venham ser comprometida. Tendo em vista isso, os exercícios a seguir
trabalham a mudança de base de diversos números.
2.1 Exercício 1
Para converter um número que está em uma base qualquer para a base decimal, basta
multiplicar tal número pela base elevada à posição do número. Em termos práticos, tem-se
que:
Número
Número Base Processo em base
decimal
100 2 (0 x 20) + (0 x 21) + (1 x 22) 4
100 3 (0 x 30) + (0 x 31) + (1 x 32) 9
100 B (0 x B0) + (0 x B1) + (1 x B2) B2
12 5 (2 x 50) + (1 x 51) 7
AA 16 (10 x 160) + (10 x 161) 170
7,1 8 (7 x 80) + (1 x 8-1) 7,125
3,12 5 (3 x 50) + (2 x 5-2) + (1 x 5-1) 3,28
Tabela 3: Conversão de números para a base decimal.
2.2 Exercício 2
Utiliza-se o mesmo processo aplicado anteriormente para a resolução do exercício 02. Os
resultados obtidos foram:
Número
Número Base Processo em base
decimal
25,13 8 (5x80) + (2x81) + (1x8-1) + (1x8-2) 21,171875
101,1 2 (1x20) + (0x21) + (1x22) + (1x2-1) 5,5
12F,4 16 ... 303,25
11,2 3 ... 4,66666
Tabela 4: Conversão de números para a base decimal.
3 MÉTODOS PARA ENCONTRAR O ZERO DA FUNÇÃO
Dentre os diferentes métodos utilizadas para encontrar o zero de uma função, destacam-se
nesse relatório os métodos: da bisseção, do ponto fixo, da secante e de Newton-Raphson. Tais
métodos serão comparados em relação às raízes encontradas, tempo de execução, efetividade,
benefícios e limitações. É necessário salientar que para determinados exercícios, as
implementações realizadas no Matlab trabalharam com o arredondamento da última casa
decimal e esporadicamente, truncamento na sexta casa decimal.
Erro = | a + b | / 2. (2)
3.1.1 Exercício 3
Utilizou-se o método da bisseção para encontrar a raiz da função:
𝑥 = cos(𝑥), (3)
no intervalo inicial [𝑎,𝑏]=[0,1] com o limite de oito interações.
Para facilitar o processo, foi utilizado o programa Matlab para a implementação de um
algoritmo que atendesse às especificações do problema. Como visto no Algoritmo_01 posto
em anexo, após a inserção da função na linha 03 e a inserção do intervalo inicial nas linhas 05
e 06, foi estabelecido o valor máximo de iterações a partir da variável max_int (linha 08).
Após o início do laço de repetição, o algoritmo define o valor de X a partir da equação (1)
na linha 12, em seguida, verifica se foi possível encontrar a raiz da função fornecida,
aplicando o valor de X à função e comparando ao inteiro zero (linha 16-19). A variável ‘cont’
registrará a quantidade de iterações realizadas. Caso não seja encontrada a raiz, os intervalos
são redefinidos de acordo com o resultado do produto (linha 24-29). O processo se repete até
atingir o valor definido de iterações.
Após a execução do algoritmo para a função (3), são obtidos os seguintes resultados:
Erro
Iteração a b X
associado
1 0 1 0.5 0.5
2 0.50 1.00 0.75 0.25
3 0.500 0.750 0.625 0.125
4 0.6250 0.7500 0.6875 0.0625
5 0.625000 0.687500 0.656250 0.031250
6 0.625000 0.656250 0.640625 0.015625
7 0.640625 0.656250 0.648438 0.007813
8 0.640625 0.648438 0.644531 0.003906
Tabela 1: Resultados obtidos para a função (3) pelo método da bisseção.
Desta forma, chega-se à conclusão que o método da bisseção converge para raiz da função
(3) definindo-a como 0.644531 com um erro associado de 10-2 para um máximo de oito
iterações. Pode-se inferir que a raiz de tal função é um dízima não periódica, logo, pelo
método da bisseção, conclui-se que seriam necessárias infinitas interações para chegar à raiz
precisa da função.
3.1.2 Exercício 4
Fornecido o polinômio:
P(x) = -4 + 8x – 5x2 + x3 , (4)
utilizou-se o mesmo método anterior para encontrar uma de suas raízes no intervalo [ , 3].
Para este exemplo, foi estabelecido um máximo de vinte iterações para que o método fosse
mais preciso. Aplicou-se os intervalos e a função no Algoritmo_01 e obteve-se os seguintes
resultados:
Erro
Iteração a b X
associado
1 0.0 3.0 1.5 1.5
2 0.00 1.50 0.75 0.75
3 0.750 1.500 1.125 0.375
4 0.7500 1.1250 0.9375 0.1875
5 0.9375 1.125 1.031250 0.093750
... ... ... ... ...
18 0.999985 1.000008 0.999996 0.000011
19 0.999996 1.000008 1.000002 0.000006
20 0.999996 1.000002 0.999999 0.000003
Tabela 2: Resultados obtidos para a função (4) pelo método da bisseção.
Conclui-se que, pelo método de bisseção, a raiz para qual o método converge em
determinado intervalo é 1 (um). Das três possíveis raízes do polinômio (4), apenas uma foi
encontrada, pois o método de bisseção é limitado a encontrar somente uma raiz por intervalo,
independente se uma ou mais raízes estão presentes nele. Logo, para encontrar as outras raízes
do polinômio, é necessária a troca do intervalo, de modo que o primeiro valor médio de ‘X’
inclua a outra raiz do polinômio (que é 2) e não inclua a raiz 1, pois para o intervalo utilizado
nesse exercício, o valor de ‘X’ ficou entre 0 e 1,5, dessa forma, as demais operações foram
limitadas por esse novo intervalo [0,3/2], estreitando-o com o decorrer das iterações. Como
dentro desse intervalo só existia o número 1 como raiz do polinômio (4), o método convergiu
para ele. Logo, para encontrar as demais raízes do polinômio (4), faz-se necessária a mudança
do intervalo inicial proposto, de modo que, quando calculado o valor médio ‘X’, a raiz P(1)=0
não esteja inclusa.
3.1.3 Exercício 5
Ao tentar aplicar a função
f(x) = x4 - 4x2 + 4 (5)
ao Algoritmo_01 com um intervalo [0,2], observa-se que o método é ineficaz, pois o mesmo
fornece como raiz o número 1.999998 com erro associado de 10 -5 para o máximo de vinte
iterações, porém, tal número encontrado não é raiz da função (5). Isso ocorre porque o
polinômio (5) é uma função estritamente positiva, logo, nenhum produto f(a)f(x) ou f(b)f(x)
pode resultar em um número negativo. Mesmo diminuindo o intervalo, o algoritmo continua
encontrando raízes falsas, que quando aplicadas, não resultam em f(x)=0. Por conta dessa
limitação do método, conclui-se que o mesmo é ineficiente para encontrar as raízes da função
(5).
3.1.4 Exercício 6
Utilizando o Algoritmo_02, realizou-se três vezes o método da bisseção para solucionar a
função
f(x)= x = t (6)
sendo t=1, t=10 e t=100 no intervalo pré-definido [0,t]. Para o primeiro caso onde t=1
observou-se a quantidade de iterações necessárias para obtenção do número x* que é solução
para a função (6), até atingir um erro absoluto inferior a 10-6. Os resultados foram:
Desse modo, é possível observar que para t=1 a função (6) admite, para um erro
imediatamente inferior à 10-6, a solução x* = 0.567143, sendo necessário 21 iterações para a
obtenção de tal resultado (pois o algoritmo não imprime a última iteração, apenas aponta a
raiz).
O mesmo procedimento foi realizado para um valor t=10. Os resultados podem ser
conferidos abaixo:
Conclui-se que, para t=10, foram necessárias 24 iterações para que o método convergisse
para x* = 1.745529 com o erro absoluto imediatamente inferior à 10-6.
Para t=100, foram necessárias 27 iterações, chegando à solução x* = 3.385630 com erro
associado de 10-6. Os resultados podem ser observados a seguir:
Dada uma f(x), um valor inicial é atribuído à x. Se f(x)=0, ‘x’ é raiz da função. Caso
contrário, pelo método do ponto fixo, isola-se um termo que possua a variável x de modo que
uma nova função g(x) seja igualada a ele, ou seja
x = g(x). (7)
Assim como o método da bisseção, tal método possui convergência linear. O erro
associado é calculado através da equação
-
E=| | (9)
3.2.1 Exercício 7
Fornecida a equação:
ex = x + 2 (10)
calculou-se a solução x* usando
ex -2 = g(x) (11)
com x(1) = -1,8. Ao aplicar a função (10) e a função (11) com os parâmetros fornecidos, no
Algoritmo_03, com uma tolerância de 10-4 , obteve-se os seguintes resultados:
3.2.2 Exercício 8
Segundo o teorema do ponto fixo, a convergência ocorre quando |g’(x)|<1. Se |g’(x)|<1,
os erros diminuem a cada iteração. Logo, para que uma função g(x) seja ponto fixo de xex-10,
é preciso que dado um intervalo, o módulo da derivada de g(x) seja sempre inferior a 1.
Definindo um intervalo f:[1.3,2] (intervalo que inclui a raiz da função x= 1.745528002) e
derivando as opções:
a)
A derivada possui valor inferior à zero para qualquer valor no intervalo, logo o
teorema é satisfeito.
b)
A derivada possui valor inferior à zero para qualquer valor no intervalo, logo o
teorema é satisfeito.
c)
A derivada possui valor inferior à zero para qualquer valor no intervalo, logo o
teorema é satisfeito.
3.3 Método de Newton-Raphson e da secante
Ambos os métodos complementam um ao outro, porém, são perfeitamente funcionais se
aplicados de forma separada. O método de Newton-Raphson é um dos métodos mais
aplicados para encontrar o zero de funções devido a sua boa efetividade, necessitando de bem
menos interações para convergir a uma raiz, pois utiliza-se uma convergência quadrática.
Dado um ponto inicial xi uma reta tangente é traçada a partir do ponto f(xi). Tal reta aponta
um novo ponto xi+1 , no eixo das ordenadas, que possui uma imagem associada f(xi+1). Tal
reta tangente vai sendo calculada até que atinja um valor ‘c’ tal que f(c)=0 ou que f(c) < erro.
Quando a primeira condição é satisfeita, diz-se que ‘c’ é raiz da função. Em termos
simbólicos tem-se que:
( )
- ( )
, (12)
(𝑥 ) (𝑥 )
(𝑥 ) (13)
𝑥 𝑥
(𝑥 )(𝑥 𝑥)
𝑥 𝑥 ( ) (14)
(𝑥 ) (𝑥 )
3.3.1 Exercício 9
Dada a função:
foram realizadas iterações até obter estabilidade no quinto dígito. O parâmetro para aplicação
de tal função ao método de Newton-Raphson é x(0) = 1. Tais informações foram aplicadas ao
Agoritmo_04 e os resultados obtidos foram:
3.3.2 Exercício 10
Dada a função
tan(x) = 2 – x2 (16)
Calculou-se as duas primeiras raízes positivas com o método de Newton-Raphson (NR)
(Algoritmo_4) e com o método da secante (Algoritmo_5) para os valores iniciais de x= 3 e
x=1.5 respectivamente. Para x=3, utilizando NR, obteve-se os seguintes resultados:
Logo, para dado valor inicial de x, o algoritmo retornou como raiz da função (16) o
resultado 2.01935540. Como no método de NR o processo é regressivo, tem-se que antes de
x=3, a primeira raiz encontrada é 2.019355. Para x=1.5, obteve-se os seguintes resultados:
Portanto, para dado valor inicial de x, o algoritmo retornou como raiz da função (16) o
resultado 0.88375996. Isso afirmar a primeira raiz encontrada imediatamente antes de 1.5 é
0.883760.
No método da secante, para a x=3 obteve-se os seguintes resultados:
3.3.3 Exercício 11
O método do gráfico baseia-se em encontrar a raiz de uma determinada função após dividi-
la em duas funções distintas. Ao plotar o gráfico de ambas funções, a coordenada ‘x’ do(s)
ponto(s) de interseção entre elas são raízes da função que as originou.
Dada as funções
=x (17)
= 2x (18)
f(x) = x5/10 + x4 – 3x2 +1 (19)
A partir dos gráficos anexados, tem-se que para a função (17) as raiz encontrada foi x=
0,65, para a função (18) a raiz foi x= 0,42 e para a função (19) a raízes encontradas foram x 1=
-0,61 e x2 = 0,62.
Utilizando o Algoritmo_4 para calcular as raízes da função com o método de Newton-
Raphson obteve-se os seguintes resultados:
A função (19) possui 4 raízes, logo, para calculá-las usando o método de Newton-Raphson
serão necessários 4 valores iniciais distintos.
A função (19) possui 4 raízes, logo, para calculá-las usando o método de Newton-Raphson
serão necessários 4 valores iniciais distintos.
O Matlab possui uma função própria denominada ‘fzero’ que calcula a raiz de uma função
solicitando a função e um ponto inicial, encontrando apenas uma raiz por vez imediatamente
anterior ao ponto inicial. O comando foi escolhido devido à sua alta aplicabilidade e de maior
taxa de convergência se comparado aos métodos anteriores. Os resultados obtidos e o tempo
de execução foram:
Algoritmo_01
Algoritmo_02
clear all
clc
%Implementando o método da bisseção (Q3)
disp('Digite a função:');
f = input ('','s');
%Epecificando o intervalo
inferior = 0;
superior = 1;
%especificando a tolerancia
tol = sym(abs(inferior-superior)/2);
cont = 1;
while(tol>(1e-6))
%calculando o valor médio
x =sym((inferior+superior)/2);
tol = sym(abs(inferior-superior)/2);
if(subs(f,x)== 0)
fprintf('A raiz é: %d\n',x);
break;
end
cont = cont+1;
if sign(subs(f,x))== sign(subs(f,inferior))
inferior = x;
else
superior = x;
end
end
fprintf('A raiz é: %f\n', x);
fprintf('O erro associado é: %f\n', tol);
Algoritmo_03
Algoritmo_04
cont = 1;
while cont<=max
xt= eval(x0-(subs(f,x,x0)/subs(df,x,x0)));%variável para aplicar o método e testar as raízes
erro=(abs((xt-x0)/xt));
x0=xt;
if(1.0e-4>erro)
xf=x0;
break
else
x0=xt;
fprintf('Iteração:%d\n x= %.8f\n',cont,xt);
fprintf('erro= \n');
disp(erro);
cont=cont+1;
end
end
fprintf('a raiz aproximada é:\n %.8f \n',xf);
fprintf('o erro associado é:\n');
disp(erro);
Algoritmo_05
while cont<=max
x2=eval(x1-(x1-x0)*(subs(f,x,x1)/(subs(f,x,x1)-subs(f,x,x0))));%calculando o próximo
valor p/ x
erro = abs((x1-x0)/x1);%calculando o erro relativo em cada operação
%substituindo o valor obtido em x1 e o valor anterior de x1 em x0
x0=x1;
x1=x2;
%verificando se o erro relativo é inferior à tolerância
if(erro<tol)
xf=x2;
break
else
%Imprimindo nas iterações os valores de x e o erro relativo
fprintf('Iteração:%d --> x= %.8f --> erro= ',cont,x2);
disp(erro);
cont=cont+1;
end
end
fprintf('a raiz aproximada é:\n %.8f \n',xf);
fprintf('o erro associado é:\n');
disp(erro);
Imagem 1: Plot da função = x.