Cost of Linear Solves

In [10]:
import numpy as np
import numpy.linalg as la
import matplotlib.pyplot as pt
from time import process_time
In [23]:
def get_solve_time(n):
    A = np.random.randn(n, n)
    B = np.random.randn(n, n)
    
    t_start = process_time()
    A @ B
    t_stop = process_time()
    
    return t_stop-t_start
In [24]:
n_values = list(range(0, 1000, 10))
print(n_values)
times = [get_solve_time(n) for n in n_values]
[0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, 700, 710, 720, 730, 740, 750, 760, 770, 780, 790, 800, 810, 820, 830, 840, 850, 860, 870, 880, 890, 900, 910, 920, 930, 940, 950, 960, 970, 980, 990]
In [25]:
pt.plot(n_values, times)
pt.grid()
  • Can we predict individual values?
  • What does the overall behavior look like?
  • How could we determine the "underlying" function?
In [ ]: