Committed on the Free edition of March Hare Software CVSNT Server. Upgrade to CVS Suite for more features and support: http://march-hare.com/cvsnt/ git-svn-id: http://moon:8086/svn/vhdl/trunk@790 cc03376c-175c-47c8-b038-4cd826a8556b
88 lines
2.0 KiB
C
88 lines
2.0 KiB
C
/************************************************************************/
|
|
/* Ein Programm zur Berechnung der Bessel-Koeffizienten Jn
|
|
/* Dateiname : Bessel.cpp
|
|
/* Autoren : T. Burr, J. Ahrensfeld
|
|
/* Datum : 28.10.1999
|
|
/* letzte Änderung : 28.01.2000
|
|
/* Version : 1.0
|
|
/************************************************************************/
|
|
|
|
#include "stdio.h"
|
|
#include "math.h"
|
|
#include "stdlib.h"
|
|
|
|
|
|
#define MAX_SUM 25
|
|
#define VERSION "1.0"
|
|
|
|
/************************************************************************/
|
|
/* Funktionsdeklarationen */
|
|
/************************************************************************/
|
|
// Fakultätsberechnung
|
|
double fak (int N)
|
|
{
|
|
int index;
|
|
double erg=1;
|
|
|
|
for (index = 1; index <= N; index++)
|
|
erg = erg * index;
|
|
|
|
return erg;
|
|
}
|
|
|
|
// Bessel()
|
|
// Berechnung von Jn von mfm
|
|
double bessel(int n, double mfm)
|
|
{
|
|
int m;
|
|
double Jn=0;
|
|
|
|
for (m=0; m < MAX_SUM; m++)
|
|
{
|
|
Jn = Jn + (pow(-1.0,m)/(fak(m)*fak(m+n))*pow(mfm/2.0,(2*m+n)));
|
|
}
|
|
return Jn;
|
|
}
|
|
|
|
|
|
/************************************************************************/
|
|
/* Das Hauptprogramm
|
|
/************************************************************************/
|
|
void main()
|
|
{
|
|
|
|
int N, Nmax;
|
|
double erg;
|
|
float mfm;
|
|
|
|
printf("\n\t Besselfunktion Version %s",VERSION);
|
|
printf("\n\t ~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
|
|
printf("\n\tCopyright by J. Ahrensfeld & T. Burr\n\n");
|
|
|
|
// ---------------------------------------------------------------------------------
|
|
// Benutzereingaben
|
|
printf("\nBerechnungen fuer J = 0...");
|
|
if(scanf("%d",&Nmax)==0)
|
|
exit (-1);
|
|
|
|
printf("Bitte Modulationsindex eingeben : ");
|
|
if(scanf("%f",&mfm)==0)
|
|
exit(-1);
|
|
|
|
printf("\n");
|
|
|
|
// ---------------------------------------------------------------------------------
|
|
// Berechnung
|
|
for (N=0; N <= Nmax; N++)
|
|
{
|
|
erg = bessel(N,(double)mfm);
|
|
printf("J(%d) = %10.8f\n",N,erg);
|
|
}
|
|
|
|
printf("FERTIG.\n");
|
|
|
|
}
|
|
|
|
/************************************************************************/
|
|
|