File:800px-FourierExampleGauss04Ta.png: Difference between revisions

From Citizendium
Jump to navigation Jump to search
imported>Dmitrii Kouznetsov
(add generator of curves)
(== Summary == Importing file)
Tag: Server-side upload
 
Line 1: Line 1:
== Summary ==
== Summary ==
{{Image_Details|user-pd
Importing file
|description  = Application of the [[Discrete Fourier operator]] at the sample of 4 nodes.
|author      = [[User:Dmitrii Kouznetsov|Dmitrii Kouznetsov]]
|date-created = 2011
|pub-country  = Japan
|notes        = The [[Gaussian function]] <math>f(x)=\exp(−x^2/2)</math> is shown with dashed curve.
 
The discrete analogy <math>A</math> is shown with blue segmented line.
 
The [[Discrete Fourier transform]] <math>B</math> is shown with red segmented line.
 
 
|versions    = http://tori.ils.uec.ac.jp/TORI/index.php/File:FourierExampleGauss04Ta.png
}}
== Licensing ==
{{CC|zero|1.0}}
 
 
==[[C++]] generator of curves==
// FIles [[fafo.cin]] and [[ado.cin]] should be in the working directory for the compilation of the code below.
 
#include<math.h>
#include<stdio.h>
#include <stdlib.h>
#include <complex>
using namespace std;
#define z_type complex<double>
#define Re(x)  x.real()
#define Im(x)  x.imag()
#define RI(x)  x.real(),x.imag()
#define DB double
#define DO(x,y) for(x=0;x<y;x++)
 
#include "ado.cin"
#include"fafo.cin"
 
// DB F(DB x){DB u=x*x; return u*(-3.+u)*exp(-x*x/2.);} //Another self-Fourier function
 
DB F(DB x){return exp(-x*x/2.);}
 
main(){        z_type * a, *b, c; int j,m,n, N=4; FILE *o;
        double step=sqrt(2*M_PI/N),x,y,u;
        a=(z_type *) malloc((size_t)((N+1)*sizeof(z_type)));
        b=(z_type *) malloc((size_t)((N+1)*sizeof(z_type)));
for(j=0;j<N;j++) { x=step*(j-N/2); u=x*x; a[j]=b[j]=F(x); }
fafo(b,N,1);
for(j=0;j<N;j++) printf("%2d %18.15f %18.15f  %18.15f %18.15f\n", j, RI(a[j]), RI(b[j])  );
o=fopen("FourierExampleGauss04a.eps","w"); ado(o,624,124);
#define M(x,y) fprintf(o,"%6.4f %6.4f M\n",0.+x,0.+y);
#define L(x,y) fprintf(o,"%6.4f %6.4f L\n",0.+x,0.+y);
fprintf(o,"322 22 translate 100 100 scale\n");
M(-3,0) L(3,0) M(0,0) L(0,1) fprintf(o,".01 W S\n");
M(-3,1) L(3,1)
for(m=-3;m<4;m++) {M(m,0) L(m,1)} fprintf(o,".004 W S\n");
DO(m,121){x=-3.+.05*m; y=F(x); if(m/2*2==m)M(x,y)else L(x,y);} fprintf(o,".008 W 0 0 0 RGB S\n");
DB *X; X=(DB *) malloc((size_t)((N+1)*sizeof(DB))); DO(j,N){ x=step*(j-N/2); X[j]=x; }
DO(j,N){x=X[j];y=Re(a[j]); if(j==0)M(x,y)else L(x,y);} fprintf(o,".01 W 0 0 1 RGB S\n");
DO(j,N){x=X[j];y=Re(b[j]); if(j==0)M(x,y)else L(x,y);} fprintf(o,"0.01 W 1 0 0 RGB S\n");
// DO(j,N){x=X[j];y=100.*(Re(b[j])-F(x)); if(j==0)M(x,y)else L(x,y);} fprintf(o,"0.007 W 0 0 .3 RGB S\n");
printf("X[0]=%9.5f\n",X[0]);
fprintf(o,"showpage\n%cTrailer",'%'); fclose(o);
system("epstopdf FourierExampleGauss04a.eps");
system(    "open FourierExampleGauss04a.pdf"); //these 2 commands may be specific for macintosh
getchar(); system("killall Preview");// if run at another operational system, may need to modify
free(a);
free(b);
free(X);
}
/*Copyeft 2011 by Dmitrii Kouznetsov */

Latest revision as of 18:53, 11 March 2022

Summary

Importing file

File history

Click on a date/time to view the file as it appeared at that time.

Date/TimeThumbnailDimensionsUserComment
current18:53, 11 March 2022Thumbnail for version as of 18:53, 11 March 2022800 × 165 (60 KB)Maintenance script (talk | contribs)== Summary == Importing file

The following page uses this file: