• Nenhum resultado encontrado

Critério de Paragem: |f(xk )| < 10

N/A
N/A
Protected

Academic year: 2019

Share "Critério de Paragem: |f(xk )| < 10"

Copied!
13
0
0

Texto

(1)

function y=f3(x) y = x.^3-5*x+1;

Pretende-se calcular uma aproximação para a menor raiz positiva da equação

    ,

pelos métodos de Newton-Raphson e ponto fixo.

a) Localize um intervalo que contenha a menor raiz positiva da equação dada

Determinar as raízes de é equivalente a determinar os

pontos que intersectam as funções e .

Graficamente podemos constatar que o intervalo I=[0, 0.5] contém a menor raiz positiva.

Podemos determinar o zero de uma função ou raiz da equação 0  utilizando a função fzero do MatLab. Para programar a função f(x) podemos utilizar a função inline na linha de comandos ou criar e salvar a função num ficheiro externo.

>> f3 = inline(‘x.^3-5*x+1'); ou no ficheiro f3.m

>> fzero('f3', [0,0.5]) ([0, 0.5] é o intervalo onde vai ser determinado o zero)

ans =

0.201639675723405

Como a função f(x) é um polinómio de grau 3 podemos alternativamente utilizar a função

roots para determinar as raízes de um polinómio.

>> roots([1 0 -5 1]) ([1 0 -5 1] representam os 4 coeficientes do polinómio de grau 3 , 5 1)

ans =

(2)

Teorema: (condições suficientes de convergência do método de Newton-Raphson): Sejafuma funçãoC2[a, b] .

Se forem satisfeitas as condições: 1) f(a) . f(b) < 0

2) f '(x) ≠ 0 , ∀ x ∈ [a, b] 3) f ‘’(x) ≠ 0 , ∀ x ∈ [a, b]

4) ( )

) ´( ) ( a b a f a

f < e

) ( ) ´( ) ( a b b f b f − <

então ∀ x0 ∈ [a, b] o método de Newton-Raphson converge para o único zero α de f(x) em I= [a, b] .

b) Considerando como ponto inicial x

0

=0.1, calcule uma aproximação do

menor zero positivo da função f(x) = x

3

- 5x + 1 em [0, 0.5] pelo método de

Newton-Raphson utilizando como critério de paragem que |f(x

k

) | < 10

-5

.

f(x) = x3-5 x+1

Requer:

f ∈ C2 ([0, 0.5])

1) f(0) x f(0.5) < 0

f(0) = 1, f(0.5)= -1.375

2) f’(x) 0, x [0, 0.5] 3) f’’(x) 0, x [0, 0.5]

f’(x)= 3 x2 – 5 < 0 x [0, 0.5] f’’(x)= 6 x > 0 x (0, 0.5] (não muda de sinal)

4) a) 0.2 0.5 5 1 ) 0 ´( ) 0

( = <

f f

e b) 0.3235 0.5 4.250 -1.375 -) 5 . 0 ´( ) 5 . 0

( = <

f f

Como todas as condições são satisfeitas, podemos concluir que o método de Newton-Raphson converge para a única raiz em I= [0, 0.5] tomando como solução

(3)

Método de Newton-Raphson

Aproximação Inicial: x0= 0.1

Fórmula Iteradora:

,

1

,

2

,...

)

´(

)

(

1 1

1

=

=

− −

k

x

f

x

f

x

x

k k k

k

(f(x) = x3 – 5 x + 1, f’(x) = 3 x2 - 5)

Critério de Paragem: |f(xk )| < 10-5

Iter. Abcissa do ponto de intersecção da tangente com

o eixo x

Valor da função em xk

f(x) = x3 – 5 x + 1

Valor da 1ª derivada da função em xk

f’(x) = 3 x2 - 5

|f(xk)|

< 10-5 ?

k xk f(xk) f’(xk) | f(xk) |

0 0.1 0.501 -4.97 0.501

1 0.200804828973843 0.00407282377878 -4.879032261982 0.00407283 2 0.201639589549319 0.00000042035929 -4.87802442778 0.00000042 < 0.00001 PARAR !!!

 

Foram necessárias 2 iterações para aproximar a menor raiz positiva com a

tolerância desejada

α 0.201639675723405

(valor calculado com a função fzero do Matlab) x2 = 0.201639589549319 com erro absoluto:

|e 2 |= |α - x2| = 0.86174086006 x 10-7 < 0.5 x 10-6

(4)

IMPORTANTE:

ƒ O método de Newton-Raphson tem ordem de convergência linear

se α é um zero duplo, i.e., se f’(α)=0, f’’(α) 0

ƒ O método de Newton-Raphson tem ordem de convergência quadrática

se α é um zero simples, i.e., se f’(α) 0

c) Diga, justificando qual a ordem de convergência da sequência de

