def fit_power_law(x, y):
"""
"""
ln_x = NP.log(x)
ln_y = NP.log(y)
# least squares solution
A = NP.empty((len(x), 2))
A[:, 0] = 1
A[:, 1] = ln_x
#b_ls = NP.linalg.lstsq(A, ln_y)[0]
# total least-squares solution
X = NP.empty((len(x), 3))
X[:, :2] = A
X[:, 2] = ln_y
U, S, V = NP.linalg.svd(X, 1)
b_tls = (V[-1, :] / -V[-1, -1])[:2]
alpha = math.exp(b_tls[0])
beta = b_tls[1]
return alpha, beta
评论列表
文章目录