fork download
  1. import numpy as np
  2. from scipy.optimize import minimize
  3.  
  4. a = np.array([100, 200, 300])
  5. b = np.array([[1, 0, 0],
  6. [1, 0, 1],
  7. [0, 1, 1],
  8. [1, 1, 1]])
  9. c = np.array([150, 300, 500, 650])
  10.  
  11. def pseudoabs(x):
  12. return (x**2+0.1)**0.5
  13.  
  14. def f(x, b, c):
  15. return pseudoabs(c - np.sum(x*b, axis=1)).sum()
  16.  
  17. x0 = a
  18. print(minimize(f, x0, args=(b,c)))
Success #stdin #stdout 0.2s 200768KB
stdin
Standard input is empty
stdout
      fun: 1.2649110640683856
 hess_inv: array([[ 0.21341862,  0.10575258, -0.21256769],
       [ 0.10575258,  0.52741098, -0.4206939 ],
       [-0.21256769, -0.4206939 ,  0.53252252]])
      jac: array([  2.93552876e-06,   3.20374966e-06,   4.47034836e-06])
  message: 'Optimization terminated successfully.'
     nfev: 275
      nit: 23
     njev: 55
   status: 0
  success: True
        x: array([ 150.00000001,  350.00000011,  150.00000039])