Advertisement
ivanmendes

Método das Secantes - Função 2

Apr 29th, 2016
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.69 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <math.h>
  3.  
  4.  double funcao (double x){
  5.  
  6.     double y;
  7.     y = 2 * exp(-x) - exp(x);
  8.     return y;
  9. }
  10.  
  11. int main (){
  12.  
  13.     double a, b, x0, x1, x2, erromax, raiz;
  14.     int i, nmax, opc;
  15.  
  16.     printf("Digite o numero maximo de iteracoes: ");
  17.     scanf("%d", &nmax);
  18.  
  19.     printf("Digite o erro maximo permitido: ");
  20.     scanf("%lf", &erromax);
  21.  
  22.     printf("Digite o valor extremo inferior do intervalo de separacao: ");
  23.     scanf("%lf", &a);
  24.  
  25.     printf("Digite o valor extremo superior do intervalo de separacao: ");
  26.     scanf("%lf", &b);
  27.  
  28.     printf("Digite 1 para que x0 = a e x1 = b;\nDigite 2 para que x0 = b e x1 = a: ");
  29.     scanf("%d", &opc);
  30.  
  31.     if (opc == 1){
  32.         x0 = a;
  33.         x1 = b;
  34.     }
  35.     else {
  36.         x0 = b;
  37.         x1 = a;
  38.     }
  39.  
  40.  
  41.     if (fabs(funcao(x0)) < erromax){
  42.         raiz = x0;
  43.         printf("A raiz procurada e' %lf.", raiz);
  44.     }
  45.  
  46.     else if (fabs(funcao(x1)) < erromax || fabs(x1 - x0) < erromax){
  47.         raiz = x1;
  48.         printf("A raiz procurada e' %lf.", raiz);
  49.     }
  50.  
  51.     else {
  52.  
  53.         for (i = 1; i < nmax; ++i){
  54.             x2 = x1 - ((funcao(x1) / (funcao(x1) - funcao(x0)))* (x1 - x0));
  55.  
  56.             printf("\nNa iteracao %d, o valor aproximado da raiz e' %lf.\nO modulo de (x1 - x0) vale %lf.\n", i, x2, fabs(x2 - x1));
  57.  
  58.             if (fabs(funcao(x2)) < erromax || fabs(x2 - x1) < erromax || i == nmax){
  59.                 raiz = x2;
  60.                 printf("\nA raiz procurada e' %lf, e foram realizadas %d iteracoes.\n", raiz, i);
  61.                 break;
  62.             }
  63.             else {
  64.                 x0 = x1;
  65.                 x1 = x2;
  66.             }
  67.         }
  68.     }
  69.  
  70.     return 0;
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement