Matrix inversion algorithm examples

R

Robert M. Gary

Does anyone have any code examples of doing a Matrix inversion that I
could look at? I'm trying to get a sense of strategies to go about it.
I understand inversions from a pure mathematical/algebra point of view
but it seems like there could be different ways of going about
implmenting it in code. I"m working on a website to do financial
portfolio modeling and a lot of the algorithms are matrix based. I
understand the graphics guys use matrices a lot too.

-Robert
 
C

Chris Smith

Robert M. Gary said:
Does anyone have any code examples of doing a Matrix inversion that I
could look at? I'm trying to get a sense of strategies to go about it.
I understand inversions from a pure mathematical/algebra point of view
but it seems like there could be different ways of going about
implmenting it in code. I"m working on a website to do financial
portfolio modeling and a lot of the algorithms are matrix based. I
understand the graphics guys use matrices a lot too.

First of all, there are several ways to represent matrices. If your
matrices are "dense" (that is, most cells contain non-zero values), then
you just store all the values. If your matrices are "sparse" (that is,
most cells are zero... or some other known value), then you get far
better performance from a sparse matrix structure that just stores the
non-zero values. This makes huge differences in the code to perform
operations.

Beyond that, I'll let someone else respond who has the time to write a
better answer.

--
www.designacourse.com
The Easiest Way To Train Anyone... Anywhere.

Chris Smith - Lead Software Developer/Technical Trainer
MindIQ Corporation
 
C

Chris Lamb

Does anyone have any code examples of doing a Matrix inversion that I
could look at? I'm trying to get a sense of strategies to go about it.
I understand inversions from a pure mathematical/algebra point of view
but it seems like there could be different ways of going about
implmenting it in code. I"m working on a website to do financial
portfolio modeling and a lot of the algorithms are matrix based. I
understand the graphics guys use matrices a lot too.

-Robert

An example using Gaussian Elimination:

Jama - http://math.nist.gov/javanumerics/jama/

Most times, if you are inverting a matrix, you should be inverting
something small so sparse/dense representation shouldn't matter. If
you are inverting a matrix so large that sparse representation
improves algorthm performance, you are doing the wrong thing. Almost
always if you are inverting say a 1,000x1,000 matrix you havn't
understood the problem. Also, forming the direct inverse of a large
matrix will buld up errors such that your answer is near meaningless.

HTH

Chris
 
C

Chris Uppal

Robert said:
Does anyone have any code examples of doing a Matrix inversion that I
could look at? I'm trying to get a sense of strategies to go about it.

You could take a look at JAMA or Jampack from NIST:

http://math.nist.gov/javanumerics/jama/
ftp://math.nist.gov/pub/Jampack/Jampack/AboutJampack.html

They might be more "advanced" than you want, though.

-- chris
 
P

Patricia Shanahan

Chris said:
An example using Gaussian Elimination:

Jama - http://math.nist.gov/javanumerics/jama/

Most times, if you are inverting a matrix, you should be inverting
something small so sparse/dense representation shouldn't matter. If
you are inverting a matrix so large that sparse representation
improves algorthm performance, you are doing the wrong thing. Almost
always if you are inverting say a 1,000x1,000 matrix you havn't
understood the problem. Also, forming the direct inverse of a large
matrix will buld up errors such that your answer is near meaningless.

HTH

Chris

Are you saying that you should never solve large systems of linear
equations, or just that it is a mistake to do it by directly inverting
the matrix rather than e.g. by LU factorization?

Patricia
 
C

Chris Lamb

Are you saying that you should never solve large systems of linear
equations, or just that it is a mistake to do it by directly inverting
the matrix rather than e.g. by LU factorization?

I hope we do need to solve large systems of equations. After all, my PhD
was entirely based on that! Your second statement is right, but I prefer
(well, they perform best in my field) Conjugate Gradients and related
methods.
Yes, it is almost invariably a mistake to do it by direct inversion.

Chris
 
R

Roedy Green

Matrix inversion

nearly always you just grab a matrix inversion routine from a package.
Anything you write will almost inevitably be slower or blow up more
often. It takes quite a bit of cleverness to avoid error propagation.
 
R

Robert M. Gary

I may end up just using a package, however I would like to also see an
algorithm just to understand how its working.

-Robert
 
R

Robert M. Gary

your matrices are "dense" (that is, most cells contain non-zero values), then you just store all the values.

Sorry, mine are dense. Mostly they are matrices of asset price
variance.

-Robert
 
J

Jos A. Horsmeier

Robert M. Gary said:
Does anyone have any code examples of doing a Matrix inversion that I
could look at? I'm trying to get a sense of strategies to go about it.
I understand inversions from a pure mathematical/algebra point of view
but it seems like there could be different ways of going about
implmenting it in code. I"m working on a website to do financial
portfolio modeling and a lot of the algorithms are matrix based. I
understand the graphics guys use matrices a lot too.

Never explicitly inverse a matrix; both for performance and numerical
stability reasons. You only need the inverse of a matrix conceptually,
i.e. Ax = b --> x = A^-1 b. For such purposes google for 'LUP decomposition'
of a matrix. It's faster and introduces far less numerical instability.

kind regards,

Jos
 
J

Jacob

Robert said:
Does anyone have any code examples of doing a Matrix inversion that I
could look at?

This class inverts (check the invert() method) a 4x4 matrix
by the use of cofactors:

http://geosoft.no/software/matrix4x4/Matrix4x4.java.html

This is probably the fastest way to invert this type of
matrix, but might not be generalized to higher dimensions.
I understand the graphics guys use matrices a lot too.

Yes, but we normally stop at 4x4...
 
Joined
Oct 29, 2008
Messages
1
Reaction score
0
Hi To Everyone

I Am New In Algorithm And Flowcharting Process
I Would Be Glad If Anyone Knows How To Make An Algorithm Or Flowchart In Order To Add 2 Matrices Together.
Thank U
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,578
Members
45,052
Latest member
LucyCarper

Latest Threads

Top