<lambda>()接受1个位置参数,但给出了2个

2024-05-14 23:54:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试在这里实现相同的Sage代码:find vector center在python中,如下所示:

import numpy as np
from scipy.optimize import minimize
def norm(x):
    return x/np.linalg.norm(x)

vectors = np.array([[1,2,3],[4,5,6],[7,8,9]])
unit_vectors = [np.divide(v,norm(v)) for v in vectors]
constraints = [lambda x: np.dot(x,u)-1 for u in unit_vectors]
target = lambda x: norm(x)
res = minimize(target,[3,3,3],constraints)

但我总是遇到同样的问题:

^{pr2}$

我不是数学家,我只想写一个能找到多维向量中心的代码。我试了很多方法来解决这个问题,但都没有奏效。

谢谢。


Tags: lambda代码inimportnormtargetfornp
1条回答
网友
1楼 · 发布于 2024-05-14 23:54:06

您所指示的答案的算法不是用python编写的,因此显然可能会失败,考虑到{a1}我实现了以下解决方案:

import numpy as np
from scipy.optimize import minimize


x0 = 10, 10, 10

vectors = [
    np.array([1, 2, 3]),
    np.array([1, 0, 2]),
    np.array([3, 2, 4]),
    np.array([5, 2, -1]),
    np.array([1, 1, -1]),
]

unit_vectors = [vector / np.linalg.norm(vector) for vector in vectors]
constraints = [
    {"type": "ineq", "fun": lambda x, u=u: (np.dot(x, u) - 1)} for u in unit_vectors
]

target = lambda x: np.linalg.norm(x)
res = minimize(fun=target, x0=x0, constraints=constraints)
print(res.x)

输出:

^{pr2}$

相关问题 更多 >

    热门问题