Advertisement
jvitorml

Projeto 2 Exercício C

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