

Singular Value Decomposition - tomrod
http://en.wikipedia.org/wiki/Singular_value_decomposition

======
tjpick
I would have picked these:

<http://en.wikipedia.org/wiki/De_Morgans_laws>

------
kunjaan
These kinds of posts just open an endless and meaningless debate.

For example, why not list rules from boolean logic? Why don't we have concept
of induction? I use tree concepts more often than I use SVD.

~~~
tomrod
Because these are among the most important mathematical concepts a programmer
needs to understand--not "almost" the most important :-)

------
Adrock
It's not obvious to me why this is so important to programmers. Can someone
explain?

~~~
gte910h
You use this to project and move objects to different orientations, shapes and
sizes. So if you're doing animation, UI programming or graphics, it's very
useful.

If you're doing analysis, you can use SVD to isolate independent forces, and
to quantify the relationships of dependent forces.

Some compressions/specification techniques rely on it.

Basically, it's very important to know how to do for some, vaguely informative
for others, and very important for yet another group.

~~~
rabidsnail
For UI programming and animation transformation matrices
(<http://en.wikipedia.org/wiki/Transformation_matrix>) (plus some simple
calculus) are really all you need.

~~~
gte910h
Depends on what part of the animations you're doing. SVD is a technique you'll
do on Transformation matrices to find certain things out.

I'm not saying the OP's contention that SVD is fantastically useful is that
true. I _am_ saying understanding matrix math down to the point of SVD and
being able to do it when you spend much of your day doing transforms is useful
for animation beyond setting EaseInOut and going about your day.

------
tomrod
In response to ha-hn:

The intent to this post is not to create mathematical elitism, but to
highlight an important mathematical concept that comes up in programming--and
many programmers may work with or around it without realizing it.

As I understand it, this concept is used in: * Compression Algorithms * Signal
Analysis * Pagerank * Factor Analysis * Animation (especially when considering
more than 3 points of information for each vector) * Clustering in Machine
Learning * Noise reduction in DSP * Match.com's dating algorithm * Principal
Component analysis * Image scaling * Control theory

I know it has been used in many more applications beyond this list.

I'm sorry you feel a smack of mathematical elitism. The concepts here are not
inherently difficult, just a little complex. Here is a great resource to learn
more: [http://www.puffinwarellc.com/index.php/news-and-
articles/art...](http://www.puffinwarellc.com/index.php/news-and-
articles/articles/30-singular-value-decomposition-tutorial.html)

------
ethereon
That's quite the hyperbole.

When I was studying Electrical Engineering, I noticed that SVDs cropped up
frequently. From memory, a quick list of situations where I can recall using
SVDs :

\- For computing homographies in Computer Vision

\- For clustering in Machine Learning

\- For noise reduction in DSP

In general, when the problem can be modeled using linear algebra, SVD often
proves to be a versatile tool ( for linear optimization, eigenvalue problems,
least squares, etc).

However, that doesn't make it the most important topic. I could just as easily
name a bunch of other techniques that are also frequently used : FFTs, Linear
programming, Monte Carlo methods. If you're an electrical engineer, all of
these would be useful. Yet, I wouldn't call any of them the most important
topic.

------
patrickc
[http://web.ics.purdue.edu/~park283/wp-
content/uploads/2010/1...](http://web.ics.purdue.edu/~park283/wp-
content/uploads/2010/10/Singular_Value_Decomposition_Tutorial.pdf)

------
jhrobert
Addition, subtraction and order relationships (ie > & <) are the only math
that really matters.

Not convinced? Count the number of * and / in any source file and compare that
to the number of + and -

Not to say that math is not useful, it's useful if math related stuff is what
you do, which is a very small subset of what CS is about.

------
tbrownaw
What about algorithmic complexity and induction/deduction?

------
edge17
i'm going to go with the 80-20 rule as the most important math concept a
programmer can learn

~~~
tomrod
I like it. But this is more of a business and economic rule, no?

~~~
edge17
Sure, but also it's better to look for the common case (i.e. the 80%) and make
sure that's fast. It's not always worth optimizing the uncommon case (like
branch misses with a branch predictor).

------
petegrif
depends on the style of language a) imperative 1+1 = 2 (increment) b)
functional f(x) = c) object = if you can't see it, it doesn't matter how much
math you know

