As they mentioned (and scolded you), why are you trying to use that method?
If a non-linear regression is enough you can see the code below, the option curve_fit
did not work. So I used minimize
in this case, the initial guess is obtained from a linear regression of $y$ and $(1/x)$.
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import minimize
def func(coef, x, y):
a = coef[0]
b = coef[1]
n = coef[2]
return np.linalg.norm(y - a/x**n - b)
x = np.array([3.53, 4.93, 5.53, 6.21, 7.37, 9.98, 16.56])
y = np.array([0, 50, 60, 70, 80, 90, 100])
# The initial values are obtained from a linear regression between
# y and (1/x)
res = minimize(func, [-446, 136, 1], args=(x, y))
a, b, n = res.x
print a, b, n
x_vec = np.linspace(3.5, 17)
y_vec = a/x_vec**n + b
plt.plot(x, y, 'ko')
plt.plot(x_vec, y_vec)
plt.xlabel("x")
plt.xlabel("y")
plt.savefig("regression.png", dpi=300)
The output is
-1181.72495119 105.101516419 1.91866624841
And the image