Advertisement
jvitorml

Untitled

Apr 30th, 2017
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.36 KB | None | 0 0
  1. /** João Vitor Monteiro Leduino - MAT: 1906488 */
  2. #include <stdlib.h>
  3. #include <stdio.h>
  4. #include <math.h>
  5. #include <float.h>
  6.  
  7. double f1(double x){   /** Função 1----> f(x) = x^2 - 2^x */
  8.  
  9.     return pow(x, 2) - pow(2, x);
  10. }
  11. void metodoBissec1 (){     /** Esta função utiliza a funcao1 para substituir o va-  */
  12.                            /** lor de x por uma entrada do usuário, depois de ler   */
  13.                            /** os valores para x ela começa a aplicar o método de   */
  14.                            /** de Bissecção para cercar o valor da raíz, foi usado  */
  15.                            /** algoritmo fornecido pelo exercício para o desenvolvi-*/
  16.                            /** mento deste programa.                                */
  17.  
  18.     double x1, x2, x;
  19.  
  20.     printf("\nDigite o valor de x1 e x2 da Funcao:\n\n");
  21.     scanf("%f%f", &x1, &x2);
  22.  
  23.     printf("%lf\n", f1(x1)*f1(x2));
  24.  
  25.     getchar();
  26.  
  27.     if ((f1(x1) * f1(x2))<0){
  28.  
  29.         x = (x1+x2)/2;
  30.  
  31.         while (fabs (f1(x)) > DBL_EPSILON){
  32.  
  33.             if ((f1(x1) * f1(x2)) <= 0 )
  34.                 x2 = x;
  35.  
  36.             else
  37.                 x1 = x;
  38.  
  39.             x = (x1 + x2) / 2;
  40.  
  41.             if(!(fabs(x1 - x2) > DBL_EPSILON)){
  42.  
  43.         printf("%.16lf\n", x);
  44.             }
  45.         printf("A raiz da Funcao eh, aproximadamente: %.16lf", x);
  46.         }
  47.     }
  48.      else
  49.         printf("Nao ha raizes no intervalo dado.\n");
  50. }
  51. double f2(float x){        /** Função 2 ----> f(x) = x^3 - 9x + 3 */
  52.     return pow(x, 3) - (9 * x) + 3;
  53. }
  54. void metodoBissec2 (){     /** Esta função utiliza a funcao2 para substituir o va-  */
  55.                            /** lor de x por uma entrada do usuário, depois de ler   */
  56.                            /** os valores para x ela começa a aplicar o método de   */
  57.                            /** de Bissecção para cercar o valor da raíz, foi usado  */
  58.                            /** algoritmo fornecido pelo exercício para o desenvolvi-*/
  59.                            /** mento deste programa.                                */
  60.  
  61.     double x1, x2, x;
  62.  
  63.     printf("\nDigite o valor de x1 e x2 da Funcao:\n\n");
  64.     scanf("%f%f", &x1, &x2);
  65.  
  66.     printf("%lf\n", f2(x1)*f2(x2));
  67.  
  68.     getchar();
  69.  
  70.     if ((f2(x1) * f2(x2))<0){
  71.  
  72.         x = (x1+x2)/2;
  73.  
  74.         while (fabs (f2(x)) > DBL_EPSILON){
  75.  
  76.             if ((f2(x1) * f2(x2)) <= 0 )
  77.                 x2 = x;
  78.  
  79.             else
  80.                 x1 = x;
  81.  
  82.             x = (x1 + x2) / 2;
  83.  
  84.             if(!(fabs(x1 - x2) > DBL_EPSILON)){
  85.  
  86.         printf("%.16lf\n", x);
  87.             }
  88.         printf("A raiz da Funcao eh, aproximadamente: %.16lf", x);
  89.         }
  90.     }
  91.      else
  92.         printf("Nao ha raizes no intervalo dado.\n");
  93. }
  94. int main () {              /** Na função principal o programa da algumas opções */
  95.                            /** para o usuário escolher, após isso, ele chama a  */
  96.                            /** função de acordo com a opção do usuário.         */
  97.  
  98.     int opcao;
  99.  
  100.     printf("Quer definir a raiz de qual funcao?"
  101.            "\n(1) Funcao 1 --> f(x) = x^2 - 2^x"
  102.            "\n(2) Funcao 2 --> f(x) = x^3 - 9x + 3"
  103.            "\n\n--> ");
  104.     scanf("%d", &opcao);
  105.  
  106.     if(opcao == 1)
  107.         metodoBissec1();
  108.  
  109.     else if(opcao == 2)
  110.         metodoBissec2();
  111.  
  112.     else
  113.         printf("\nERROR\n");
  114.  
  115.     return 0;
  116. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement