# coding: utf-8 # # Relative cost of matrix operations # In[2]: import numpy as np import scipy.linalg as spla import scipy as sp import matplotlib.pyplot as pt from time import time np.alterdot() # In[8]: n_values = (10**np.linspace(2, 3.25, 15)).astype(np.int32) n_values # In[9]: def mat_mul(A): return A.dot(A) for name, f in [ ("lu", spla.lu_factor), ("qr", spla.qr), ]: times = [] print("----->", name) for n in n_values: print(n) A = np.random.randn(n, n) start_time = time() f(A) times.append(time() - start_time) pt.loglog(n_values, times, label=name) pt.grid() pt.legend(loc="best") pt.xlabel("Matrix size $n$") pt.ylabel("Wall time [s]") # * Can we see the asymptotic cost ($O(n^3)$) of these algorithms from the plot? # In[3]: