Complexity of Matrix Inversion

What is the computational complexity of inverting an nxn matrix? (In 
general, not special cases such as a triangular matrix.)

Gaussian Elimination leads to O(n^3) complexity. The usual way to 
count operations is to count one for each "division" (by a pivot) and
one for each "multiply-subtract" when you eliminate an entry.

Here's one way of arriving at the O(n^3) result:

At the beginning, when the first row has length n, it takes n
operations to zero out any entry in the first column (one division,
and n-1 multiply-subtracts to find the new entries along the row
containing that entry. To get the first column of zeroes therefore
takes n(n-1) operations.

In the next column, we need (n-1)(n-2) operations to get the second
column zeroed out.

In the third column, we need (n-2)(n-3) operations.

The sum of all of these operations is:

n n n n(n+1)(2n+1) n(n+1)
SUM i(i-1) = SUM i^2 - SUM i = ------------ - ------
i=1 i=1 i=1 6 2

which goes as O(n^3). To finish the operation count for Gaussian
Elimination, you'll need to tally up the operations for the process
of back-substitution (you can check that this doesn't affect the
leading order of n^3).

You might think that the O(n^3) complexity is optimal, but in fact
there exists a method (Strassen's method) that requires only
O(n^log_2(7)) = O(n^2.807...) operations for a completely general
matrix. Of course, there is a constant C in front of the n^2.807. This
constant is not small (between 4 and 5), and the programming of
Strassen's algorithm is so awkward, that often Gaussian Elimination is
still the preferred method.

Even Strassen's method is not optimal. I believe that the current
record stands at O(n^2.376), thanks to Don Coppersmith and Shmuel
Winograd. Here is a Web page that discusses these methods:

Fast Parallel Matrix Multiplication - Strategies for Practical
Hybrid Algorithms - Erik Ehrling
http://www.f.kth.se/~f95-eeh/exjobb/background.html

These methods exploit the close relation between matrix inversion and
matrix multiplication (which is also an O(n^3) task at first glance).

I hope this helps!

- Doctor Douglas, The Math Forum
http://mathforum.org/dr.math/

Sparse Finite-Element Matrices in MATLAB

March 1st, 2007

Creating Sparse Finite-Element Matrices in MATLAB

I’m pleased to introduce Tim Davis as this week’s guest blogger. Tim is a professor at the University of Florida, and is the author or co-author of many of our sparse matrix functions (lu, chol, much of sparse backslash, ordering methods such as amd and colamd, and other functions such as etree and symbfact). He is also the author of a recent book, Direct Methods for Sparse Linear Systems, published by SIAM, where more details of MATLAB sparse matrices are discussed ( http://www.cise.ufl.edu/~davis ).

Contents

TDD by Example con Python 3

Después de leer Test Driven Development- By Example (Addison-Wesley Signature Series) me quedo un sensación mixta de intranquilidad. Seguí los ejemplos del libro, la primera…

Después de leer Test Driven Development- By Example (Addison-Wesley Signature Series) me quedo un sensación mixta de intranquilidad. Seguí los ejemplos del libro, la primera parte usando C#; aunque el libro usa Java y la segunda parte con Python 3.1, haciendo algunas adecuaciones al código del libro. De hecho, primero lo

Search Engine Optimization (SEO)

Internet es la calle más transitada del mundo, pero el trafico en cada pagina depende principalmente del posicionamiento en los buscadores como Google. Al arte de colocarse en los primeros lugares de los listados se le conoce como Search Engine Optimization (SEO).


Google mantiene como secreto la mecánica de asignación de lugares, que además cambia de manera continúa. Es un proceso bastante errático, y los que logran colocarse en la primera pagina para la lista de búsqueda de un conjunto de palabras, tenderán a mantenerse ahí hagan lo que hagan, tengan el contenido que tengan, siempre y cuando Google no los vete, por razones también erráticas y misteriosas. Es decir, el SEO es un deporte extremo.

Referencias, recursos, y ejemplos

Blogger seo

How to track your Blogger statistics with Google:

  1. Go to Google Analytics to sign up or log in.
  2. When logged in, choose to create a new account and follow the steps.
  3. When you get to “Add Tracking“, open up a new window and log in to your Blogger account.
  4. Go to your blog’s settings and choose “Template” and then “Page Elements“
  5. Have a look at the footer (it has to be the footer!) of the design and choose to “Add a Page Element“.
  6. Find the “HTML/JavaScript” element and then “Add to blog“.
  7. Don’t write anything in the title column.
  8. Copy and paste the code from Google Analytics in the content box and “Save changes”.
  9. Then continue the steps on Google Analytics and you’re done!

Or if you are familiar with coding:

  1. From dashboard – Settings – Template – Edit HTML
  2. Scroll down to the very bottom in the box and locate the tag.
  3. Copy and past the Google code right BEFORE the tag and then save.
  4. To check your stats you just have to click “View Reports”.
  5. If it says “Tracking Unknown” in the status column, you have done something wrong.

Also, you might want to get your blog Google verified (link to tutorial for Blogger) so your blog gets crawled so your chances to show up on search results increases. Here is a tutorial for you WordPress.com users.

Animaciones

1: Motor radial de un avión

2: Distribución oval

3: Principio de la máquina de coser

4: Movimiento de Cruz de Malta – de la mano del segundero, que controla al reloj

5: Mecanismo de cambio de velocidades (automóvil)

6: Junta universal para velocidad constante automática

7: Sistema de carga de proyectiles

8: Motor giratorio – motor de combustión interna, el calor y no el movimiento del pistón, causa el movimiento giratorio

9: Motor en línea – cilindros alineados en forma paralela

ProjectLibre

Project management software has the capacity to help plan, organize, and manage resource pools and develop resource estimates. Depending on the sophistication of the software, it can manage estimation and planning, schedulingcost control and budget managementresource allocationcollaboration softwarecommunicationdecision-making, quality management and documentation or administration systems.[1] Today, numerous PC & browser based project management softwares exist and they are finding their way into almost every type of business.

ProjectLibre

In our interview with Marc O’Brien, co-founder ofProjectLibre, we featured a tool with support for task management, resource allocation, tracking, Gantt charts, and much more. ProjectLibre is a good alternative to a commercial software product like Microsoft Project.

In December 2013, ProjectLibre released version 1.5.8, and a full rewrite of the codebase towards an Open Services Gateway Initiative (OSGI) modular architecture is ongoing. This will allow connector modules for better integration with enterprise solutions such as Enterprise Resource Planning (ERP).

ProjectLibre is a Java based client tool. During their 2014 Q1 this year, they will release version 2.0. It is not clear yet when the SaaS version will become available.

ProjectLibre was awarded InfoWorld’s “Best of Open Source” in 2013 and ranks in my personal top 3 favorite open source project management tools.