home *** CD-ROM | disk | FTP | other *** search
- Newsgroups: sci.math
- Path: sparky!uunet!nwnexus!amc-gw!kenb
- From: kenb@amc.com (Ken Birdwell)
- Subject: Triangular systems of equations.
- Message-ID: <1992Aug28.002556.7374@amc.com>
- Organization: Applied Microsystems Corporation
- Date: Fri, 28 Aug 1992 00:25:56 GMT
- Lines: 57
-
- I'm looking for a method to help me solve large systems of
- simultanious equations (10,000+) that are related to one another in
- the form of an irregular triangular mesh. My problem seems to be in
- not being able to order the points into a tight enough diagonal
- sparse matrix. If you know of any references on solving systems
- like this, please forward them.
-
-
- The problem:
- Given an irregular non-overlapping 2D open triangular mesh of a N
- points, with known coordinates for all edge points, calculate "good"
- coordinates for all the interior points while maintaining the feature of
- non-overlapping triangles.
-
- My solution so far:
- Cycle through all the interior points, calculating for each one a new
- coordinate by averaging the coordinates of all of its 'mesh' neighbors.
- Repeat until the points stop moving (much).
-
- I've also added the feature that all the points are weighted by
- how well their new triangles match the surface area of their
- original triangles. This kinda forces a equal area distortion, which
- is desirable.
-
- The problem is that it takes N*sqr(N) time for the interitive approach
- to settle down into a solution. When N > 10k, this is a problem, and
- can take over a 1/2 hour and a 486/33.
-
- What I tried to do:
- Well, I tried to build this into a very large system of system of
- simultanions equations, and interate through it one or two times until
- I could calculate what weights to use.
-
- I wrote some software that does sparse matrices (zero's take up no
- memory), and got this solution to work fine for systems with around
- 2,000 points. It also has very nice linear computational cost (about 30
- seconds per 1000 points). With systems larger then about 10,000, the
- sparse matrix starts to fill up (I'm using Gaussian elimination with
- back subsitution). Systems any larger start to take up alot more memory,
- and pretty soon fill up my 32MB of RAM.
-
- The problem, I think, is that I don't have a good way to order the
- points in the matrix so that connected points keep a tight enough
- diagonal. What I do now is to pick a single starting point, and
- interate outward from that point, numbering each point as they get
- farther and farther away from the starting point. This creates (in the
- matrix) what look like a central band with two other parallel bands, one
- on each side of the central band, that bow out in the middle. This
- bowing in the middle ends up causing the matrix to fill up with non-zero
- values, and also killing performance.
-
- Any method that will order the points better, or a way to swap rows and
- columns to minimize the memory used would be much appreciated.
-
-
- --
-
-