Os cincos primeiros termos da séries de fourier

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

[ Hits: 26.428 ]

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++

Jogo Tetris em C - parte 2

Raizes reais e complexas de uma equação de 2º grau

Jogo Campo Minado

Sequencia Fibonacci


  

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