Ejemplo n.º 1
0
        private void _CalcWM90()
        {
            _wmRes90 = (new GWMFunction(-30, 30, _B90[0], _D90[0], _cntPoint90, 1.5707963267948966192313216916398)).WMFuncResult();

            // разбиение графика
            for (int i = 0; i < (_cntPoint90 - _cntItem90); i++)
            {
                _yDict90[i] = new double[_cntItem90, 2];

                var j = 0;

                for (int k = i; k < (i + _cntItem90); k++)
                {
                    _yDict90[i][j, 0] = _wmRes90.Y[k];
                    _yDict90[i][j, 1] = 1;
                    j++;
                }
            }

            if (_debug)
            {
                Print("Разбиение графика _CalcWM90");
            }

            // подсчет результатов
            for (int i = 0; i < (_cntPoint90 - _cntItem90); i++)
            {
                SingularValueDecomposition svd = new SingularValueDecomposition(_yDict90[i], true, true);
                double[] x = svd.Solve(_A90);
                _resDict90[i] = new double[_cntItem90];

                for (int k = 0; k < _cntItem90; k++)
                {
                    _resDict90[i][k] = _yDict90[i][k, 0] * x[0] + _yDict90[i][k, 1] * x[1];
                }
            }

            if (_debug)
            {
                Print("Подсчет результатов _CalcWM90");
            }
        }
Ejemplo n.º 2
0
        // вычисление
        private void _CalcWM()
        {
            _wmRes = (new GWMFunction(-30, 30, _B[0], _D[0], _cntPoint, 0.0)).WMFuncResult();

            // разбиение графика
            for (int i = 0; i < (_cntPoint - _cntItem); i++)
            {
                _yDict[i] = new double[_cntItem, 2];

                var j = 0;

                for (int k = i; k < (i + _cntItem); k++)
                {
                    _yDict[i][j, 0] = _wmRes.Y[k];
                    _yDict[i][j, 1] = 1;
                    j++;
                }
            }

            if (_debug)
            {
                Print("Разбиение графика _CalcWM");
            }

            // подсчет результатов
            for (int i = 0; i < (_cntPoint - _cntItem); i++)
            {
                SingularValueDecomposition svd = new SingularValueDecomposition(_yDict[i], true, true);
                double[] x = svd.Solve(_A);
                _resDict[i] = new double[_cntItem];

                for (int k = 0; k < _cntItem; k++)
                {
                    _resDict[i][k] = _yDict[i][k, 0] * x[0] + _yDict[i][k, 1] * x[1];
                }
            }

            if (_debug)
            {
                Print("Подсчет результатов _CalcWM");
            }
        }