Os cincos primeiros termos da séries de fourier

Publicado por Franklin Anderson de Oliveira Souza 11/03/2005

[ Hits: 26.417 ]

Homepage: http://fisica.ufmt.br/~franklinbr/

Download fourier.c




Um programa que tras a solução grafica para uma aproximacao  de um função matematica simples do tipó f(x)=x usando series de fourier, no caso somente os cincos primeiros termos. Seram gerados  o arquivo com os dados e um script para ser visualizado no gnuplot, um bonito gráfico 2d.

  



Esconder código-fonte

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

script_gnu ()
{
  FILE *script;

  script = fopen ("script.gnu", "w");
  int i;
  fprintf (script, "set yrange [-3.3:3.3]\n");
  fprintf (script, "set xrange [-180:180]\n");
  fprintf (script, "plot 'dados.dat' u 1:2 with dots\n");
  for (i = 3; i <= 7; i++)
    {
      fprintf (script, "replot 'dados.dat' u 1:%d with dots \n", i);
    }
  fclose (script);
  return (0);
}

equation_series (float count)
{
  float n1, n2, n3, n4, n5, x;
  FILE *fp;
  fp = fopen ("dados.dat", "w");

  for (x = -180; x <= 180; x += count)
    {
      n1 = 2.0 * sin ((x * 3.14) / 180.0);
      n2 = -sin ((2.0 * x * 3.14) / 180.0);
      n3 = (2.0 / 3.0) * sin ((3.0 * x * 3.14) / 180.0);
      n4 = -(1.0 / 2.0) * sin ((4.0 * x * 3.14) / 180.0);
      n5 = (2.0 / 5.0) * sin ((5.0 * x * 3.14) / 180.0);
      printf (" %f %f %f %f %f %f %f\n", x, n1, n2, n3, n4, n5,
         (n1 + n2 + n3 + n4 + n5));
      fprintf (fp, "%f %f %f %f %f %f %f\n", x, n1, n2, n3, n4, n5,
          (n1 + n2 + n3 + n4 + n5));
    }
  fclose (fp);
  return (0);
}

main (int argc, char **argv)
{
  float count;

  if (argc != 2)
    {
      printf
   ("Eh necessario um incremento.\n Exemplo\n\n./programa <incremento>\n\t./programa 0.5\n\n");
    }

  else
    {
      count = atof (argv[1]);
      equation_series (count);
      printf ("\nValores gerados, para visualizar use o Gnuplot...\n\n");
      printf ("$ gnuplot\ngnuplot> load 'script.gnu'\n\n");
      script_gnu ();
      printf ("Script Gnuplot Gerado ...\n\n");
      printf ("Aguarde...\n");
      sleep (3);
      system ("ls -lh *.dat *.gnu");
    }

  return (0);
}

Scripts recomendados

Número de Fibonacci - C++

Simples gerador de números primos

Ler N números e ver qual é o maior

Preloader.c - Adaptação do Tarik Ahmad (Thiago Alexandre) para linux

Jogo do Labirinto


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts