help-octave
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: matrix inversion


From: David Bateman
Subject: Re: matrix inversion
Date: Wed, 22 Nov 2006 17:31:51 +0100
User-agent: Thunderbird 1.5.0.7 (X11/20060921)

Gorazd Brumen wrote:
> Hello,
>
> I have a square matrix that is composed of N^2 block matrices, where
> every block matrix is relatively large t x t diagonal matrix (both
> N and t large), i.e.
>
> A = [ A_{11}, A_{12} , ... A_{1N}; A_{21} ... A_{2N} ...],
> where every A_{ij} is a diagonal matrix of size txt.
>
> My question is the following: How many operations would
> spinv need to do this inversion?
>
>
> Thanks and regards,
> Gorazd
>
>   
Ok, just for the hell of it I ran

N=5;
t=5;
dt = speye(t);
A = repmat(dt,N,N);
[p,q,r,s] = dmperm(A);
spy(A(p,q))

and I saw that the block triangular factorization of this beast is in
fact N t-by-t full matrices. So yes a BTF technique really does make
sense here.. I believe, that something like

[p,q,r,s] = dmperm(A);
b = speye(rows(A))(p,:);
A = A (p,q);
x = zeros(size(A));
for k = r-1:-1:1
  # Get k-th block
  k1 = r(k);
  k2 = r(k+1) - 1;

  # Solve the system
  x(k1:k2,:) = A(k1:k2,K1:k2) \ b(k1:k2,:);
 
  # off-diagonal block back subsitution
  b (1:k1-1,:) = b (1:k1-1,:) - A (1:k1-1, k1:k2) * x (k1:k2,:) ;

endfor
x(q,:) = x;

might be an efficient manner to solve this type of problem (at least in
theory).

D.

-- 
David Bateman                                address@hidden
Motorola Labs - Paris                        +33 1 69 35 48 04 (Ph) 
Parc Les Algorithmes, Commune de St Aubin    +33 6 72 01 06 33 (Mob) 
91193 Gif-Sur-Yvette FRANCE                  +33 1 69 35 77 01 (Fax) 

The information contained in this communication has been classified as: 

[x] General Business Information 
[ ] Motorola Internal Use Only 
[ ] Motorola Confidential Proprietary



reply via email to

[Prev in Thread] Current Thread [Next in Thread]