Raiz cúbica pelo método de bissecção
Publicado por Gabriel (última atualização em 15/05/2010)
[ Hits: 13.190 ]
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ê?
#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;
}
Desenhando Nuvens ou o Fractal de Plasma
Controle de maior idade em C++
Como atualizar sua versão estável do Debian
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Quer auto-organizar janelas (tiling) no seu Linux? Veja como no Plasma 6 e no Gnome
Copiando caminho atual do terminal direto para o clipboard do teclado
Script de montagem de chroot automatica
Instalar Dual Boot, Linux+Windows. (9)
Eaí? Já programou no windows? (2)
Erro ao enviar arquivos para o Storage Synology NAS (0)
Conky, alerta de temperatura alta (17)
De volta para o futuro - ou melhor, para o presente (parte 2) (3)









