Find slope of function given empirical data.

Thomas thom1948 at gmail.com
Tue Jun 29 14:05:04 EDT 2010


Hello all.

Trying to find slope of function using numpy.
Getting close, but results are a bit off. Hope someone out here can
help.

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   ????????????????????
    return [z[0] * 2, z[1]]

if __name__=='__main__':
    # range(-6,5,1)
    # y = 3.141592 * x ** 2 - 6.283184 * x + 10 for x in range(-6, 5,
1)
    # 160.796416, 119.95572, 85.398208, 57.12388, 35.132736,
19.424776, 10.0, 6.858408, 10.0, 19.424776, 35.132736
    #
    # y' = 6.283184 * x - 6.283184  for x in range(-6, 5, 1)
    # -43.982288, -37.699104, -31.41592, -25.132736, -18.849552,
-12.566368, -6.283184, 0.0, 6.283184, 12.566368, 18.849552
    #
    z = deriv([160.796416, 119.95572, 85.398208, 57.12388, 35.132736,
19.424776, 10.0, 6.858408, 10.0, 19.424776, 35.132736])
    for x in range(-6,5,1):
        print str(w(x)) + ',' ,
    # Returns:
    # -56.548656, -50.265472, -43.982288, -37.699104, -31.41592,
-25.132736, -18.849552, -12.566368, -6.283184, -1.06581410364e-14,
6.283184
    # Should be:
    # -43.982288, -37.699104, -31.41592, -25.132736, -18.849552,
-12.566368, -6.283184, 0.0, 6.283184, 12.566368, 18.849552
    # Note that the range is offset by 2 positions







More information about the Python-list mailing list