⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 intbessl_cpp.txt

📁 BESSEL PROGRAMS IN C/C
💻 TXT
字号:
/*******************************************************************
*           Program to demonstrate INT_BESSEL Function             *
* ---------------------------------------------------------------- *
*         Reference: BASIC Scientific Subroutines, Vol. II         *
*           by F.R. Ruckdeschel, BYTE/McGRAWW-HILL, 1981.          *
*                                                                  *
*                          C++ Version by J.-P. Moreau, Paris.     *
* ---------------------------------------------------------------- *
* SAMPLE RUN:                                                      *
*                                                                  *
* X       J0(X)       J1(X)       J2(X)       J3(X)       J4(X)    *
*----------------------------------------------------------------- *
* 0.1    0.9975016   0.0499375   0.0012490   0.0000208   0.0000003 *
* 0.2    0.9900250   0.0995008   0.0049834   0.0001663   0.0000042 *
* 0.3    0.9776262   0.1483188   0.0111659   0.0005593   0.0000210 *
* 0.4    0.9603982   0.1960266   0.0197347   0.0013201   0.0000661 *
* 0.5    0.9384698   0.2422685   0.0306040   0.0025637   0.0001607 *
* 0.6    0.9120049   0.2867010   0.0436651   0.0043997   0.0003315 *
* 0.7    0.8812009   0.3289957   0.0587869   0.0069297   0.0006101 *
* 0.8    0.8462874   0.3688420   0.0758178   0.0102468   0.0010330 *
* 0.9    0.8075238   0.4059495   0.0945863   0.0144340   0.0016406 *
* 1.0    0.7651977   0.4400506   0.1149035   0.0195634   0.0024766 *
* 1.1    0.7196220   0.4709024   0.1365642   0.0256945   0.0035878 *
* 1.2    0.6711327   0.4982891   0.1593490   0.0328743   0.0050227 *
* 1.3    0.6200860   0.5220232   0.1830267   0.0411358   0.0068310 *
* 1.4    0.5668551   0.5419477   0.2073559   0.0504977   0.0090629 *
* 1.5    0.5118277   0.5579365   0.2320877   0.0609640   0.0117681 *
* 1.6    0.4554022   0.5698959   0.2569678   0.0725234   0.0149952 *
* 1.7    0.3979849   0.5777652   0.2817389   0.0851499   0.0187902 *
* 1.8    0.3399864   0.5815170   0.3061435   0.0988020   0.0231965 *
* 1.9    0.2818186   0.5811571   0.3299257   0.1134234   0.0282535 *
* 2.0    0.2238908   0.5767248   0.3528340   0.1289432   0.0339957 *
* 2.1    0.1666070   0.5682921   0.3746236   0.1452767   0.0404526 *
* 2.2    0.1103623   0.5559630   0.3950587   0.1623255   0.0476471 *
* 2.3    0.0555398   0.5398725   0.4139146   0.1799789   0.0555957 *
* 2.4    0.0025077   0.5201853   0.4309800   0.1981148   0.0643070 *
* 2.5   -0.0483838   0.4970941   0.4460591   0.2166004   0.0737819 *
* 2.6   -0.0968050   0.4708183   0.4589729   0.2352938   0.0840129 *
* 2.7   -0.1424494   0.4416014   0.4695615   0.2540453   0.0949836 *
* 2.8   -0.1850360   0.4097092   0.4776855   0.2726986   0.1066687 *
* 2.9   -0.2243115   0.3754275   0.4832271   0.2910926   0.1190335 *
* 3.0   -0.2600520   0.3390590   0.4860913   0.3090627   0.1320342 *
*******************************************************************/
#include <stdio.h>
#include <math.h>

int i, m;
double x;
double Y[5];


/************************************************************
*        Integer order Bessel function subroutine           *
* --------------------------------------------------------- *
* Calculates Bessel functions of order 0 to 4, for x > 0.   *
* Argument is x, number of steps is m, returned results are *
* Y(i).                                                     *
* --------------------------------------------------------- *
* Reference: Miller's method, see Henrici.                  *
************************************************************/
void Int_Bessel()  {
  // Labels: e100,e200
  int j,n;
  double c,xn;
  // Test for range
  if (x<=0) return;
  if (m<=0) return;
  Y[0]=1.0;
  Y[1]=0.0;
  c=0.0; 
  n=m;
  // Update results
e100: for (j=4; j>0; j--) {
	Y[j]=Y[j-1];
  }
  // Apply recursion relation
  xn = (double) n;
  Y[0] = 2.0*xn*Y[1]/x - Y[2];
  n--;
  if (n==0) goto e200;
  if (n % 2) goto e100; // if n is odd
  c += 2*Y[0];
  goto e100;
e200: c += Y[0];
  // Scale the results
  for (j=0; j<5; j++) {
	Y[j]=Y[j]/c;
  }    
}


void main()  {
  m=20;
  printf(" X       J0(X)       J1(X)       J2(X)       J3(X)       J4(X)   \n");
  printf("-----------------------------------------------------------------\n");
  x = (double) 0.1;
  for (i=1; i<31; i++) {
    Int_Bessel();
    printf("%3.1f   %10.7f   %9.7f   %9.7f   %9.7f   %9.7f\n",x,Y[0],Y[1],Y[2],Y[3],Y[4]);
    x += (double) 0.1;
    if (i==20) getchar();
  }
}


// End of file INTBESSL.CPP

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -