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.243 ]
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; }
Script para trocar o papel de parede do fluxbox em GTK
Jogo Simon (Genius) - com gráficos
Cálculo de logaritmo de um número por um terceiro método em C
Cálculo de logaritmo de um número por Série de Taylor em C
Atualizar o macOS no Mac - Opencore Legacy Patcher
Crie alias para as tarefas que possuam longas linhas de comando - bash e zsh
Criando um gateway de internet com o Debian
Configuração básica do Conky para mostrar informações sobre a sua máquina no Desktop
Aprenda a criar músicas com Inteligência Artificial usando Suno AI
Como instalar o navegador TOR no seu Linux
Instalando Zoom Client no Ubuntu 24.04 LTS
Instalando Zoom Client no Fedora 40
Instalando Navegador Firefox no Debian 12
Bloqueando propagandas no Youtube e outros sites com o uBlocker Origin
Dificuldade em ler binário (16)
Configurar Crontab [RESOLVIDO] (6)