import numpy as np
from scipy.optimize import minimize
a = np.array([100, 200, 300])
b = np.array([[1, 0, 0],
[1, 0, 1],
[0, 1, 1],
[1, 1, 1]])
c = np.array([150, 300, 500, 650])
def pseudoabs(x):
return (x**2+0.1)**0.5
def f(x, b, c):
return pseudoabs(c - np.sum(x*b, axis=1)).sum()
x0 = a
print(minimize(f, x0, args=(b,c)))
aW1wb3J0IG51bXB5IGFzIG5wCmZyb20gc2NpcHkub3B0aW1pemUgaW1wb3J0IG1pbmltaXplCgphID0gbnAuYXJyYXkoWzEwMCwgMjAwLCAzMDBdKQpiID0gbnAuYXJyYXkoW1sxLCAwLCAwXSwKICAgICAgICAgICAgICBbMSwgMCwgMV0sCiAgICAgICAgICAgICAgWzAsIDEsIDFdLAogICAgICAgICAgICAgIFsxLCAxLCAxXV0pCmMgPSBucC5hcnJheShbMTUwLCAzMDAsIDUwMCwgNjUwXSkKCmRlZiBwc2V1ZG9hYnMoeCk6CiAgICByZXR1cm4gKHgqKjIrMC4xKSoqMC41CgpkZWYgZih4LCBiLCBjKToKICAgIHJldHVybiBwc2V1ZG9hYnMoYyAtIG5wLnN1bSh4KmIsIGF4aXM9MSkpLnN1bSgpCgp4MCA9IGEKcHJpbnQobWluaW1pemUoZiwgeDAsIGFyZ3M9KGIsYykpKQ==
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])