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"); } }
// вычисление 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"); } }