Advertisement
Guest User

Untitled

a guest
Aug 28th, 2016
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.71 KB | None | 0 0
  1. import numpy as np
  2. from scipy.optimize import curve_fit
  3.  
  4. # This data is from http://www.jcmit.com/memoryprice.htm
  5. x = np.array([411041792, 67947725, 5242880, 2642412, 734003, 399360, 314573, 421888, 180224, 67584, 49920, 40704, 48960, 23040, 32000, 36800, 28000, 29440, 19200, 24000, 16000, 15200, 10528, 6704, 6480, 8800, 4479, 3520, 4464, 1980, 2396, 1980, 1379, 1331, 880, 720, 550, 420, 350, 300, 300, 300, 300, 300, 300, 300, 190, 190, 190, 190, 190, 190, 190, 176, 176, 157, 154, 154, 154, 154, 154, 163, 133, 163, 163, 163, 182, 199, 199, 199, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 344, 197, 188, 188, 128, 117, 113, 106, 98.3, 98.3, 89.5, 82.8, 81.1, 71.5, 59.0, 51.0, 45.5, 44.5, 44.5, 45.0, 45.0, 45.0, 43.8, 43.8, 41.3, 46.3, 45.0, 39.8, 39.8, 36.3, 36.3, 36.3, 34.8, 30.0, 32.5, 33.5, 31.0, 27.5, 26.3, 26.3, 26.3, 33.1, 27.5, 27.5, 27.5, 27.5, 30.0, 30.0, 30.0, 30.0, 36.0, 39.8, 35.8, 35.8, 35.8, 36.0, 37.3, 37.3, 37.3, 38.5, 37.0, 34.0, 33.5, 32.3, 32.3, 32.3, 32.0, 32.0, 31.2, 31.2, 31.1, 31.2, 30.6, 33.1, 33.1, 30.9, 30.9, 29.9, 28.8, 26.1, 24.7, 17.2, 14.9, 11.3, 9.06, 8.44, 8.00, 5.25, 5.25, 4.63, 3.63, 3.00, 3.00, 3.00, 3.69, 4.00, 4.13, 3.63, 3.41, 3.25, 2.16, 2.16, 0.91, 0.97, 1.22, 1.19, 0.97, 1.03, 0.97, 1.16, 0.84, 0.84, 1.44, 0.84, 1.25, 1.25, 0.86, 0.78, 0.87, 1.04, 1.34, 2.35, 1.56, 1.48, 1.08, 0.84, 0.70, 0.90, 0.77, 0.84, 1.07, 1.12, 1.12, 0.90, 0.75, 0.464, 0.464, 0.383, 0.387, 0.305, 0.352, 0.270, 0.191, 0.191, 0.169, 0.148, 0.134, 0.207, 0.193, 0.193, 0.330, 0.193, 0.193, 0.176, 0.076, 0.126, 0.115, 0.133, 0.129, 0.143, 0.148, 0.160, 0.166, 0.174, 0.148, 0.146, 0.156, 0.203, 0.176, 0.185, 0.149, 0.116, 0.185, 0.112, 0.073, 0.082, 0.073, 0.088, 0.098, 0.092, 0.082, 0.078, 0.066, 0.0464, 0.0386, 0.0351, 0.0322, 0.0244, 0.0244, 0.0232, 0.0220, 0.0220, 0.0207, 0.0176, 0.0146, 0.0110, 0.0098, 0.0098, 0.0107, 0.0105, 0.0115, 0.0110, 0.0127, 0.0183, 0.0205, 0.0190, 0.0202, 0.0195, 0.0242, 0.0210, 0.0220, 0.0171, 0.0146, 0.0122, 0.0100, 0.0103, 0.0100, 0.0085, 0.0054, 0.0051, 0.0049, 0.0049, 0.0050, 0.0049, 0.0048, 0.0040, 0.0037, 0.0043, 0.0054, 0.0067, 0.0061, 0.0073, 0.0065, 0.0082, 0.0085, 0.0079, 0.0095, 0.0079, 0.0073, 0.0079, 0.0085, 0.0085, 0.0085, 0.0078, 0.0073, 0.0061, 0.0056, 0.0049, 0.0045, 0.0043, 0.0042, 0.0038, 0.0037, 0.0036, 0.0031, 0.0030, 0.0027, 0.0031, 0.0035])
  6. y = np.array([1957, 1959, 1960.00, 1965.00, 1970.00, 1973.00, 1974.00, 1975.00, 1975.08, 1975.25, 1975.75, 1976.00, 1976.17, 1976.42, 1976.58, 1977.08, 1978.17, 1978.25, 1978.33, 1978.50, 1978.58, 1978.75, 1979.00, 1979.75, 1980.00, 1981.00, 1981.58, 1982.00, 1982.17, 1982.67, 1983.00, 1983.67, 1984.00, 1984.58, 1985.00, 1985.33, 1985.42, 1985.50, 1985.58, 1985.67, 1985.83, 1985.92, 1986.00, 1986.08, 1986.17, 1986.25, 1986.33, 1986.42, 1986.50, 1986.58, 1986.67, 1986.75, 1986.92, 1987.00, 1987.08, 1987.17, 1987.25, 1987.33, 1987.42, 1987.50, 1987.58, 1987.67, 1987.75, 1987.83, 1987.92, 1988.00, 1988.08, 1988.17, 1988.33, 1988.42, 1988.50, 1988.58, 1988.67, 1988.75, 1988.83, 1989.92, 1989.00, 1989.08, 1989.17, 1989.25, 1989.42, 1989.50, 1989.58, 1989.67, 1989.75, 1989.83, 1989.92, 1990.00, 1990.17, 1990.33, 1990.42, 1990.50, 1990.58, 1990.67, 1990.75, 1990.83, 1990.92, 1991.00, 1991.08, 1991.17, 1991.25, 1991.33, 1991.42, 1991.50, 1991.58, 1991.67, 1991.75, 1991.83, 1991.92, 1992.00, 1992.08, 1992.17, 1992.25, 1992.33, 1992.42, 1992.50, 1992.58, 1992.67, 1992.75, 1992.83, 1992.92, 1993.00, 1993.08, 1993.17, 1993.25, 1993.33, 1993.42, 1993.50, 1993.58, 1993.67, 1993.75, 1993.83, 1993.92, 1994.00, 1994.08, 1994.17, 1994.25, 1994.33, 1994.42, 1994.50, 1994.58, 1994.67, 1994.75, 1994.83, 1994.92, 1995.00, 1995.08, 1995.17, 1995.25, 1995.33, 1995.42, 1995.50, 1995.58, 1995.67, 1995.75, 1995.83, 1995.92, 1996.00, 1996.08, 1996.17, 1996.25, 1996.33, 1996.42, 1996.50, 1996.58, 1996.67, 1996.75, 1996.83, 1996.92, 1997.00, 1997.08, 1997.17, 1997.25, 1997.33, 1997.42, 1997.50, 1997.58, 1997.67, 1997.75, 1997.83, 1997.92, 1998.00, 1998.08, 1998.17, 1998.25, 1998.33, 1998.42, 1998.58, 1998.67, 1998.75, 1998.83, 1998.92, 1999.08, 1999.13, 1999.17, 1999.25, 1999.33, 1999.50, 1999.67, 1999.75, 1999.83, 1999.92, 2000.00, 2000.08, 2000.17, 2000.25, 2000.33, 2000.42, 2000.50, 2000.58, 2000.67, 2000.75, 2000.83, 2000.92, 2001.00, 2001.08, 2001.17, 2001.25, 2001.33, 2001.42, 2001.50, 2001.50, 2001.58, 2001.67, 2001.75, 2001.77, 2002.08, 2002.08, 2002.25, 2002.33, 2002.42, 2002.58, 2002.75, 2003.17, 2003.25, 2003.33, 2003.42, 2003.50, 2003.58, 2003.67, 2003.75, 2003.83, 2003.99, 2004.00, 2004.08, 2004.17, 2004.33, 2004.42, 2004.50, 2005.25, 2005.42, 2005.83, 2005.92, 2006.17, 2006.33, 2006.50, 2006.67, 2006.75, 2006.83, 2006.99, 2007.00, 2007.08, 2007.17, 2007.33, 2007.50, 2007.67, 2007.75, 2007.83, 2007.92, 2008.00, 2008.08, 2008.33, 2008.50, 2008.58, 2008.67, 2008.83, 2008.92, 2009.00, 2009.08, 2009.25, 2009.42, 2009.50, 2009.58, 2009.75, 2009.92, 2010.00, 2010.08, 2010.17, 2010.33, 2010.50, 2010.58, 2010.75, 2010.83, 2010.92, 2011.00, 2011.08, 2011.33, 2011.42, 2011.67, 2011.75, 2012.00, 2012.08, 2012.25, 2012.33, 2012.58, 2012.67, 2012.83, 2013.00, 2013.08, 2013.33, 2013.42, 2013.58, 2013.67, 2013.75, 2013.83, 2013.92, 2014.08, 2014.17, 2014.25, 2014.42, 2014.58, 2014.67, 2014.83, 2015.00, 2015.08, 2015.25, 2015.33, 2015.50, 2015.58, 2015.67, 2015.75, 2015.83, 2015.92, 2016.08, 2016.25, 2016.33, 2016.42, 2016.50, 2016.58])
  7.  
  8. def func(x, a, b, c):
  9. return a * np.log(b*x) + c
  10.  
  11. popt, pcov = curve_fit(func, x, y, p0=(1, 0.001, 1))
  12. xx = np.linspace(0, 4.5*10**8, 10000)
  13.  
  14. yy = func(xx, *popt)
  15. plot(x, y, 'ko')
  16. plot(xx, yy)
  17.  
  18. mb_per_byte = 1.0 / 10**6
  19. input_bytes = 2**64
  20. input_dollars = 100.0
  21.  
  22. # Input units are dollars per megabyte.
  23. inp = input_dollars / (input_bytes * mb_per_byte)
  24. print(func(inp, *popt))
  25. # This returns the year 2060
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement