Os cincos primeiros termos da séries de fourier

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

[ Hits: 26.459 ]

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

Informações do kernel

Listas Encadeadas

Temperatura

Calendário em C

Soma entre matrizes


  

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