159 DynamicRectMatrix<Real>
getQ()
const {
160 int i = 0, j = 0, k = 0;
162 DynamicRectMatrix<Real> Q(m, n);
163 for (k = n - 1; k >= 0; k--) {
164 for (i = 0; i < m; i++) {
168 for (j = k; j < n; j++) {
169 if (QR_(k, k) != 0) {
171 for (i = k; i < m; i++) {
172 s += QR_(i, k) * Q(i, j);
175 for (i = k; i < m; i++) {
176 Q(i, j) += s * QR_(i, k);
234 DynamicRectMatrix<Real>
solve(
const DynamicRectMatrix<Real>& B)
const {
235 if (B.getNRow() != m)
236 return DynamicRectMatrix<Real>(0, 0);
240 return DynamicRectMatrix<Real>(0, 0);
243 int nx = B.getNCol();
244 DynamicRectMatrix<Real> X(B);
245 int i = 0, j = 0, k = 0;
248 for (k = 0; k < n; k++) {
249 for (j = 0; j < nx; j++) {
251 for (i = k; i < m; i++) {
252 s += QR_(i, k) * X(i, j);
255 for (i = k; i < m; i++) {
256 X(i, j) += s * QR_(i, k);
261 for (k = n - 1; k >= 0; k--) {
262 for (j = 0; j < nx; j++) {
265 for (i = 0; i < k; i++) {
266 for (j = 0; j < nx; j++) {
267 X(i, j) -= X(k, j) * QR_(i, k);
273 DynamicRectMatrix<Real> X_(n, nx);
274 for (i = 0; i < n; i++)
275 for (j = 0; j < nx; j++)