Raiz cúbica pelo método de bissecção

Publicado por Gabriel (última atualização em 15/05/2010)

[ Hits: 12.296 ]

Download 4581.ex1.c




Resolve numericamente a equação x³ - n = 0 utilizando o método de bissecção. O objetivo é calcular a raiz cúbica de n.

Obs.: Foi utilizada precisão dupla e como critério de parada foi utilizado o DBL_EPSILON (2.220446e-16).

Problema: para -1 <= n <= 1 não é possível calcular a raiz cúbica (com esse script)... Alguém sabe porquê?

  



Esconder código-fonte

#include <stdio.h>
#include <float.h>
#include <math.h>

double cubica(double n);

int main(){

    double n = 0;
    
    printf("Entre com um número: ");
    scanf("%lf", &n);
    
    printf("%lf\n", cubica(n));

    return 0;

}

// calcular raiz cúbica de n e para isso
// encontrar x tal que x³ - n = 0

double cubica(double n) {

    double x1 = 0, x2 = 0, xm = 0;

    if (n > 0){
        x1 = -n;
        x2 = n;
    } else {
        x1 = n;
        x2 = -n;
    }

    do {
    
        xm = (double) (x2 + x1) / 2;
        
        if (xm*xm*xm - n > 0) {
           
            if (x1*x1*x1 - n > 0) x1 = xm;
            else x2 = xm;

        } else {
        
            if (x1*x1*x1 - n < 0) x1 = xm;
            else x2 = xm;            
        
        }
                    
    } while (fabs(x2 - x1) > DBL_EPSILON);
    
    return xm;

}

Scripts recomendados

Converter Decimal para Binário em C

Potências de 2

Lista duplamente encadeada com cabecalho

Algoritmo do método de Newton

Controle de maior idade em C++


  

Comentários
[1] Comentário enviado por removido em 26/03/2013 - 17:31h

Gostei!


Contribuir com comentário