Zeros Reais de Funções Reais - Imecc

Propaganda
MS 211 Cálculo Numérico
Segundo Semestre de 2011
Petronio Pulino
DMA/IMECC/UNICAMP
e-mail: [email protected]
www.ime.unicamp.br/∼pulino/MS211/
Lista de Exercı́cios 02
Zeros Reais de Funções Reais
1. a.) Usando fórmula de Taylor, obtenha as aproximações linear e quadrática de
f (x) = cos(x), em torno de π/4 ;
b.) Em um mesmo gráfico, esboce a curva y = cos(x) e as aproximações linear e
quadrática obtidas em (a). Através do gráfico analise o comportamento das aproximações, constatando que estas são “boas”aproximações apenas localmente. Qual
das curvas você escolheria para aproximar f (x) em torno de π/4 ? ( Os gráficos
podem ser traçados usando o Matlab, o Mathematica ou ainda na calculadora).
2. Localize graficamente os zeros das funções a seguir:
a) f (x) = 4 cos(x) − exp(2x) b) f (x) = x/2 − tan(x)
c) f (x) = 1 − ln(x)
d) f (x) = 2x − 3x
e) f (x) = x3 + x − 1000
3. Usando o método de Newton, obtenha um processo para obter b/a numa calculadora
que soma, subtrai e multiplica. Obtenha uma aproximação para o valor de 3/13 .
√
b . Aplique o método de Newton
4. A equação √
x2 − b = 0 tem como raiz exata
para obter
3356 com precisão 10−4 se estiver usando um computador e precisão
10−2 se estiver usando uma calculadora não programável.
5. A equação x2 + t = 0 possui raiz real somente se t ≤ 0 . Faça t = 0 e aplique
os métodos: bissecção, Newton e secante com as seguintes aproximações iniciais (use
ε = 10−4 ):
i) Para o método da bissecção (usando o algoritmo dado em aula com critério de parada (b − a) < ε): [a, b] = [−2, 2] e [a, b] = [−5, 2]. Justifique o que acontece em cada
caso; para Newton, use x0 = −2 e para secante: x0 = −2 e x1 = 2;
ii) Repita o exercı́cio para um valor de t estritamente positivo e usando as mesmas
aproximações iniciais.
Justifique o comportamento da sequência gerada em cada caso, considerando as hipóteses
de convergência de cada método.
1
6. Use os métodos de bissecção, Newton e Secante (programados para rodar no MatLab,
ou em alguma outra linguagem) para obter a menor raiz positiva das equações a seguir
com precisão 10−7 , (se usar apenas uma calculadora, faça precisão igual a 10−3 ).
a) x/2 − tg(x) = 0; b) 2cos(x) − exp(x)/2 = 0; c) x5 − 6 = 0.
Faça uma tabela para apresentar uma comparação entre os métodos, mostrando para
cada teste: o número de operações (comando flops do MatLab ) efetuadas para obter
a raiz e o número de iterações. Para efeitos de comparação: se a aproximação inicial
para a bissecção for o intervalo [a, b] use a como chute inicial para o método de Newton
e a e b como chutes iniciais para o método da secante.
7. Calcule a raiz cúbica de 4 com precisão 10−3 através de um método para resolução de
equações. Justifique sua escolha.
8. O método de Newton Modificado consiste em gerar a sequência {xk } através de: xk+1 =
xk − f (xk )/f 0 (x0 ) onde x0 é uma aproximação inicial.
a) com auxı́lio de um gráfico, escreva a interpretação geométrica deste método;
b) cite vantagens de desvantagens deste método em relação ao método de Newton.
9. O valor de π pode ser obtido através da resolução das seguintes equações: sen(x) =
0 e cos(x) + 1 = 0. Aplique o método de Newton com x0 = 3 e precisão 10−4
em cada caso e compare os resultados.
10. Considere a função f (x) = x2 /2 + x(ln(x) − 1) . Obtenha seus pontos crı́ticos
com o auxı́lio de um método para zeros de funções.
11. Seja f (x) = xe−x − e−3 .
(a) verifique gráfica e analiticamente que f (x) possui um zero no intervalo [0, 1];
(b) justifique teoricamente o comportamento da sequência {xk } colocada a seguir,
gerada pelo método de Newton para o cálculo de zero de f (x) em [0, 1], com x0 = 0.9
e precisão ε = 5 × 10−6 .
x0
x1
x2
x3
x4
=
=
=
=
=
0.9
−6.8754
−6.0024
−5.1452
−4.3079
x5
x6
x7
x8
x9
=
=
=
=
=
−3.4962
−2.7182
−1.9863
−1.3189
−0.7444
x10
x11
x12
x13
=
=
=
=
−0.3041
0.0427
0.0440
0.0480
12. Uma das dificuldades do método de Newton é o fato de uma aproximação xk ser tal
que f 0 (xk ) = 0 . Uma modificação do algoritmo original para prever estes casos
consiste em: dado λ um número positivo próximo de zero e supondo f 0 (x0 ) ≥ λ , a
sequência xk é gerada através de:
xk+1 = xk − f (xk )/F L,
onde
FL =
0
k = 0, 1, 2, · · ·
0
f (xk ), se | f (xk ) |> λ
0
f (xw ), caso contrário
0
onde xw é a última aproximação obtida tal que f (xw ) |≥ λ.
2
Pede-se:
(a) baseado no algoritmo de Newton, escreva um algoritmo para este método;
(b) aplique este método à resolução da equação x3 −9x+3 = 0, com x0 = −1.275, λ =
0.05 e ε = 0.05.
Alguns comandos do Matlab
flops significa : operações em ponto flutuante. No MatLab, para saber quantas operações
foram realizadas devemos zerar o contador de número de flops através do comando flops(0)
em seguida executamos o programa; após esta execução deve ser dado o comando flops que
devolverá o total de flops usadas para a execução daquele programa.
Os métodos da Bissecção, Newton e Secante podem ser programados usando o MatLab.
Todos precisam de um procedimento para avaliar o valor da função. Usando como exemplo
a função: f (x) = ln(x) + x − 5 o arquivo para avaliar a função seria:
function f=func(x)
f = log(x) + x - 5;
Este arquivo deverá ser denominado : func.m. A declaração “function”é necessária para
estabelecer que este programa se refere a uma função que será usada por outro programa.
Os nomes das variáveis “f”e “x”são escolhidos pelo usuário e, log é a função interna do
Matlab para o “ln”.
Em qualquer programa do MatLab que apareça a linha de comando:
v = func(x0)
significa que a variável v recebe o valor da função programada no arquivo func.m avaliada
em x0. Portanto, x0 deverá ser calculado antes da chamada de func.
Observar que no caso do método de Newton, além do programa para avaliar a função será
necessário escrever um programa para avaliar a derivada. No exemplo, em que f (x) =
ln(x) + x − 5 teremos f 0 (x) = 1/x + 1 e um programa para esta derivada seria:
function d=deriv(x)
d = 1/x + 1;
Este arquivo deverá ser denominado : deriv.m.
O MatLab possui uma “function”que obtém uma aproximação para o zero de uma dada
função. O comando fzero( ’func’, 3, 1.e-4, 1) faz com que o zero da função programada no arquivo func.m seja encontrado usando chute inicial 3 com precisão 10−4 . O número
1 que aparece como último argumento indica que queremos ver um resumo das iterações realizadas. O comando v=[3,4] corresponde a criar o vetor v = (3,4) dentro do MatLab.
O comando fzero( ’func’, v, 1.e-4, 1) faz com que o zero da função programada no
arquivo func.m seja encontrado usando como chute inicial o intervalo [3, 4].
3
Obtenha os zeros das funções do exercı́cio 5 usando o comando fzero. Conte o número de
flops e o de iterações e compare com os resultados dos outros métodos: bissecção, Newton e
secante.
Os zeros de f (x) podem ser localizados usando o comando plot do MatLab; considerando
a função f (x) = ln(x) + x − 5 como exemplo, o programa abaixo que tem como resultado o
gráfico de f(x) “plotado”quando a variável x pertence ao intervalo [0.1; 7]:
hx = 4.0 / 128;
x = 1.0:hx:5.0;
y = log(x) + x - 5.0;
%
figure(1), plot(x,y), grid on
title(’Localizacao Grafica de Raizes’)
xlabel(’Grafico da Funcao f(x) = ln(x) + x - 5’)
e, o programa a seguir, plota as curvas: ln(x) e 5 − x no mesmo gráfico, para localizar os
pontos onde as duas se interceptam:
hx = 4.0 / 128;
x = 1.0:hx:5.0;
y = log(x);
z = 5.0 - x;
%
figure(2), plot(x,y,x,z), grid on
title(’Localizacao Grafica de Raizes’)
xlabel(’Graficos das Funcoes g(x) = ln(x)
e
h(x) = 5 - x’)
Nos programas acima, o comando figure(1) é dado para abrir (ou acionar) uma janela
gráfica. Se a janela para figure(1) já estiver aberta, este comando simplesmente torna esta
janela ativa para plotar o gráfico. O comando clf irá apagar um gráfico ou desenho da
janela da figura (1). Finalmente, o comando hold é dado para que o gráfico da próxima
curva seja plotado sobre o anterior.
4
Download