擅长:python、mysql、java
<pre><code>import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
from scipy.interpolate import interp1d
points = np.array([(3, 0), (7, 55), (14, 88)])
x = points[:,0]
y = points[:,1]
def func(x, p1,p2):
return p1*np.log(x)+p2
popt, pcov = curve_fit(func, x, y,p0=(1.0,10.2))
print popt
p1 = popt[0]
p2 = popt[1]
curvex=np.linspace(15,85,1000)
fit = func(curvex, p1, p2)
plt.plot(x, y, 'yo', label='data')
f = interp1d(fit, curvex, kind = 'cubic')
print f(100)
plt.plot(curvex,fit,'r', linewidth=1)
plt.plot(x,y,'x',label = 'Xsaved')
plt.show()
</code></pre>
<p>这回答了我的问题。函数在x=16.54处穿过y=100。你知道吗</p>