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

📄 bessj.cpp

📁 此程序为VC++常用数值算法这本书附赠的光盘中包含了本书中全部的源代码
💻 CPP
字号:
double bessj(int n, double x)
{
	int iacc,j,m;
	double temp,bigno,bigni,ax,tox,bj,bjp,bjm,besj,jsum,sum;
    iacc = 40;
    bigno = 10000000000.0;
    bigni = 0.0000000001;
    if (n < 2 )
	{
        cout<<"bad argument n in bassj";
        _c_exit();
    }
    ax = fabs(x);
    if( ax == 0) 
	{
        temp = 0.0;
	}
    else if (ax > float(n))
	{
        tox = 2.0 / ax;
        bjm = bessj0(ax);
        bj = bessj1(ax);
        for( j = 1;j<=n-1;j++)
		{
            bjp = j * tox * bj - bjm;
            bjm = bj;
            bj = bjp;
        }
        temp = bj;
	}
    else
	{
        tox = 2.0 / ax;
        m = 2 * int(((n + int(sqrt(iacc * n)))) / 2);
        besj = 0.0;
        jsum = 0;
        sum = 0.0;
        bjp = 0.0;
        bj = 1.0;
        for (j = m;j>=1;j--)
		{
            bjm = j * tox * bj - bjp;
            bjp = bj;
            bj = bjm;
            if (fabs(bj) > bigno)
			{
                bj = bj * bigni;
                bjp = bjp * bigni;
                besj = besj * bigni;
                sum = sum * bigni;
            }
            if (jsum != 0) sum = sum + bj;
            jsum = 1 - jsum;
            if (j == n) besj = bjp;
        }
        sum = 2.0 * sum - bj;
        temp = besj / sum;		
    }
	return temp;
}

⌨️ 快捷键说明

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