Пример #1
0
        public double ChooseAlpha_Projection(Matrix KSI, Matrix f, double alpha, double R, double tau, double h)
        {
            Vector u_temp = new Vector();
            double EPS    = 0.001d;
            double NORM   = 0;

            do
            {
                Matrix f_new = DifferentialEquation.GrdientProjectionByF(f, KSI, alpha, R, h, tau);
                f_new = Pu(f_new, R, h, tau);

                u_temp = DifferentialEquation.GetSolutionTask1(manage_p, f_new, phi, nu, L, T, aa, GRID_SIZE, TIME_SIZE);


                NORM  = Calculate_L2NORM(f - f_new, h, tau);
                alpha = alpha / 2.0;
            } while (Functional_J(calc_u) - Functional_J(u_temp) < EPS * NORM * NORM);

            return(alpha * 2.0);
        }