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.824 ]
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;
}
Jogo da Velha com IA invencivel
Calculando PI usando série de Leibniz
Boas Práticas e Padrões Idiomáticos em Go e C
Vale a pena ter mais de uma interface grafica no seu Linux?
Estrutura e Funcionamento de um Ebuild no Gentoo Linux
Copiar Para e Mover Para no menu de contexto do Nautilus e Dolphin
Dotando o Thunar das opcoes Copiar para e Mover para no menu de contexto
Usando o ble.sh (Bash Line Editor) no lugar do bash completion
Montagem pré automática de HD externo usb em NTFS não funciona no Debian Trixie - Solução
No Ubuntu 26.04, sudo passou a mostrar os asteriscos ao digitar por pa... (3)
Como insiro e excluo um elemento XML e JSON ao código Javascript (0)









