comp.lang.idl-pvwave archive
Messages from Usenet group comp.lang.idl-pvwave, compiled by Paulo Penteado

Home » Public Forums » archive » Re: 3d matrices and LUSOL
Show: Today's Messages :: Show Polls :: Message Navigator
E-mail to friend 
Return to the default flat view Create a new topic Submit Reply
Re: 3d matrices and LUSOL [message #28992 is a reply to message #28991] Thu, 24 January 2002 15:22 Go to previous message
the_cacc is currently offline  the_cacc
Messages: 104
Registered: October 2001
Senior Member
"M" <mrmanish@bigfoot.com> wrote in message news:<a2pj2t$jv8$1@yarrow.open.ac.uk>...
> Hi all,
>
> I am in desperate need of help!!
>
> I have a set of linear equations represented as matrix arrays which need to
> be solved using the LU decomposition technique. The two arrays consist of a
> 14 x 14 array, and a 14 x 1 array, but each element in the matrices itself
> is an array of 221 elements ( ie the matrices are 3dimensional...?)
>
> So i need to solve the system using LUDC and LUSOL, but i have to do it 221
> times (ie a solution for each 'layer' of the matrices)
>
> The first question is, is there a way to declare the two input arrays as
> 3-d? I tried defining the matrix using matrix=[[a,b,..],[...,...,...] etc]
> where a,b,... = arrays, but this isn't recognised as a 14 x14 square matrix
> which is 221 elements 'deep'. Instead, it expands each array across the
> row, making it a 3094 x 14 matrix. (it needs to be square to run LUDC)
>
> Is there a way i can force IDL to see it as a 'layered' 3-d matrix?
>
> What i need to achieve is a 3 dimensional 14 x 1 solution array, again 221
> elements 'deep'. To get this, could i simply run LUDC and LUSOL as normal
> provided the inputs are 3d matrices, or do i need to somehow loop the
> procedures so it produces solutions one 'layer' at a time and builds them
> into the 3 d solution matrix ?
>
> I don't know if anyone has any idea of what i'm talking about, but i only
> just understand it myself!!
> Apologies if it makes no sense whatsoever, suffice to say i'm a little
> confused right now!
>
>
> Any insight into the above would be great,
>
> thanks,
>
> Manish.

Hi,

From what you say, it sounds like you want to be solving the 14x14
problem 221 times, ie.

For the first 14x14 matrix (A1) and 14x1 vector (b1), solve for x1:
x1 = INVERT(A1) ## b1

Then for the second case: x2 = INVERT(A2) ## b2

and so on 221 times. You'll then have 221 14x1 vectors x1,x2,... which
together give a 2D matrix (221x14).

Is this what you were expecting as your answer ? If so, then yay! If
not, I haven't understood the problem :(

Of course, you can define the individual matrices in larger matrices,
ie. A = FLTARR(14,14,221), b = FLTARR(14,221) and x = FLTARR(14,221)
then loop as follows:

FOR i = 0, 220 DO x[*,i] = INVERT(A[*,*,i]) ## b[*,i]


NOTE: using LUDC and LUSOL directly is slightly faster than using
INVERT, but you may prefer INVERT initially since it makes the code
simpler.

Ciao.
[Message index]
 
Read Message
Read Message
Read Message
Read Message
Previous Topic: 3-D shape analysis
Next Topic: Re: nested subroutines and scope

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ] [ PDF ]

Current Time: Fri Oct 10 05:17:16 PDT 2025

Total time taken to generate the page: 0.08075 seconds