最小化“ Ax-b”如何编写与scipy.optimize.fmin结合使用的函数

问题描述

我正在尝试通过‖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 (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...