问题描述
我正在尝试通过‖Ax−b‖
函数最小化scipy.optimize.fmin
。我们使用的数据是:
A = np.row_stack([[1,1,2],[1,2,1],[2,1]])
B = np.row_stack([[1],[-1],[1],[-1]])
x由x=(AtA)^(−1)Atb
找到,下面是我完成此任务的代码。
def find_x(A,B):
At = np.transpose(A) # Transpose A
AtA = np.matmul(At,A) # Multiply A with At
return np.matmul(np.matmul(np.linalg.inv(AtA),At),B)
作业表明,我应该将此结果与scipy.optimize.fmin()
的结果进行比较,从我所读的内容中,我需要fmin
要解决的对象/函数。但是我真的不知道如何在不包含x的情况下为该函数编写代码,x是我要通过优化找到的向量。
我尝试做定义这样的函数的基本操作:
def f(x):
k = np.subtract(np.matmul(A,x),B)
return np.linalg.norm(k)
然后运行它:
def fmin(x0):
return scipy.optimize.fmin(f(x),x0)
其中x0是一些初始猜测(形状与find_x的结果相同),但我仅收到一条错误消息“'numpy.float64'对象不可调用”
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)