Buscar

Método Newton Raphson

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 6 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 6 páginas

Prévia do material em texto

FISP 1/6 
 
110 Computação para Engenharia Turmas EM1A, EM1B, EM2A e EM2B 
12a AULA - exercícios 
12ª Aula - Exercícios 
Implementação Computacional do Método Newton-Raphson 
Método das Aproximações Sucessivas de Newton-Raphson: Utilizado para encontrar a raiz 
ou raízes de uma função matemática complexa. A raiz é o ponto exato em que a função cruza 
o eixo x, ou seja, o valor de x que torna o resultado da função igual a zero. 
Aplicação do Método: 
1) Dada a função f(x), ao qual se deseja calcular a raiz, determinar a derivada primeira da 
função: f’(x) 
2) Montar a expressão do Método de Newton-Raphson (fórmula de recorrência) utilizada 
para obter as aproximações: 
)('
)(
1
i
i
ii
xf
xf
xx −=+
 
3) Escolher o valor inicial (“chute inicial”) para começar as aproximações. Se o gráfico da 
função estiver disponível, deve ser escolhido como “chute inicial” um valor próximo ao 
ponto onde gráfico cruza o eixo x (raiz da função). Desta forma o programa convergirá 
rapidamente à raiz da função e, consequentemente, serão realizadas menos iterações. 
4) Começar o cálculo com a expressão usando x=x1 (valor inicial ou “chute inicial”). Em 
seguida, obter os demais valores de x por meio da expressão do Método de Newton-
Raphson dada acima. 
5) Continuar o procedimento até que o resultado atinja a precisão desejada. 
 
