#!/usr/bin/perl
#
# create datafiles of the form
#
#   x    sin(x + N*offset)
#
# where "offset" is some small fraction of a full cycle.
# I'm trying to describe the action of a diffraction grating,
# which causes _many_ waves to meet.
#
# MWR 5/14/2007

# create simple cosine wave, no offset, unit amplitude
$start_x = -10;
$end_x = 10;
$dx = 0.01;

$amp = 1.0;
# offset, in fraction of a full cycle
$offset_fraction = 0.10;
$offset_radians = (2.0*3.14159*$offset_fraction);
$max_multiple = 10;


  $outfile = sprintf "cosine_sum_%02d.dat", $max_multiple;
  open(OUTFILE, ">$outfile") || die("can't open file $outfile");

  for ($x = $start_x; $x <= $end_x; $x += $dx) {

    $perfect_sum = 0;
    $sum = 0;
    for ($multiple = 0; $multiple <= $max_multiple; $multiple++) {

       # first, add without any offset
       $xx = $x + $multiple*0;
       $y = cos($xx);
       $perfect_sum = $perfect_sum + $y;
       

       # now, add with offset
       $xx = $x + $multiple*$offset_radians;
       $y = cos($xx);
       $sum = $sum + $y;

    }

    printf OUTFILE " %9.4f  %9.4f  %9.4f  %9.4f  %9.4f \n", 
               $x, $sum, $sum*$sum, $perfect_sum, $perfect_sum*$perfect_sum;

  }

  close(OUTFILE);


exit 0;
