1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | //solving unit lower triangular inline void v_lm(mxd::r _m, vxd::r _b){ i::t idx = 0; while(idx < _m.rows()){ mxd::b A00 = _m.block(0 , 0 , idx , idx ); mxd::b a10 = _m.block(idx , 0 , 1 , idx ); mxd::b A20 = _m.block(idx + 1, 0 , _m .rows() - (idx + 1) , idx ); mxd::b a01 = _m.block(0 , idx , idx , 1 ); mxd::b alpha11 = _m.block(idx , idx , 1 , 1 ); mxd::b a21 = _m.block(idx + 1, idx , _m.rows() - (idx + 1) , 1 ); mxd::b A02 = _m.block(0 , idx + 1 , idx , _m.cols() - (idx + 1) ); mxd::b a12 = _m.block(idx , idx + 1 , 1 , _m.cols() - (idx + 1) ); mxd::b A22 = _m.block(idx + 1, idx + 1 , _m.rows() - (idx + 1) , _m.cols() - (idx + 1) ); vxd::b b0 = _b.segment(0 , idx ); vxd::b betha1 = _b.segment(idx , 1 ); vxd::b b2 = _b.segment(idx + 1, _b.rows() - (idx + 1) ); b2 = b2 - betha1.value() * a21; idx++; } } | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | //solving upper triangular matrix inline void v_um(mxd::r _m, vxd::r _b){ i::t idx = _m.rows() - 1; while(idx > -1){ mxd::b A00 = _m.block(0 , 0 , idx , idx ); mxd::b a10 = _m.block(idx , 0 , 1 , idx ); mxd::b A20 = _m.block(idx + 1, 0 , _m .rows() - (idx + 1) , idx ); mxd::b a01 = _m.block(0 , idx , idx , 1 ); mxd::b alpha11 = _m.block(idx , idx , 1 , 1 ); mxd::b a21 = _m.block(idx + 1, idx , _m.rows() - (idx + 1) , 1 ); mxd::b A02 = _m.block(0 , idx + 1 , idx , _m.cols() - (idx + 1) ); mxd::b a12 = _m.block(idx , idx + 1 , 1 , _m.cols() - (idx + 1) ); mxd::b A22 = _m.block(idx + 1, idx + 1 , _m.rows() - (idx + 1) , _m.cols() - (idx + 1) ); vxd::b b0 = _b.segment(0 , idx ); vxd::b betha1 = _b.segment(idx , 1 ); vxd::b b2 = _b.segment(idx + 1, _b.rows() - (idx + 1) ); betha1 = betha1 - a12 * b2; betha1 = betha1 / alpha11.value(); idx--; } } | cs |
'Linear Algebra' 카테고리의 다른 글
[Eigen] Day 11. Gauss-jordan elimination solving two linear equation (0) | 2019.06.06 |
---|---|
[Eigen] Day 10. LU decomposition with pivoting (0) | 2019.06.04 |
[Eigen] Day 9. LU decomposition (0) | 2019.06.02 |
[Eigen] day 9. Gauss elimination, matrix to upper triangular form (0) | 2019.06.02 |
[Eigen] Day 8. special matrix and vector multiplication (0) | 2019.06.01 |