示例#1
0
        public void SolveQR(Vector B, Vector X)
        {
            if (_QR != null)
            {
                // Solve the system A*X = B, overwriting B with X:

                double[] _B = B.Data;

                DORMQR _dormqr = new DORMQR();

                _dormqr.Run("L", "T", _N, 1, _N, ref _QR, 0, _N, _TAU, 0, ref _B, 0, _N, ref _WORK, 0, _N, ref _Info);

                DTRTRS _dtrtrs = new DTRTRS();

                _dtrtrs.Run("U", "N", "N", _N, 1, _QR, 0, _N, ref _B, 0, _N, ref _Info);

                for (int i = 0; i < B.Length; i++)
                {
                    X[i] = B[i];
                }
            }
        }