Trevor
Is the upper triangular part of your matrix as:
/ \
| x x |
| x x |
| x x |
| x x |
| x x |
| x x |
| x |
\ /
(or a dense row)? If so, you can solve it by sky-line solver. Or you can
renumber the sparse matrix to have a minimal bandwidth, and solve it by
constant band solver.
Good luck
Alois
With no info about the sparse part there is:
A = S + uv^T
solve Sy = b and Sw = u
let k = v^Ty/(1+v^Tw)
then x = y - k w
There is no way to agree with the opinion "renumbering .... save you only
half the full bandwidth".
Basically, you need a good renumbering scheme or tool. The following is a
link for renumbering
http://www.equation.com/servlet/equation.cmd?call=jcl
(or http://www.Equation.com)
> There is no way to agree with the opinion "renumbering .... save you only
> half the full bandwidth".
>
> Basically, you need a good renumbering scheme or tool. The following is a
> link for renumbering
> http://www.equation.com/servlet/equation.cmd?call=jcl
> (or http://www.Equation.com)
Hello,
assume an "arrow matrix" with fill in in the diagonal and the last row
and column.
What's the most efficient numbering?
What's the corresponding band width?
Alois
Hi, Alois,
Renumbering is not limited to produce constant bandwidth. As stated in my
origianl response, if the upper triangular part
is as:
/ \
| x x |
| x x |
| x x |
| x x |
| x x |
| x x |
| x |
\ /
variable bandwidth solver (i.e., skyline solver) is a choice.
>
> Hi, Alois,
>
> Renumbering is not limited to produce constant bandwidth. As stated in my
> origianl response, if the upper triangular part
> is as:
>
> / \
> | x x |
> | x x |
> | x x |
> | x x |
> | x x |
> | x x |
> | x |
> \ /
>
> variable bandwidth solver (i.e., skyline solver) is a choice.
Hello,
this case and the transposed one are quite trivial, but if there is a
full row and full column, then renumbering doesn't help much and you
need a different method.
Regards
Alois
> Hello,
> this case and the transposed one are quite trivial, but if there is a
> full row and full column, then renumbering doesn't help much and you
> need a different method.
> Regards
> Alois
Yes, I should have been more specific: my system has a dense column
*and* a dense row. I.e., the matrix looks somewhat like this:
/ \
| x x |
| x x |
| x x |
| x x |
| x x |
| x x |
| x x x x x x x |
\ /
(though in reality there are more off-diagonal entries and the system
may have blocks that are not symmetric).
Sorry for the confusion,
Trevor
Based on your description, it seems each X is a [X], a block (or a
submatrix) not a coefficient. If, so, that is not the one I responded
previously. If each entry in your system is a coefficient and your system is
symmetric, variable bandwidth solver can take advantage of the sparsity. If
each entry is a block, that would be a different story. Renumbering deals
with unknowns, not blocks.
Based on your description, it seems your system has a dense block column and
dense block row. Are those offdiaginal blocks dense? If they are sparse
blocks, you can renumber your system to take advantage of sparse solver.
A x + B y = b
C x + D y = c
where A is sparse, and B and D are your column and row matrices.
Then you could try to solve the first equation for x:
x = G y + H b
Inserting that into the second equation, you obtain a small system for
y. Of course the resulting system might be worse conditioned than the
original one.
Good luck
Alois