Пример #1
0
 public void BesselJZeros()
 {
     foreach (double nu in new double[] { 0.0, 0.5, 1.0, 4.25, 16.0, 124.0 })
     {
         foreach (int k in new int[] { 1, 2, 4, 64, 256 })
         {
             double j = AdvancedMath.BesselJZero(nu, k);
             double J = AdvancedMath.BesselJ(nu, j);
             Assert.IsTrue(TestUtilities.IsNearlyEqual(J, 0.0, 4.0E-16 * 3 * k));
         }
     }
 }
Пример #2
0
        private static double RayleighSum(double nu, int r)
        {
            double s = 0.0;

            for (int k = 1; k < 1024; k++)
            {
                double s_old = s;
                double ds    = 1.0 / MoreMath.Pow(AdvancedMath.BesselJZero(nu, k), 2 * r);
                s += ds;
                if (ds < 1.0E-5 * s)
                {
                    return(s);
                }
            }
            throw new NonconvergenceException();
        }