import json
import numpy as np
import scipy as sp
import scipy.optimize as opt
data = """0.4 30 0.005109202
0.4 37 0.007
0.4 45 0.014261093
0.5 30 0.007155778
0.5 37 0.009
0.5 45 0.018
0.6 30 0.008716752
0.6 37 0.010710971
0.6 45 0.020222402scipy.optimize
""" .splitlines ( )
data = np.array ( [ list ( map ( float , line.split ( ) ) ) for line in data] )
Y = data[ 1 ] +272
X = data[ 0 ]
Z = data[ -1 ]
xy = np.vstack ( [ X, Y] )
fun = lambda xy, w1, w2, w3: w1*np.exp ( X*w2-w3/Y)
popt = opt.curve_fit ( fun, xy, Z, p0= [ 0.1 , .2 , .3 ] )
print ( "GOT:%s" %popt)
print ( "Expected: [6926617.247,1.848807397,6578.503923]" )
aW1wb3J0IGpzb24KCmltcG9ydCBudW1weSBhcyBucAppbXBvcnQgc2NpcHkgYXMgc3AKCmltcG9ydCBzY2lweS5vcHRpbWl6ZSBhcyBvcHQKCgpkYXRhID0gIiIiMC40ICAzMCAwLjAwNTEwOTIwMgowLjQgICAgMzcgMC4wMDcKMC40ICAgIDQ1IDAuMDE0MjYxMDkzCjAuNSAgICAzMCAwLjAwNzE1NTc3OAowLjUgICAgMzcgMC4wMDkKMC41ICAgIDQ1IDAuMDE4CjAuNiAgICAzMCAwLjAwODcxNjc1MgowLjYgICAgMzcgMC4wMTA3MTA5NzEKMC42ICAgIDQ1IDAuMDIwMjIyNDAyc2NpcHkub3B0aW1pemUKIiIiLnNwbGl0bGluZXMoKQpkYXRhID0gbnAuYXJyYXkoW2xpc3QobWFwKGZsb2F0LGxpbmUuc3BsaXQoKSkpIGZvciBsaW5lIGluIGRhdGFdKQoKWSA9IGRhdGFbMV0rMjcyClggPSBkYXRhWzBdClogPSBkYXRhWy0xXQoKeHkgPSBucC52c3RhY2soW1gsWV0pCmZ1biA9IGxhbWJkYSB4eSx3MSx3Mix3MzogdzEqbnAuZXhwKFgqdzItdzMvWSkKcG9wdCA9IG9wdC5jdXJ2ZV9maXQoZnVuLHh5LFoscDA9WzAuMSwuMiwuM10pCnByaW50ICgiR09UOiVzIiVwb3B0KQpwcmludCAoIkV4cGVjdGVkOiBbNjkyNjYxNy4yNDcsMS44NDg4MDczOTcsNjU3OC41MDM5MjNdIik=