iterações obtida na alinha b) para aproximar a menor raiz positiva da

equação dada

Considerando para a menor raiz positiva α o valor aproximado pelo método de

Newton-Raphson x2 temos que f’(α) f’(x2) =- 4.878 0

Como α é um zero simples de f(x) (f’(α)≠ 0), então a sucessão de aproximações {xk}

gerada pelo método de Newton-Raphson para qualquer aproximação inicial x0 em [0,

0.5] converge para α (a menor raiz positiva da equação dada) com ordem de

convergência quadrática e razão de convergência C= 0.1240:

0.5 0.2480 0.1240

8780 . 4

| 2098 . 1 2 1 ) ( '

) ( '' 2 1

lim 12 = × =

− = =

= +

α

α

f f

e e C

k k k

(5)

2 3 (5 1)

3 5 )

( '

− =

x x

g

3 5 1 )

(x = xg

d) Encontre uma função iteradora g(x) que torne o método do ponto fixo

convergente na aproximação do menor zero positivo da função

f(x) = x

3

- 5x + 1 no intervalo [0, 0.5]

Definição: Um ponto fixo de uma função g(x) é um número real α tal que α=g (α).

Podemos encontrar uma função g(x) tal que f(x) = 0x = g(x)

(g(x) é chamada função iteradora )

Função iteradora para aproximar a única raiz no intervalo I=[0, 0.5]

3 3

3

5

+

1

=

0

=

5

1

(

)

=

5

1

x

x

g

x

x

x

x

Teorema: (condições de convergência do método de ponto fixo)

Seja α uma raiz da equação f(x) = 0, isolada num intervalo I=[a,b].

Seja g(x) ∈ C’(I) uma função iteradora para a equação f(x) = 0.

se:

i)

g

(I) ⊂ I (

g

(x) ∈ I, ∀x∈ I)

ii) 0 < M= max |

g

’(

x

)| < 1 (g é contractiva)

x

∈ I

então

x

0

I

(6)

2

5 3 ) (

' x x

g =

5 1 )

(

3+ = x x g

Como g'(x) não é contínua em I (para x=0.2 g'(x) está indefinida) não podemos

usar esta função iteradora em I=[0, 0.5].

Temos que procurar uma outra função iteradora alternativa:

5

1

)

(

5

1

0

1

5

3

3 3

+

=

+

=

=

+

x

x

g

x

x

x

x

Graficamente verifica-se que g(x) e g'(x) são contínuas em I. Além disso:

i) g(x) ∈ [0.2, 0.225] ⊂ I=[0, 0.5], ∀ x ∈ I

ii) 0 < M = max |g’(x)| < 1

Como g’(x) é monótona crescente então M= |g’(0.5) | =0.15 < 1

Então, ∀ x0 ∈ I=[0, 0.5] a fórmula iteradora definida por:

5

1

3 1

+

=

k

k

x

x

; k = 1, 2, …,

(7)

5 1 )

(

3+ = x x g

e) Considerando como ponto inicial x

0

=0.1, calcule uma aproximação do

menor zero positivo da função f(x) = x

3

- 5x + 1 em [0, 0.5] utilizando a

iteradora g(x

k

) encontrada na alinha anterior e usando como critério de

paragem |f(x

k

) | < 10

-5

.

Na alínea anterior foi provado que uma função iteradora g(x) convergente para aproximar a raiz em [0, 0.5] é

Método do Ponto-Fixo

Aproximação Inicial: x0= 0.1

Fórmula Iteradora:

,

1

,

2

,...

5

1

3

1

+

=

=

k

x

x

k

k

Critério de Paragem: |f(xk)| < 10-5

k xk = g(xk-1) |f(xk)|

0 0.1 0.501

1 0.200200000000000 0.007024024008

2 0.201604804801600 0.000170101940274

3 0.201638825189655 0.000004148924756

< 0.00001 PARAR !!!

 

Foram necessárias 3 iterações para aproximar a raiz com a tolerância desejada

Tomando como valor exacto, o valor obtido com a função fzero do MatLab

α = 0.20163967572405 (tomando o valor obtido em MatLab com fzero)

x3 = 0.201638825189655 com erro absoluto:

|e 3 |= |α - x3| ≈ 0.85053375 x 10-6≤ 0.5 x 10-5

A aproximação de α encontrada pelo método do ponto fixo tem pelo menos 5 casas

(8)

IMPORTANTE:

ƒ O método do ponto fixo tem convergência linear se g’(α) ≠ 0

ƒ O método do ponto fixo tem convergência quadrática se g’(α) = 0, g’’(α) ≠ 0

5 1 )

(

3+ = x x

g 2

5 3 ) (

' x x

g =

f) Diga, justificando qual a ordem de convergência da sequência de

iterações obtida pelo método do ponto fixo

Seja α o ponto fixo de em I=[0, 0.5] com

Como:

‰ g’(x) ∈ [0, 0.15] (g(x) monótona cresce em I=[0, 0.5] , g’(0)=0 e g’(0.5)=0.15)

‰ α∈ (0, 0.5)

| g’(α) | 0

Assim, para qualquer aproximação inicial x0próxima da raiz em [0, 0.5], a sucessão

{xk} gerada pela fórmula iteradora

,

1

,

2

,...

5

1

3

1

+

=

=

x

k

x

k

k converge para α com

ordem de convergência linear e razão de convergência C = |g’(α)|.

Considerando para a menor raiz positiva α o valor aproximado x3 temos que

!

1

)

(

1

α

g

(9)

5 1 ) ( 3+ = x x g 5 1 ) ( 3+ = x x g

g) Compare as aproximações obtidas e exponha as conclusões a que chegou

tendo em conta a ordem de convergência de cada método

Método Ordem de convergência

lim |e k+1| = C |ek|p

k→∞

se p=1, linear se p=2, quadrática

iter.

Valor aproximado xk

α ≈0.201639675723405 (valor obtido com a função

fzero do Matlab)

Erro absoluto |e k|

associado à aproximação

obtida

Newton Raphson

linear se zero duplo

(f’(α)=0, f’’(α)≠0)

quadrática se zero simples

(f’(α)≠0)

Como o zero que

corresponde à menor raiz positiva é simples então a convergência é quadrática com razão de convergência

0.1240 ) ( ' ) ( '' 2 1 = α α f f C

(tomando como α a

aproximação x2 obtida pelo método de N-R)

Assim, para k=1,2,…:

2 1 0.1240 k

k e

e + ≈ ×

2 x2=0.20163958954931 |e 2| ≤ 0.5 x 10-6

(6 casas decimais correctas)

Ponto Fixo x=g(x)

linear se g’(α) ≠0

quadrática se g’(α)=0,

g’’(α) ≠0 usando a função iteradora

como |g’(α)| ≠ 0, então a convergência é linear com razão de convergência

0.2016 )

( 1 = g α

C

(tomando como α a aproximação x3 obtida pelo método do ponto fixo) Assim, para k=1,2,…:

k

k

e

e

+1

0.2016

×

3 x3=0.20163882518966 |e 3| ≤ 0.5 x 10-5

(5 casas decimais correctas)

Como neste exemplo o método de N-R tem convergência quadrática e o do ponto fixo (com a função iteradora aqui usada) tem convergência linear, a sucessão gerada pelo método de N-R converge mais rapidamente para a menor raiz positiva da equação dada.

(10)

function [y, y1] = f3(x) y = x.^3-5*x+1;

y1= 3*x.^2-5;

function [y, y1] = f3(x)

y = polyval([1,0,-5,1], x); y1= polyval([3,0,-5], x);

function [y, y1] = f3(x)

y = polyval([1,0,-5,1], x); y1= polyval([3,0,-5], x);

Implementação em MatLab

Considerando como ponto inicial x

0

=0.1, calcule uma aproximação do menor

zero positivo da função f(x) = x

3

- 5x + 1 em [0, 0.5] pelo método de

Newton-Raphson utilizando como critério de paragem que |f(x

k

) | < 10

-5

.

Em Matlab podemos implementar o método de Newton utilizando a rotina newton1

do pacote de MN:

>> newton1('f3', 0.1, 0, 10^-5, 20)

A função f3 deve retornar os valores de y(x) e de y’(x). No caso de funções polinomiais é melhor utilizar a função polyval

Podemos também implementar duas iterações do método de Newton a partir da

aproximação inicial x0=0.1 através deste simples programa (script) em Matlab:

A função f3 deve retornar os valores de y(x) e de y’(x).

Ao executar o programa anterior obtemos

format long;

x0=0.1;

[y, dy]=f3(x0);

x1=x0-y/dy

[y, dy]=f3(x1); x2=x1-y/dy

x1 =

0.200804828973843

x2 =

(11)

e) Considerando como ponto inicial x

