Hilbert matrix is highly ill-conditioned matrix, in this tutorial, we write an python function to generate a hilbert matrix with numpy. You can use this function in your machine learning model.
The python function is:
import numpy as np def hilbert(n): x = np.arange(1, n+1) + np.arange(0, n)[:, np.newaxis] return 1.0/x
To understand np.newaxis, you can read this tutorial.
Understand numpy.newaxis with Examples for Beginners – NumPy Tutorial
How to use?
Create a 5 * 5 hilbert matrix
x = hilbert(n=5) print(x)
The hilbert matrix is:
[[1. 0.5 0.33333333 0.25 0.2 ] [0.5 0.33333333 0.25 0.2 0.16666667] [0.33333333 0.25 0.2 0.16666667 0.14285714] [0.25 0.2 0.16666667 0.14285714 0.125 ] [0.2 0.16666667 0.14285714 0.125 0.11111111]]
Create a 10 * 10 hilbert matrix
x = hilbert(n=10) print(x)
The hilbert matrix is:
[[1. 0.5 0.33333333 0.25 0.2 0.16666667 0.14285714 0.125 0.11111111 0.1 ] [0.5 0.33333333 0.25 0.2 0.16666667 0.14285714 0.125 0.11111111 0.1 0.09090909] [0.33333333 0.25 0.2 0.16666667 0.14285714 0.125 0.11111111 0.1 0.09090909 0.08333333] [0.25 0.2 0.16666667 0.14285714 0.125 0.11111111 0.1 0.09090909 0.08333333 0.07692308] [0.2 0.16666667 0.14285714 0.125 0.11111111 0.1 0.09090909 0.08333333 0.07692308 0.07142857] [0.16666667 0.14285714 0.125 0.11111111 0.1 0.09090909 0.08333333 0.07692308 0.07142857 0.06666667] [0.14285714 0.125 0.11111111 0.1 0.09090909 0.08333333 0.07692308 0.07142857 0.06666667 0.0625 ] [0.125 0.11111111 0.1 0.09090909 0.08333333 0.07692308 0.07142857 0.06666667 0.0625 0.05882353] [0.11111111 0.1 0.09090909 0.08333333 0.07692308 0.07142857 0.06666667 0.0625 0.05882353 0.05555556] [0.1 0.09090909 0.08333333 0.07692308 0.07142857 0.06666667 0.0625 0.05882353 0.05555556 0.05263158]]