void FillM(int len, Integral.Funct f1, Integral.Funct f2)
        {
            if (len <= bufferSize)
            {
                return;
            }
            double[,] Mb = new double[len, len];
            double[] Bb = new double[len];

            for (int i = 0; i < bufferSize; i++)
            {
                for (int j = 0; j < bufferSize; j++)
                {
                    Mb[i, j] = M[i, j];
                }
                Bb[i] = B[i];
            }
            for (int i = bufferSize; i < len; i++)
            {
                for (int j = 0; j < i + 1; j++)
                {
                    Mb[i, j] = IntegralF(i, j, f1);
                    Mb[j, i] = Mb[i, j];
                }
                Bb[i] = IntegralF(i, i, f2);
            }
            B          = new double[len];
            M          = new double[len, len];
            bufferSize = len;
            Bb.CopyTo(B, 0);
            Array.Copy(Mb, M, Mb.LongLength);
        }
 double IntegralF(int k, int t, Integral.Funct f)
 {
     return(Integral.DefineIntegral(epsilonInt, x1, x2, f, k, t));
 }