Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


CÁLCULO NUMÉRICO COMPUTACONAL, Notas de estudo de Métodos Matemáticos

ESTUDO DE APROXIMAÇÃO DE RAIZES USANDO METODO COMPUTACIONAL

Tipologia: Notas de estudo

2022

Compartilhado em 17/10/2022

gilson-ricardo-silva
gilson-ricardo-silva 🇧🇷

5

(1)

16 documentos

1 / 6

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
CAPÍTULO 2 CÁLCULO DE RAÍZES DE FUNÇÕES NÃO LINEARES
2.1 INTRODUÇÃO
A representação de números em máquinas digitais
(calculadoras, computadores, etc) é feita na forma de
ponto flutuante com um número finito de dígito.
Logo os números que tem representação infinita
(Ex. 1/3, π, 2 ) são representados de forma
truncada ou aproximada. Com isto algumas das
propriedades da aritmética real não valem na
aritmética computacional. Como exemplo, na
aritmética computacional temos:
𝑎𝑘
𝑁
𝑛
𝑘=0 1
𝑁 𝑎𝑘
𝑛
𝑘=0 ,
Onde estamos considerando que no primeiro
somatório para cada k fazemos 𝑎𝑘/N e depois
somamos. No segundo somatório somamos todos os
𝑎𝑘 e o resultado da soma dividimos por N. Do ponto
de vista analítico, as duas expressões são
equivalentes, mas a segunda forma apresenta melhor
resultado do ponto de vista computacional, pois
realiza menos operações e comete menos erros de
truncamento ou arredondamento. Outros exemplos
interessantes é que em aritmética computacional é
possível que para A dado exista um ε 0 tal que:
A + ε = A.
Analiticamente a expressão acima é verdadeira
se, e somente se, ε = 0.
Outro assunto importante são os tipos de
esquemas numéricos. Eles são classificados como
esquemas diretos e esquemas iterativos. Os
esquemas diretos são aqueles que fornecem a
solução após um número finito de passos. Os
esquemas iterativos são aqueles que repetem um
número de passos até que um critério de parada seja
satisfeito. Como exemplo considere o algoritmo que
é usado para determinar a precisão de uma máquina
digital.
Algoritmo: Epsilon da Máquina
𝐸𝑝 1
Enquanto (1+𝐸𝑝)>1, faça:
𝐸𝑝 𝐸𝑝/2
fim enquanto
OutPut: 2Ep
O critério de parada é (1+𝐸𝑝)1 e cada
execução de laço Enquanto (while) é chamado de
iteração. Máquinas diferentes apresentarão
resultados diferentes.
Outro fator que pode influenciar nos resultados é
a linguagem de programação usada na
implementação dos algoritmos (Pascal, Fortan, C++,
MatLab, etc). E mesmo quando usamos uma mesma
linguagem, mas compiladores diferentes (Ex. C++
da Borland e C++ da Microsoft), os resultados
podem apresentar diferenças. Existem várias
bibliotecas de rotinas numéricas em diversas
linguagens e algumas disponíveis na Internet. Um
exemplo é a LIMPACK: uma coleção de rotinas em
Fortran para soluções de sistemas lineares.
2.2 MATLAB
O MatLab surgiu nos anos 1970 como um
Laboratório de Matrizes para auxiliar os cursos de
Teoria Matricial, Álgebra Linear e Análise
Numérica. Ele é tanto um ambiente quanto uma
linguagem de programação, e um de seus aspectos
mais poderosos é que os problemas e as soluções são
expressos numa linguagem matemática bem
familiar.
Apesar das últimas versões do MatLab ter
expandido sua capacidade, o elemento básico dos
dados ainda é um vetor, o qual não requer
declaração de dimensão ou tipo variável. O MatLab
é um sistema interativo, onde os comandos podem
ser executados na janela de comandos ou por
programas.
1.1.1 CÁLCULO NA JANELA DE COMANDOS
Um cálculo simples pode ser executado na
janela de comandos digitando as instruções no
prompt como você faria numa calculadora.
>> 3*4 +5
ans = 17
Os símbolos dos operadores aritméticos são
dados na Tabela 1.1. As expressões são calculadas
da esquerda para a direita, com a potenciação tendo
precedência, seguido da multiplicação e divisão
(mesma precedência) e pela adição e subtração
(também com a mesma precedência).
As Variáveis. A forma de armazenar o resultado para
uso posterior é pelo uso de variáveis.
>> s = 3+4+7+12
s = 26 Tabela 2.1 Operadores Aritméticos
OPERAÇÃO
SÍMBOLO
Adição
Multiplicação
Subtração
Divisão
Potenciação
a + b
a * b
a b
a/b ou b/a
a^b
pf3
pf4
pf5

Pré-visualização parcial do texto

Baixe CÁLCULO NUMÉRICO COMPUTACONAL e outras Notas de estudo em PDF para Métodos Matemáticos, somente na Docsity!

CAPÍTULO 2 – CÁLCULO DE RAÍZES DE FUNÇÕES NÃO LINEARES

2.1 INTRODUÇÃO

A representação de números em máquinas digitais

(calculadoras, computadores, etc) é feita na forma de

ponto flutuante com um número finito de dígito.

Logo os números que tem representação infinita

(Ex. 1/3, π, √

2 ) são representados de forma

truncada ou aproximada. Com isto algumas das

propriedades da aritmética real não valem na

aritmética computacional. Como exemplo, na

aritmética computacional temos:

𝑘

𝑛

𝑘= 0

𝑘

𝑛

𝑘= 0

Onde estamos considerando que no primeiro

somatório para cada k fazemos 𝑎

𝑘

/N e depois

somamos. No segundo somatório somamos todos os

𝑘

e o resultado da soma dividimos por N. Do ponto

de vista analítico, as duas expressões são

equivalentes, mas a segunda forma apresenta melhor

resultado do ponto de vista computacional, pois

realiza menos operações e comete menos erros de

truncamento ou arredondamento. Outros exemplos

interessantes é que em aritmética computacional é

possível que para A dado exista um ε ≠ 0 tal que:

A + ε = A.

Analiticamente a expressão acima é verdadeira

se, e somente se, ε = 0.

Outro assunto importante são os tipos de

esquemas numéricos. Eles são classificados como

esquemas diretos e esquemas iterativos. Os

esquemas diretos são aqueles que fornecem a

solução após um número finito de passos. Os

esquemas iterativos são aqueles que repetem um

número de passos até que um critério de parada seja

satisfeito. Como exemplo considere o algoritmo que

é usado para determinar a precisão de uma máquina

digital.

Algoritmo: Epsilon da Máquina

𝐸𝑝 ← 1

Enquanto ( 1 + 𝐸𝑝) > 1 , faça:

𝐸𝑝 ← 𝐸𝑝/ 2

fim enquanto

OutPut: 2 Ep

O critério de parada é ( 1 + 𝐸𝑝) ≤ 1 e cada

execução de laço Enquanto ( while ) é chamado de

iteração. Máquinas diferentes apresentarão

resultados diferentes.

Outro fator que pode influenciar nos resultados é

a linguagem de programação usada na

implementação dos algoritmos (Pascal, Fortan, C++,

MatLab, etc). E mesmo quando usamos uma mesma

linguagem, mas compiladores diferentes (Ex. C++

da Borland e C++ da Microsoft), os resultados

podem apresentar diferenças. Existem várias

bibliotecas de rotinas numéricas em diversas

linguagens e algumas disponíveis na Internet. Um

exemplo é a LIMPACK: uma coleção de rotinas em

Fortran para soluções de sistemas lineares.

2.2 MATLAB

O MatLab surgiu nos anos 1970 como um

Laboratório de Matrizes para auxiliar os cursos de

Teoria Matricial, Álgebra Linear e Análise

Numérica. Ele é tanto um ambiente quanto uma

linguagem de programação, e um de seus aspectos

