• 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

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,

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

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,

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