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.439 ]

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.

  



Esconder código-fonte

#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;

}

Scripts recomendados

Função "Temporizador" em C

Converter arquivos Bitmap para ASCII-art

Fila em C

Jogo Super Mario Bros 3 (com gráficos)

Rotina para controle de portas paralelas em C.


  

Comentários
[1] Comentário enviado por levi linux em 22/05/2012 - 12:54h

Muito bom!



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts