Os cincos primeiros termos da séries de fourier

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

[ Hits: 26.556 ]

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

Algorítimo - Dia da semana

Vírus didático para Linux em C

Descompactador Simples

Usando medidas de comprimento

Simple Pomerode Time Counter


  

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