Os cincos primeiros termos da séries de fourier

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

[ Hits: 26.544 ]

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

Distribuição Eletronica de Elementos Químicos em C++

[C] Agenda - LDE

Pra quem gosta de RPG. Um sistema de lutas.

Método de Newton-Raphson

Exemplo de uso de Graphics.h


  

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