Advertisement
luizaspan

[PROVA FSC_COMP] Raiz de equação: iteração ponto fixo

Sep 24th, 2015
380
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.31 KB | None | 0 0
  1. /*
  2. O MÉTODO EXPLICADO:
  3. De f quero achar a raiz:
  4. escolho g(x) de modo que f(x)=0 e g(x)=x
  5.  
  6. Dada f(x), com f(x_0) = 0, queremos encontrar um intervalo [a,b] tal que x_0 em [a,b] e uma função g tal que g(x_0) = x_0 e |g'(x)| < 1 pra todo x em [a,b].
  7. 1. Dada a função, plotar gráfico pra verificr comportamento
  8. 2. Definir intervalo no qual se encontra a raiz (definir [a,b])
  9. 3. Definir derivada da função
  10. 4. Aplicar os pontos limite do intervalo da raiz da função na derivada e ver o intervalo da derivada
  11. 5. Definir g(x) = (-1/M)*f(x) + x, sendo m o máximo valor no intervalo da derivada para que, desse modo, possamos limitar |g'(x)| < 1
  12. 6. Se f(x_0) = 0, então g(x_0) = -1/8*f(x_0) + x_0 = x_0, isto é, x_0 é a raiz da f (o que queremos) é ponto fixo de [; g ;]
  13.  
  14. Determinar os pontos fixos de uma função f(x) é determinar a interseção entre as curvas y=f(x) e y=x.
  15. */
  16.  
  17. #include <stdio.h>
  18. #include <math.h>
  19.  
  20. #define eps 1e-6
  21.  
  22. double f(double x)
  23. {
  24.     return (1./5*(6 - x*x + 4*x)); // g(x) vinda de f(x)
  25. }
  26.  
  27. int main(void)
  28. {
  29.     int i;
  30.     double x=1.5, y, delta; // x é o ponto de partida
  31.  
  32.     do
  33.     {
  34.         y=f(x);
  35.         delta=fabs(y-x);
  36.         x=y;
  37.         printf("%lf \t %lf \n",x,f(x)); //g(x) vai convergir pra um ponto (x_0) -- seu ponto fixo -- que é raiz da função f(x)
  38.     } while (delta > eps);
  39.  
  40.     return 0;
  41. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement