On Jun 30, 3:28 am, Peter Otten <__pete...@web.de> wrote: > Thomas wrote: > > Trying to find slope of function using numpy. > > Getting close, but results are a bit off. Hope someone out here can > > help. > > You don't make it easy to understand your post. In the future please try to > rely more on plain english than on lots of numbers and code that doesn't > run. > > > > > > > import numpy as np > > > def deriv(y): > > x = list(range(len(y))) > > x.reverse() # Change from [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] > > x = np.array(x) # to [10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0] > > y = np.array(y) # x.reverse() is used to put point 0 at end of > > list. > > z = np.polyfit(x, y, 2) > > print np.poly1d(z) > > # Returns: > > # 2 > > # 3.142 x - 18.85 x + 35.13 > > # 2 > > # Should be closer to 3.142 x - 6.283 + > > 10 ???????????????????? > > To add one more question mark: how did you find that alternative? > > Anyway, we can put both polynomials to a test: > > >>> import numpy as np > >>> y = np.array([160.796416, 119.95572, 85.398208, 57.12388, > > 35.132736,19.424776, 10.0, 6.858408, 10.0, 19.424776, 35.132736])>>> x = > np.arange(len(y), dtype=float)[::-1] > >>> p1 = np.poly1d(np.polyfit(x, y, 2)) > >>> print p1 > > 2 > 3.142 x - 18.85 x + 35.13>>> p2 = np.poly1d([3.142, -6.283, 10.0]) > >>> print p2 > > 2 > 3.142 x - 6.283 x + 10 > > Now calculate the sum of the squares: > > >>> np.sum((p1(x)-y)**2) > > 5.0683524299544787e-26>>> np.sum((p2(x)-y)**2) > > 33028.342907811333 > > Conclusion: numpy's result is much better than what you suggest. > > Peter
As usual, thanks to all for putting me on the right track. Kind regards. -- http://mail.python.org/mailman/listinfo/python-list