Esempio n. 1
0
        public decimal[] CalculatePochidnaG0()
        {
            var res = new decimal[2 * Parameters.M];

            for (var j = 0; j < 2 * Parameters.M; j++)
            {
                decimal sum1 = 0;
                decimal sum2 = 0;

                var dod1 = (-destiny[j]) / (2M * Normal.GetModul(new[]
                {
                    Parametrization_ND.X01d(t[j]),
                    Parametrization_ND.X02d(t[j])
                }));
                //Normal.GetModul(t[j], Parametrization_ND.X01d, Parametrization_ND.X02d));
                for (var k = 0; k < 2 * Parameters.M; k++)
                {
                    sum1 += (destiny[k] * Kernels_DN.A1(t[j], t[k]));
                    sum2 += (destiny[k + 2 * Parameters.M] * Kernels_DN.A2(t[j], t[k]));
                }

                //res[j] = dod1 + (sum1 + sum2) / (2M * Parameters.M);
                res[j] = (sum1 + sum2) / (2M * Parameters.M);
            }

            return(res);
        }
Esempio n. 2
0
        private void InitMatrix()
        {
            matrixA = new decimal[4 * Parameters.M, 4 * Parameters.M];

            for (int i = 0; i < 4 * Parameters.M; i++)
            {
                for (int j = 0; j < 4 * Parameters.M; j++)
                {
                    if (i < 2 * Parameters.M)
                    {
                        if (j < 2 * Parameters.M)
                        {
                            matrixA[i, j] = Kernels_DN.H01(t[i], t[j]) / (2 * Parameters.M)
                                            - Normal.R(t[j], t[i]) / 2M;
                        }
                        else
                        {
                            matrixA[i, j] = Kernels_DN.H02(t[i], t[j - 2 * Parameters.M]) /
                                            (2 * Parameters.M);
                        }
                    }
                    else
                    {
                        if (j < 2 * Parameters.M)
                        {
                            matrixA[i, j] = Kernels_DN.K11(t[i - 2 * Parameters.M], t[j]) /
                                            (2 * Parameters.M);
                        }
                        else
                        {
                            if (i == j)
                            {
                                matrixA[i, j] = Kernels_DN.K21(t[i - 2 * Parameters.M], t[j - 2 * Parameters.M]) /
                                                (2 * Parameters.M) + GetDod1(j - 2 * Parameters.M);
                            }
                            else
                            {
                                matrixA[i, j] = Kernels_DN.K21(t[i - 2 * Parameters.M], t[j - 2 * Parameters.M]) /
                                                (2 * Parameters.M);
                            }
                        }
                    }
                }
            }
        }
Esempio n. 3
0
        public decimal[] CalculateUG1()
        {
            var res = new decimal[2 * Parameters.M];

            for (int j = 0; j < 2 * Parameters.M; j++)
            {
                decimal sum1 = 0;
                decimal sum2 = 0;

                for (int k = 0; k < 2 * Parameters.M; k++)
                {
                    sum1 += destiny[k] * (
                        (Kernels_DN.A1_2(t[j], t[k]) / (2M * Parameters.M) - Normal.R(t[k], t[j]) / (2M)));
                    sum2 += destiny[k + 2 * Parameters.M] * Kernels_DN.A2_2(t[j], t[k]);
                }

                res[j] = (sum1 + sum2 / (2M * Parameters.M));
            }

            return(res);
        }