mais poderosos é que os problemas e as soluções são

expressos numa linguagem matemática bem

familiar.

Apesar das últimas versões do MatLab ter

expandido sua capacidade, o elemento básico dos

dados ainda é um vetor, o qual não requer

declaração de dimensão ou tipo variável. O MatLab

é um sistema interativo, onde os comandos podem

ser executados na janela de comandos ou por

programas.

1.1.1 CÁLCULO NA JANELA DE COMANDOS

Um cálculo simples pode ser executado na

janela de comandos digitando as instruções no

prompt como você faria numa calculadora.

>> 3*4 + 5

ans = 17

Os símbolos dos operadores aritméticos são

dados na Tabela 1.1. As expressões são calculadas

da esquerda para a direita, com a potenciação tendo

precedência, seguido da multiplicação e divisão

(mesma precedência) e pela adição e subtração

(também com a mesma precedência).

As Variáveis. A forma de armazenar o resultado para

uso posterior é pelo uso de variáveis.

>> s = 3 + 4 + 7 + 12

s = 26

Tabela 2.1 Operadores Aritméticos

OPERAÇÃO SÍMBOLO

Adição

Multiplicação

Subtração

Divisão

Potenciação

a + b

a * b

a – b

a/b ou b/a

a^b

O nome da variável pode consistir de, no

máximo, 31 caracteres, iniciando sempre por um

caractere alfa seguido de qualquer combinação de

caracteres do tipo alfa, numérico e underscores. Por

exemplo, resultado_da_soma_2. Ao contrário de

outras linguagens, o MatLab diferencia as variáveis

que usam letras minúsculas e maiúsculas. Isto é, as

variáveis Contas, contas, conTas e CoNtAs, são

consideradas como quatro variáveis diferentes. Para

saber quais as variáveis que estão ativas utilizar o

comando who****. As variáveis são tratadas como

matrizes, apesar dos escalares não serem

apresentados na rotação matricial. Um vetor linha

pode ser definido como

>> x=[ 1 2 3 4]

x =

1 2 3 4

Também podemos separar os elementos por

vírgulas. Já um vetor coluna pode ser definido da

seguinte forma

>> y=[5; 6; 7; 8]

y =

5

6

7

8

Um exemplo de uma matriz 3 x 4.

>> a= [ 1 2 3 4; 5 6 7 8; 9 10 11 12]

a =

1 2 3 4

5 6 7 8

9 10 11 12

Os elementos na i - ésima linha e na j - ésima

coluna, denotados por 𝑎

𝑖𝑗

podem ser obtidos pelo

comando 𝑎(𝑖, 𝑗), por exemplo 𝑎

= 7. Em

algumas situações necessitamos de vetores com

alguma estrutura particular. Por exemplo, um vetor

cujo o primeiro termo vale − 2 e o ultimo vale 3 e os

termos intermediários variam ao passo de 0,5. Este

vetor pode ser definido pela linha de comando:

>> v= −2 : 0.5 : 3

v =

  • 1.0 - 0.5 0 0.5 1.0 1.5 2.0 2.5 3.

De forma geral este comando tem a sintaxe

v = a : passo : b

Algumas matrizes elementares podem ser

geradas através de comandos simples, por exemplo,

a matriz identidade:

>> I= eye (3)

I =

1 0 0

0 1 0

0 0 1

Matriz n x m cujo elementos são todos iguais a 1:

>> A = ones (2 , 3 )

A=

1 1 1

1 1 1

Matriz nula de ordem n x m:

>> B = zeros (3 , 4 )

A=

0 0 0 0

0 0 0 0

0 0 0 0

Como na maioria das linguagens de

programação, o MatLab oferece diversas funções

elementares que são importantes em matemática. A

Tabela 1.3 apresenta uma lista destas funções e sua

sintaxe.

Tabela 1.3 Funções Elementares

FUNÇÃO SINTAXE

Valor Absoluto

Arco Cosseno

Arco Seno

Cosseno

Exponencial 𝑒

𝑥

Logaritmo Natural

Logaritmo base 10

Seno

Raiz Quadrada

Tangente

abs(x)

acos(x)

asin(x)

cos(x)

exp(x)

log(x)

log10(x)

sin(x)

sqrt(x)

tan(x)

Se desejamos gerar o gráfico da função 𝑠𝑒𝑛(𝑥)

no intervalo [−𝜋 , 𝜋] devemos proceder da seguinte

forma:

>> x= −pi : 0.01 : pi;

>> f = sin ( x );

>> plot (x , f)

Note, que na definição do vetor x, usamos o

passo igual a 0.01. Isto determina a quantidade de

pontos que o comando plot usa para gerar o gráfico.

Quanto mais ponto mais perfeito será o gráfico (em

contra partida maior o tempo de execução). Se

tivéssemos o passo 0.5 não teríamos um gráfico de

boa qualidade.

1.1.2 M-arquivos

Existem dois tipos de programas em MatLab:

scripts e functions. Ambos devem ser salvos com

extensão * .m no diretório corrente. Uma diferença

básica entre os dois é que o scripts trata as variáveis,

nele definidas, como variáveis globais, enquanto

functions trata as variáveis como variáveis locais.

Desta forma functions tem que ter um valor de

retorno.

Scripts. Permite que um conjunto de comandos e

definições sejam executados através de um único

comando na janela de comandos. Como exemplo, o

2.2 ISOLAMENTO DAS RAÍZES

Um número x que satisfaz a equação 𝑓(𝑥) = 0 é

chamado de raiz ou zero de f. O objetivo é encontrar

um intervalo [ a, b ], de pequena amplitude (𝑏 − 𝑎 ≪

1 ), que contenha a raiz que desejamos encontrar.

Para isto usaremos duas estratégias: análise gráfica e

tabelamento da função.

A análise gráfica é baseada na ideia de que, a

partir da equação 𝑓(𝑥) = 0 , podemos obter uma

equação equivalente 𝑔(𝑥) − ℎ(𝑥) = 0 , onde g e h

sejam funções mais simples e de fácil análise

gráfica. Esboçando o gráfico de g e h podemos

determinar os pontos x , onde as curvas se

interceptam, pois estes pontos serão as raízes de

Exemplo 2.1 Sendo 𝑓(𝑥) = 𝑒

−𝑥

− 𝑥 temos 𝑓(𝑥) =

− ℎ(𝑥), onde 𝑔

−𝑥

e ℎ

Figura 2.1 Exemplo 2.1 da função f(x) = e

−x

− x.

Na Fig. 2.1 as curvas se interceptam no intervalo

[0, 1];

Pelo comportamento das funções 𝑔(𝑥) e ℎ(𝑥) não

há outro ponto de intercepção;

Logo, 𝑓(𝑥) admite uma única raiz.

A fase de refinamento será mais eficiente

quanto menor for a amplitude do intervalo que

contém a raiz. Para obtermos um intervalo de menor

amplitude usaremos a estratégia do tabelamento que

é baseada no seguinte Teorema.

Teorema 2.1 Seja 𝑓(𝑥) uma função contínua num

intervalo [ a, b ]. Se 𝑓

< 0 então existe pelo

menos uma raiz 𝜉 ∈

[

]

O Teorema 2.1 garante a existência de pelo

menos uma raiz, mas pode ser que o intervalo

contenha mais de uma raiz. E ainda, 𝑓′(𝑥) preserva

o sinal em [𝑎, 𝑏] e 𝑓(𝑎)𝑓(𝑏) < 0 , então o intervalo

contém uma única raiz.

Se 𝑓(𝑎)𝑓(𝑏) > 0 não podemos afirmar nada

sobre a existência ou não de raízes.

Exemplo 2.2 Dá análise da Fig. 2.1 a função 𝑓(𝑥) =

−𝑥

− 𝑥 tem uma raiz em [𝑎, 𝑏]. Tabelando a função

para valores a partir de zero e espaçados de 0,

observa-se que:

x 0 0.25 0.5 0.75 1

𝑓

( 𝑥

)

No intervalo

[

]

logo a raiz pertence ao intervalo.

Note que 𝑓

−𝑥

− 1 < 0 , ∀ 𝑥 ∈ ℜ, isto

é, 𝑓’ preserva o sinal em

[

]

o que implica em

dizer que esta raiz é única!

2.3 MÉTODO DA BISSECÇÃO

Este método é baseado no Teorema 2.1. Seja

𝑓(𝑥) uma função contínua no intervalo [ a , b ] tal

que 𝑓(𝑎)𝑓(𝑏) < 0 e seja 𝜀 > 0 um número dado. A

ideia é reduzir a amplitude do intervalo até atingir a

precisão requerida: 𝑏 − 𝑎 < 𝜀, usando divisão

sucessivas do intervalo.

Figura 2.2 Representação geométrica do método da bissecção.

0

0

0

0

0

0

0

0

1

0

1

0

1

1

1

1

1

1

1

1

2

1

2

1

2

2

2

2

2

2

2

2

3

2

3

2

E assim vamos calculando a sequência 𝑥

𝑘

até que

seja satisfeito o critério de parada

𝑘

𝑘

-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1

-0.

0

1

2

3

valores de x

h(x) = x

g(x) = exp(-x)

Esse critério garante que se tomarmos 𝑥̅ ∈ [𝑎

𝑘

𝑘

],

teremos a garantia que o erro é menor que 𝜀, isto é

𝑘

𝑘

2.4 ESTUDO DA CONVERGÊNCIA

A convergência é bastante intuitiva, como é

mostrado na Fig. 2.2. Vejamos a demonstração analítica

através do seguinte teorema.

Teorema 2.2 Seja f uma função contínua em [ a , b ], onde

𝑓(𝑎)𝑓(𝑏) < 0. Então o método da bissecção gera uma

sequência {𝑥 𝑘

} que converge para a raiz 𝜉 quando 𝑘 → ∞.

Prova : O método gera três sequências:

{ 𝑎

𝑘

} : Sequência não decrescente e limitada superior-

mente por 𝑏

0

. Logo

𝑎

0

≤ 𝑎

1

≤ ⋯ < 𝑏

0

⇒ ∃ 𝑀 ∈ ℝ

Tal que: lim

𝑘→∞

𝑎

𝑘

= 𝑀

{𝑏

𝑘

}: Sequência não crescente e limitada inferiormente

por 𝑎

0

. Logo

𝑏

0

≥ 𝑏

1

≥ ⋯ > 𝑎

0

⇒ ∃ 𝑚 ∈ ℝ

Tal que: lim

𝑘→∞

𝑏

𝑘

= 𝑚

{𝑥

𝑘

}: Por construção temos que

𝑥

𝑘

=

𝑎

𝑘

  • 𝑏

𝑘

2

⇒ 𝑎

𝑘

< 𝑥

𝑘

< 𝑏

𝑘

, ∀ 𝑘 ∈ ℕ ( 1 )

A amplitude de cada intervalo gerado é metade da

amplitude do intervalo anterior, assim temos,

𝑏

𝑘

− 𝑎

𝑘

=

𝑏

0

− 𝑎

0

2

𝑘

Calculando o limite quando 𝑘 → ∞ temos

lim

𝑘→∞

(𝑏

𝑘

− 𝑎

𝑘

) = lim

𝑘→∞

(

𝑏

0

− 𝑎

0

2

𝑘

) = 0

Isso segue que

lim

𝑘→∞

𝑏

𝑘

− lim

𝑘→∞

𝑎

𝑘

= 0 ⇒ 𝑀 − 𝑚 = 0 ⇒ 𝑀 = 𝑚

Usando este fato e calculando o limite em (1)

𝑚 = lim

𝑘→∞

𝑎

𝑘

< lim

𝑘→∞

𝑥

𝑘

< lim

𝑘→∞

𝑏

𝑘

= 𝑚 ⇒ lim

𝑘→∞

𝑥

𝑘

= 𝑚

Portanto m é raiz de f , isto é f ( m ) = 0. Em cada iteração

𝑓(𝑎 𝑘

)𝑓(𝑏

𝑘

) < 0.

2.5 MÉTODO DE NEWTON-RAPHSON (M.N.R)

O método de Newton-Raphson pode ser usado para

calcular raízes reais e complexas de 𝑓(𝑥) = 0. É

determinado de tal forma que teremos uma função de

iteração tal que 𝜙

(𝜉) = 0 , onde 𝜉 é uma raiz de f. Com

isto temos a garantia que existe um intervalo [𝑎, 𝑏] que

contém a raiz e que

| 𝜙′

( 𝑥

)| ≪ 1 e conseqüentemente a

convergência será mais rápida.

Para determinar a forma de 𝜙 considere uma função

𝐴(𝑥) continua e diferenciável e 𝐴(𝑥) ≠ 0 , ∀𝑥:

𝑓(𝑥) = 0 ⇒ 𝐴(𝑥)𝑓(𝑥) = 0 ⇒ 𝑥 = 𝑥 + 𝐴(𝑥)𝑓(𝑥) = 𝜙(𝑥)

Calculando a derivada de 𝜙 na raiz 𝜉 temos que

𝜙′(𝜉) = 1 + 𝐴

(𝜉)𝑓(𝜉) + 𝐴(𝜉)𝑓

(𝜉) = 0

Como 𝑓

( 𝜉

) = 0 e consideramos que 𝑓

(𝜉) ≠ 0 , segue

que

𝐴(𝜉) = −

1

𝑓

(𝜉)

Assim tomamos a função 𝐴

( 𝑥

) = − 1 /𝑓

(𝑥),e portanto

teremos

𝜙(𝑥) = 𝑥 −

𝑓(𝑥)

𝑓

(𝑥)

Com esta função de iteração montamos o processo

iterativo do método de Newton-Raphson, onde dado 𝑥

0

𝑥

𝑛+ 1

= 𝑥

𝑛

𝑓(𝑥

𝑛

)

𝑓

(𝑥

𝑛

)

, 𝑛 = 0 , 1 , 2 , …

Graficamente este método tem a interpretação

mostrada na Fig. 2.3. A derivada de uma função no ponto

𝑥

𝑛

é igual a tangente do ângulo formado entre a reta

tangente a curva, no ponto 𝑥

𝑛

, e o eixo x.

Usando a relação sobre o triangulo retângulo

temos

𝑓

(𝑥

𝑛

) = tan(𝛼) =

𝑓(𝑥

𝑛

)

𝑥

𝑛

− 𝑥

𝑛+ 1

⇒ 𝑥

𝑛+ 1

= 𝑥

𝑛

𝑓(𝑥

𝑛

)

𝑓

(𝑥

𝑛

)

Teorema 2.3 Sejam f, f’, f”, funções contínuas num

intervalo [ a , b ], onde existe uma raiz 𝜉. Supor que

𝑓

(𝜉) ≠ 0_. Então existe um intervalo_ [𝑎̅ , 𝑏

̅

] ⊂ [𝑎, 𝑏] ,

contendo a raiz 𝜉 , tal que se 𝑥

0

∈ [𝑎̅ , 𝑏

̅

] , a seqüência {

𝑥

𝑛

} gerada pelo processo iterativo

𝑥

𝑛+ 1

= 𝑥

𝑛

𝑓(𝑥

𝑛

)

𝑓

( 𝑥

𝑛

)

converge para a raiz.

Exemplo 2.3 Considere 𝑓(𝑥) = 𝑒

−𝑥

− 𝑥 possuindo uma

raiz no intervalo [0.5, 0.75], vamos achar uma

aproximação usando 𝑥

0

= 0. 625 𝑒 𝜀 = 0. 006. Sendo

𝑓

(𝑥) = −𝑒

−𝑥

− 1

teremos o processo iterativo