【发布时间】:2014-02-25 19:45:16
【问题描述】:
给定矩阵a = [[1,2], [3,1]] 我试图最小化函数平方范数
a*x 其中 x 应该是一个 (2,2) 数组 ---这只是一个玩具示例---
通过使用下面的代码。但是,我从控制台获得以下内容
错误信息:
" return np.linalg.norm(np.dot(a, x))**2
ValueError: matrices are not aligned "
我将非常感谢您的解释。谢谢
import numpy as np
from scipy.optimize import minimize
a = np.array([[1, 2],[3, 1]])
def func_obj(x):
return np.linalg.norm(np.dot(a, x))**2
def func_deriv(x):
""" Derivative of objective function """
result = np.zeros([2, 2])
for i in range(2):
for j in range(2):
for k in range(2):
result[i,j] = result[i, j] + 2*(np.dot(a[k,:],x[:,j]))*a[k,i]
return result
res = minimize(func_obj, [[1, -1],[-1,1]], jac = func_deriv,
method = 'SLSQP', options = {'disp':True})
print (res.x)
【问题讨论】:
标签: arrays optimization numpy matrix