0

=0.1, calcule uma aproximação do

menor zero positivo da função f(x) = x

3

- 5x + 1 em [0, 0.5] de tal forma que

|f(x

k

) | < 10

-5

utilizando a iteradora convergente

,...

2

,

1

,

5

1

3

1

+

=

=

x

k

x

k

k

Implementação na Linha de Comandos

Implementação construindo um programa (script) em Matlab

Podemos também construir um script em MatLab que nos permita determinar todas

as aproximações utilizando o critério de paragem |f(xk)| < 10-5

>> g=inline('(x.^3+1)/5'); >> x0=0.1;

>> x1=g(x0)

x1 =

2.117911792127447

>> x2=g(x1)

x2 =

2.124546354697556

>> x3=g(x2)

x3 =

2.126993323960139

% dados de entrada f=inline('x.^3-5*x+1'); g=inline('(x.^3+1)/5'); x=0.1;

tol=1e-5

% processo iterativo for k=1:1000

x=g(x);

if (abs(f(x))< tol)

break; % foi satisfeito o critério de paragem

end

end

(12)

Para visualizar todas as aproximações, basta apenas enviar uma mensagem com o

comando display após de ser calculada cada aproximação.

Implementação construindo a nossa própria função

Para que este algoritmo possa ser utilizado com outras funções f e g e outros dados, podemos construir uma função em MatLab com os seguintes parâmetros de entrada:

a função f(x)

a função iteradora g(x)

a solução inicial x0

a tolerância desejada (segundo o o critério |f(xk) | < 10-5

o número máximo de iterações kmax

e que como saída retorne o valor da aproximação encontrada.

% dados de entrada f=inline('x.^3-5*x+1'); g=inline('(x.^3+1)/5'); x=0.1;

tol=1e-5

% processo iterativo for k=1:1000

x=g(x);

display(['x(', num2str(k),')= ', num2str(x,8)]);

if (abs(f(x))< tol)

break; % foi satisfeito o critério de paragem

end

end

display('A aproximação encontrada é'); x

function x = pfixo(f, g, x0, tol, kmax)

x=x0;

for k=1:kmax x=g(x);

display(['x(', num2str(k),')= ', num2str(x,8)]);

if (abs(f(x))< tol)

break; % foi satisfeito o critério de paragem

end

end

if (k==kmax & f(x)>=tol)

disp('O ponto fixo não foi encontrado com a tolerância

desejada.')

else

display('A aproximação encontrada é'); x

(13)

Uma vez construída a função, esta deve ser guardada num ficheiro com o mesmo

nome, pfixo.m. Depois, pode ser chamada para execução na janela do comando do

MatLab:

Como resultado obtém-se:

Implementação utilizando a função pontofixo do pacote de rotinas de MN

A função pontofixo pode ser chamada para execução na janela do comando do MatLab:

>> f=inline('x.^3-5*x+1'); >> g=inline('(x.^3+1)/5'); >> pfixo(f,g,0.1,1e-5,1000)

x(1)= 0.2002 x(2)= 0.2016048 x(3)= 0.20163883

A aproximação encontrada é x =

0.201638825189655

>> f=inline('x.^3-5*x+1');

>> g=inline('(x.^3+1)/5');

Referências

Documentos relacionados

Determine a lei da função afim cujo gráfico passa pelos pontos de interseção dessas

✓ Embora a função de onda seja, em geral, uma função complexa, o seu módulo quadrado é sempre uma função real... A posição agnóstica: recusa-se

Se errar, será concedida uma nova chance para que as demais equipes acionem seu sinal luminoso ao tempo determinado pelo(a) apresentador(a), e assim

Dessa forma, Benjamim postula uma verdade para além da história, pois a verdade do passado está naquilo que ele encerra e, por isso, a tarefa do historiador será revelar

I As demonstrações destas propriedades seguem basicamente as mesmas técnicas usadas na demonstração das propriedades da função raiz quadrada. Elas ficam, portanto,

Para instalação em tubo de escoamento, retire a curva plástica, empurrando a mangueira para dentro da curva plástica e, em seguida, para cima.Nunca solte a mangueira

O autor utilizou a história da matemática como metodologia de ensino, apresentando para os alunos uma sequência didática baseada na sequência histórica do desenvolvimento

Funções Reais: função escada, função módulo, funções lineares, funções polinomiais, funções racionais, funções trigonométricas, funções trigonométricas inversas,