
Clojure Linear Algebra Refresher: 1 – Vector Spaces - tosh
http://dragan.rocks/articles/17/Clojure-Linear-Algebra-Refresher-Vector-Spaces
======
krosaen
The author states the problem clearly: programmer rusty at linear algebra,
needs some background.

But at some point, the disdain for pure math / theory becomes a hindrance
IMHO. If being human calculator on paper back in college left you unprepared
now, won't getting proficient with a linear algebra library, ignoring theory
whenever possible do the same?

I recommend at least pairing use case focused tutorials like this with

Essence of linear algebra:
[http://www.youtube.com/playlist?list=PLZHQObOWTQDPD3MizzM2xV...](http://www.youtube.com/playlist?list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab)

~~~
dragandj
The author ( _me_ ) also states that the tutorial should be used _with a
linear algebra textbook_ and not on its own, and even recommends the specific
(math) textbook.

I do not get how you see disdain for math there?

~~~
krosaen
Maybe this line

>It is application oriented; it has more theorem proofs than I need, but it at
least does not skip application examples

And that it focuses entirely on library use cases. But I see now that's the
explicit goal, and I'm projecting my needs for more articles providing clarity
on the theory onto your article :)

~~~
dragandj
In my opinion, there is no shortage of good math textbooks of all levels
providing clarity on theory. There is also no (or not too much) shortage of
good numerical software for LA. What's missing is the time to be _both_ good
at theory, and have mastery of numerical software, _and_ general software
engineering.

As I am _not_ a mathematician, I can not write even a passably good
theoretical LA tutorial, yet alone one that is better what is currently
available. The goal of these articles is: You've read the math text -> here's
how you can try this in Clojure. Nothing more than that.

~~~
krosaen
Yeah that's totally fair

------
xaa
I am glad to hear Clojure is slowly getting its act together WRT numerics. I
reluctantly dropped the language several years ago because the ecosystem for
any kind of math/ML was just nonexistent, unless you consider a "call the
terribly verbose Java libraries for everything" approach viable.

Especially nice in this Neanderthal lib is the GPU stuff.

~~~
sova
Yeah, the foundation is there (hold arbitrary fractions, 64-bit decimals...
other good things). What's the go-to tool for Mathematics? MatLab?

~~~
xaa
Eh, the simplified version is:

\- Engineers (like electrical etc) use Matlab

\- Statisticians use R

\- Rich people sometimes use Mathematica

\- People with some CS background use Python/numpy/sklearn

For "purer" math, like symbolic differentiation and such, I don't really know
any of those people, but I think Mathematica has a lot in that area. The
others have stuff, but less developed. But pretty much every major language
has linear algebra at this point.

~~~
ludsan
Sadists use sas

~~~
cholantesh
Who, other than students forced to do so, uses Minitab?

------
dragandj
Talking about HN effect, the price of a second-hand copy of the linear algebra
textbook that I recommended doubled on Amazon as the number of available
copies dwindles...

------
thanatropism
> _The following two sections, Subspaces and Linear Combinations are
> theoretical._

My personal take: learning and making proofs is important because you get to
understand the point of the more abstract topics (such as vector subspaces,
orthogonal complements, direct sums, etc.)

And then you have new tools for thinking.

~~~
dragandj
Yes, and the reader should do that following the textbook. There was nothing
special that I could add to that.

~~~
thanatropism
Yes, but the tutorial isn't suggesting the reader go do proofs. Instead he
says these more advanced topics are unnecessary. I said: their necessity is
not apparent until you try doing proofs; but then you see them everywhere like
a man with a hammer sees nails.

Mind, his approach may well be the correct one for the context, but _you 're_
saying he's doing things _my_ way, which he's not.

------
gtt
The mistake is in the almost first sentence:

Eigenvalues aren't defined for rectangular matrices!

------
tptacek
SVD seems like a tough way to get rank; can't you just reduce and count
pivots?

~~~
dragandj
SVD seems to be most safe and stable, and it is available. I see that people
suggest some forms of rank-revealing QR factorization, but they are less
stable, and I am not sure how to access that from LAPACK. Any practical
suggestions are appreciated in that regard.

~~~
tptacek
Yep, apparently this is what MATLAB does too. Learn something new every day I
guess.

