Cálculo de logaritmo de um número por Método de Newton-Raphson em C
Publicado por Perfil removido (última atualização em 18/05/2012)
[ Hits: 7.689 ]
Download logaritmo-metodo-b-001.c
A descrição vai ao código.
Este método, também como o algoritmo "A", necessita da definição do que é uma derivada.
Ele é bem mais simples de implementar que Séries de Taylor e possui um custo computacional bem menor também.
O problema é a necessidade de um valor inicial, que é aproximado a cada iteração. Deste valor depende a veloidade de mais ou menos iterações.
Grosseiramente o método funciona por uma fórmula F(x) onde se começa com o valor x0. Depois continua-se com x1=F(x0) e segue:
x2=F(x1)
x3=F(x2)
x4=F(x3)
...
Até o último valor x_ obtido ser muito igual com o último valor x_ que entrou.
Para saber como é essa fórmula F(X) é que é necessário saber algo de derivadas.
Qualquer erro encontrado ou dúvida, fiquem à vontade.
#include <stdio.h>
#include <math.h>
// Algoritmo "B"
// Logaritmo por Metodo de Newton-Raphson
// Favor compilar com
// gcc logaritmo-metodo-b-001.c -o logaritmo-metodo-b-001 -lm
// Calcula logaritmo natural - Base "e"
// Funciona por aproximacao e necessita de um valor inicial (chute) para funcionar.
// Quanto maior a diferenca do chute e do valor principal, mais vezes o laco while se repete
// Aqui o chute eh uma "raiz quarta".
// Para logaritmos em outras bases requer um pouco de trabalho
// Seria nessessario executar o algoritmo duas vezes, uma para cada numero - a base e o que se quer saber o logaritmo.
// Nocoes de calculo tambem ajudam
int main (void) {
double s = 0.0;
double l = 0.0;
double x = 21397534.0;
// int q = 0;
s = sqrt(sqrt(x));
do {
l = exp(s);
s -= ((l-x)/l);
// printf ("q=%4d\tx=%15.25f\ts=%15.25f\n", q, x, s);
// q++;
} while (l/x>1);
// printf ("q=%4d\tx=%15.25f\tl=%15.25f\ts=%15.25f\n", q, x, l, s);
printf("e^%15.25f=%15.25f\n", s, exp(s));
return 0;
}
Leds da porta paralela com interface
Simples Criptografia de Dados em Liguagem de programação C/C++
Algoritmo de ordenação Quick Sort
Tipos de Dados Abstrato - TDA - Vetor
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?
E aí? O Warsaw já está funcionando no Debian 13? [RESOLVIDO] (15)
Secure boot, artigo interessante, nada técnico. (4)
copiar library para diretorio /usr/share/..... su com Falha na a... (1)