Exemplo 1: 
Calcular a raiz da função 5)( 2 −= xxf ou 505)( 2 =⇒=−= xxxf 
 
Figura 1 – Gráfica da função 
FISP 2/6 
 
110 Computação para Engenharia Turmas EM1A, EM1B, EM2A e EM2B 
12a AULA - exercícios 
Fórmula de recorrência utilizada para realizar as aproximações: 
i
i
i
i
i
ii
x
x
x
xf
xf
xx
2
5
)('
)( 2
1
−
−=−=+ 
Começando o cálculo com x1 = 2 teremos a tabela abaixo como exemplo da aplicação 
do método de Newton-Raphson: 
i
1 x 1 = 2
2 x 2 = 2.25
3 x 3 = 2.236111111 x 4 =2.236067978
4 x 4 = 2.236067978 x 5 =2.236067977
5 x 5 = 2.236067977 x 6 =2.236067977
x i
i
i
i
i
i
ii
x
x
x
xf
xf
xx
2
5
)('
)( 2
1
−
−=−=+
25.2
22
522
2
2 =
⋅
−
−=x
2361111111.2
25.22
525.225.2
2
3 =
⋅
−
−=x
 
Logo se continuarmos aplicando a fórmula de recorrência do Método de Newton 
obteremos sempre o mesmo resultado, pois o mesmo convergiu para a raiz da função, ou seja, 
236068.25 = (considerando apenas 6 casas após o separador decimal). 
 
Implementação computacional usando laço contado (FOR) para 10 iterações. 
 
#include<stdio.h> 
#include<stdlib.h> 
#include<math.h> 
int I; 
float X=2; //declaração da variável X e seu chute inicial 
int main() 
{ 
 for (I=1;I<=10;I++) //laco contado para 10 iteracoes 
 { 
 printf("Valor de X%d=%f\n",I,X); 
 X=X-((X*X-5)/(2*X)); //formula de recorrencia de Newton que 
 } //calcula o novo valor de X (raiz da função) 
 printf("raiz da funcao=%f\n",X); 
 system ("PAUSE"); 
} 
 
 
 
 
SAÍDA (OUTPUT) DO PROGRAMA: 
 
 
 
 
 
 
Valor de X1=2.000000 
Valor de X2=2.250000 
Valor de X3=2.236111 
Valor de X4=2.236068 
Valor de X5=2.236068 
Valor de X6=2.236068 
Valor de X7=2.236068 
Valor de X8=2.236068 
Valor de X9=2.236068 
Valor de X10=2.236068 
raiz da funcao=2.236068 
Pressione qualquer tecla para continuar. 
FISP 3/6 
 
110 Computação para Engenharia Turmas EM1A, EM1B, EM2A e EM2B 
12a AULA - exercícios 
 
A implementação computacional do laço condicional (while) com controle de precisão de 
0.000001 (1x10-6) para o mesmo exemplo é apresentado a seguir. Neste caso não utilizaremos 
a condição de exatidão da repetição Xi+1=Xi, aplicada nos exemplos da Aula 12 - exemplos de 
programas com estruturas de repetição. A explicação para não utilizarmos esta condição reside 
no fato de que nem sempre a mesma pode ocorrer de fato, e a maioria dos profissionais opta 
por descartá-la em suas aplicações. Alguns optam por substituírem por outra condição que 
limita o número de repetições ou iterações (imáx=100), conforme pode ser visto no programa 
abaixo. 
 
#include <stdio.h> 
#include <stdlib.h> 
#include <math.h> 
int I=1; 
double X=2,Aux=0; 
int main() 
{ 
 while(fabs(X-Aux)>0.000001 && I<=100) //fabs eh o absoluto de um float 
 { //operador “E” com Imax de 100 
 printf("Valor de X%d= %f\n",I,X); //apresenta o valor de X atual 
 Aux=X; //variavel que armazena o valor do X anterior 
 X=X-((X*X-5)/(2*X)); //formula de recorrencia de Newton 
 //calcula o novo valor de X (raiz da função) 
 I++; //contador do numero de iteracoes 
} 
 printf("Raiz da funcao=%f\n",X); 
 printf("Valor encontrado com %d iteracoes\n",I); 
 system("PAUSE"); 
} 
 
SAÍDA (OUTPUT) DO PROGRAMA: 
 
Notar que o valor da raiz da função 
apresentado é o X5, é por esta razão que 
o programa indica 5 iterações. 
 
 
 
 
Valor de X1= 2.000000 
Valor de X2= 2.250000 
Valor de X3= 2.236111 
Valor de X4= 2.236068 
Raiz da funcao=2.236068 
Valor encontrado com 5 iteracoes 
Pressione qualquer tecla para continuar.
É importante observar a diferença entre os dois exemplos apresentados: 
Embora ambos gerem o mesmo resultado para a raiz aproximada da função, o 
exemplo com o laço condicional while chegou ao resultado da raiz da função em 
5 iterações, sendo 1 chute inicial e 4 aplicações do método de Newton-Raphson 
ou fórmula de recorrência com precisão de cálculo de 1x10-6. Já o exemplo com 
laço contado for foram geradas 11 aproximações da raiz da função, sendo 1 
chute inicial e 10 aplicações do método de Newton-Raphson. 
FISP 4/6 
 
110 Computação para Engenharia Turmas EM1A, EM1B, EM2A e EM2B 
12a AULA - exercícios 
Exemplo 2: Calcular a raiz da função )cos()( xxxf −= 
 Comece o cálculo com 11 =x 
 Expressão utilizada para realizar as aproximações: 
)(1
)cos(
)('
)(
1
i
ii
i
i
i
ii
xsen
xx
x
xf
xf
xx
+
−
−=−=+
 
Começando o cálculo com x1 = 1 teremos a tabela abaixo como exemplo da aplicação do 
método de Newton-Raphson: 
i x i
1 1 0.750363867840244
2 0.750363867840244 0.739112890911362
3 0.739112890911362 0.739085133385284
4 0.739085133385284 0.739085133215161
5 0.739085133215161 0.739085133215161
6 0.739085133215161 0.739085133215161
7 0.739085133215161 0.739085133215161
8 0.739085133215161 0.739085133215161
9 0.739085133215161 0.739085133215161
10 0.739085133215161 0.739085133215161
)(1
)cos(
)('
)(
1
i
ii
i
i
i
ii
xsen
xx
x
xf
xf
xx
+
−
−=−=+
 
Implementação computacional usando laço contado (FOR) 
 
#include<stdio.h> 
#include<stdlib.h> 
#include<math.h> 
int I; 
float X=2; 
int main() 
{ 
 for (I=1;I<=10;I++) 
 { 
 X=X-((X-cos(X))/(1+sin(X))); 
 printf("Valor de X%d=%f\n",I,X); 
 } 
printf("raiz da funcao=%f\n",X); 
system ("PAUSE"); 
} 
SAÍDA (OUTPUT) DO PROGRAMA: 
 
 
 
 
 
 
 
 
 
 
 
 
Valor de X1=0.734536 
Valor de X2=0.739090 
Valor de X3=0.739085 
Valor de X4=0.739085 
Valor de X5=0.739085 
Valor de X6=0.739085 
Valor de X7=0.739085 
Valor de X8=0.739085 
Valor de X9=0.739085 
Valor de X10=0.739085 
raiz da funcao=0.739085 
Pressione qualquer tecla para continuar. 
FISP 5/6 
 
110 Computação para Engenharia Turmas EM1A, EM1B, EM2A e EM2B 
12a AULA - exercícios 
 
Implementação computacional usando laço condicional (WHILE) com controle de precisão de 
0.000001. 
 
#include <stdio.h> 
#include <stdlib.h> 
#include <math.h> 
int I=1; 
double X=2,Aux=0; 
int main() 
{ 
 while(fabs(X-Aux)>0.000001 && I<=100) 
 { 
 printf("Valor de X%d= %f\n",I,X); 
 Aux=X; 
 X=X-((X-cos(X))/(1+sin(X))); 
 I++; 
 } 
 printf("Raiz da funcao=%f\n",X);printf("Valor encontrado com %d iteracoes\n",I); 
 system("PAUSE"); 
} 
 
 
SAÍDA (OUTPUT) DO PROGRAMA: 
 
Notar que o valor da raiz da função 
apresentado é o X5, é por esta razão que 
o programa indica 5 iterações. 
 
 
 
Valor de X1= 2.000000 
Valor de X2= 0.734536 
Valor de X3= 0.739090 
Valor de X4= 0.739085 
Raiz da funcao=0.739085 
Valor encontrado com 5 iteracoes 
Pressione qualquer tecla para continuar.. 
 
Se considerarmos uma precisão de 1x10-3 obteríamos a seguinte saída: 
Valor de X1= 2.000000 
Valor de X2= 0.734536 
Valor de X3= 0.739090 
Raiz da funcao=0.739085 
Valor encontrado com 4 iteracoes 
Notar que o módulo da subtração do valor da raiz da função pelo valor de X3 é igual a 5x10-6, 
valor inferior à precisão desejada de 1x10-3. 
Nota: é possível alterar o número de algarismos do resultado da função da seguinte forma: 
printf("Raiz da funcao=%1.9f\n",X); 
 Para o exemplo acima a saída do programa ficaria: 
Valor de X1= 2.000000 
Valor de X2= 0.734536 
Valor de X3= 0.739090 
Valor de X4= 0.739085 
Raiz da funcao=0.739085133 
Valor encontrado com 5 iteracoes 
Experimente alterar os valores de %N.Nf e verifique o resultado.
FISP 6/6 
 
110 Computação para Engenharia Turmas EM1A, EM1B, EM2A e EM2B 
12a AULA - exercícios 
Exercícios propostos 
1) Calcule a raiz das funções matemáticas abaixo através de um laço contado 
para um máximo de 15 iterações. 
a) 19)( 3 −= xxf (adote x1=3) 
b) xexf x 5)( 2 += (adote x1=0) 
c) xexxf 3ln)( −−= (adote x1=2) 
 
2) Calcule as raízes das funções matemáticas abaixo com controle de precisão 
de 0.000001, e também determinando quantas iterações serão necessárias 
para se atingir esta precisão. O programa deverá ter um limite de iterações da 
fórmula de recorrência de Newton-Raphson, tal como mostrado nos exemplos 
desta nota de aula. 
a) xexxf 3ln)( −−= (adote x1=2) 
b) )4(ln)( 2 −−= xxxf (adote x1=1) 
c) 124)( 37 ++= xxxf (adote x1=-1.5) 
 
Respostas: 
1) 
a) 2.668402 
b) -0.148584 
c) 1.044525 
 
2) 
a) 1.044525 com 7 iterações 
b) 2.186888 com 7 iterações 
c) -1.236927 com 6 iterações

Continue navegando