经过查阅资料,认为使用leastsq函数做最小二乘最符合要求,结果如下:
import numpy as np
from scipy.optimize import leastsq
def error(x, A, b):
return np.dot(A, x) - b
bT = np.random.random(10).T
xT = np.random.random(8).T
A = np.random.random(80).reshape(10, 8)
res = leastsq(error, xT, args = (A, bT))
print(xT)
print(res[0])
import math
from scipy.optimize import fmin
def f(x):
return -(math.sin(x - 2))**2 * math.e**(-x**2)
fmin(f, 0)