[SciPy-dev] Hilbert-matrix

Robert Kern robert.kern at gmail.com
Wed May 20 20:35:57 EDT 2009


2009/5/20 Stéfan van der Walt <stefan at sun.ac.za>:
> Hi all,
>
> The Ill-conditioned Hilbert-matrix is often studied by students in
> numerical linear algebra, and as such I thought it might deserve a
> place in scipy.linalg.
>
> def hilbert(N):
>    x, y = np.ogrid[1.:N+1, 1.:N+1]
>    return 1 / (x + y - 1)
>
> The trickier issue, however, would be calculating the inverse -- does
> anybody have suggestions on how to implement it accurately?

There is an analytic formula involving combinations:

  http://mathworld.wolfram.com/HilbertMatrix.html

You could probably implement that straightforwardly in
double-precision with gammaln followed by exponentiation. That would
probably be about as good as any double-precision inversion routine
should be expected to get, best-case, since for largish matrices
double-precision won't even accurately represent the correct answer. A
fully-correct bigint expansion is neat, but not particularly necessary
to demonstrate instability.

-- 
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless
enigma that is made terrible by our own mad attempt to interpret it as
though it had an underlying truth."
  -- Umberto Eco



More information about the SciPy-Dev mailing list