Cálculo de logaritmo de um número por Série de Taylor em C
Publicado por Perfil removido (última atualização em 18/05/2012)
[ Hits: 13.753 ]
Download logaritmo-metodo-a-001.c
A descrição vai ao código.
Ainda não sei um modo simples de dizer o que seria uma derivada, que é algo a ser usado neste algoritmo.
O que faz parte da teoria sobre Séries de Taylor.
Portanto entender a fórmula da Série não é o problema, mas o porquê de ter sido escrita daquela forma.
Existe uma fórmula T(x) chamada de "Termo Geral".
Calcula-se um valor para cada número natural (0, 1, 2, 3 ... ) inteiros não-negativos nessa fórmula em ordem crescente
Os valores são somados de forma acumulativa: T(0) + T(1) + T(2) + T(3) + ...
Quanto mais se calcule e se soma, maior a precisão. Porém demora bastante. O custo computacional é maior que o de outros métodos.
Requer muitos passos para um resultado preciso.
Para se entender como foi feita essa fórmula de termo geral T(x) é que se precisa saber derivadas.
Qualquer erro encontrado ou dúvida, fiquem à vontade.
#include <stdio.h>
#include <math.h>
// Algoritmo "A"
// Logaritmo por Serie de Taylor
// Favor compilar com
// gcc logaritmo-metodo-a-001.c -o logaritmo-metodo-a-001 -lm
// Calcula logaritmo natural - Base "e"
// Apenas para valores baixos e numa faixa estreita por causa de uma coisa chamada "divergencia" (para encurtar)
// Podem ser necessarias muitas iterações
// Calculos em outras bases e valores maiores requer mais passos e calculos
// Nocoes de Calculo e Analise (Matematica) ajudam
int main (void) {
double s = 0.0;
double t = 1.0;
double i = 1.0;
double x = .5;
x -= 1;
do {
// printf("t= %3.1f\t i= %5.1f\t x= %15.25f\t s= %15.25f\n", t, i, x, s);
s += t * (pow(x, i)/i);
t = -t;
i ++;
} while (i<100);
// printf("t= %3.1f\t i= %5.1f\t x= %15.25f\t s= %15.25f\n", t, i, x, s);
printf("e^(%15.25f) = %15.25f\n", s, exp(s));
return 0;
}
Rotação à esquerda árvore Binária
S. MarioBros - Editor de fase 0.1
Rotina para controle de portas paralelas em C. (biblioteca LP.h)
Classe para manipulação e conversão de datas para std::string em C++
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Instalando partes faltantes do Plasma 6
Adicionar botão "mostrar área de trabalho" no Zorin OS
Como montar um servidor de backup no linux
Desenvolvi um programa de hot corner (você colocar o mouse nos cantos)... (3)
Pendrive Bootable [RESOLVIDO] (4)









