Exemple #1
0
        public decimal CalculateU(decimal[] x)
        {
            decimal sum1 = 0;
            decimal sum2 = 0;

            for (int k = 0; k < 2 * Parameters.M; k++)
            {
                sum1 += destiny[k] * Kernels_ND.Fundamental(x, new [] { Parametrization_ND.X01(t[k]), Parametrization_ND.X02(t[k]) });
                sum2 += destiny[k + 2 * Parameters.M] * Kernels_ND.Fundamental(x, new [] { Parametrization_ND.X11(t[k]), Parametrization_ND.X12(t[k]) });
            }

            return((sum1 + sum2) / (2M * Parameters.M));
        }
Exemple #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)
                        {
                            if (i == j)
                            {
                                matrixA[i, j] = Kernels_ND.K01(t[i], t[j]) /
                                                (2 * Parameters.M) + GetDod1(j);
                            }
                            else
                            {
                                matrixA[i, j] = Kernels_ND.K01(t[i], t[j]) /
                                                (2 * Parameters.M);
                            }
                        }
                        else
                        {
                            matrixA[i, j] = Kernels_ND.K02(t[i], t[j - 2 * Parameters.M]) /
                                            (2 * Parameters.M);
                        }
                    }
                    else
                    {
                        if (j < 2 * Parameters.M)
                        {
                            matrixA[i, j] = Kernels_ND.P11(t[i - 2 * Parameters.M], t[j]) /
                                            (2 * Parameters.M);
                        }
                        else
                        {
                            matrixA[i, j] = -Normal.R(t[j - 2 * Parameters.M], t[i - 2 * Parameters.M]) / 2M +
                                            Kernels_ND.P12_2(t[i - 2 * Parameters.M], t[j - 2 * Parameters.M])
                                            / (2 * Parameters.M);
                        }
                    }
                }
            }
        }
Exemple #3
0
        public decimal[] CalculateUG0()
        {
            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_ND.A1(t[j], t[k]) / (2M * Parameters.M) - Normal.R(t[k], t[j]) / (2M)));
                    sum2 += destiny[k + 2 * Parameters.M] * Kernels_ND.A2(t[j], t[k]);
                }

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

            return(res);
        }