我试图使用Lest Square Optimization函数求解一组线性方程。因为我必须使用解决方案向量x进行进一步的计算,我想只返回x而不是其余的。 我'刚开始使用Python,所以我不知道,我怎么能输入代码,我只获得x而不是整个返回。
我已经尝试了以下代码:
y= spo.least_squares(test_function, x0) [0]
但这对我没用。
你能帮我吗?
答案 0 :(得分:0)
scipy.optimize.least_squares
州的文件:
返回:
OptimizeResult
并定义了以下字段:x :ndarray,shape(n,)
找到解决方案。
...
这意味着您需要按名称访问结果字段。要仅获得x
,这应该有效:
y = spo.least_squares(test_function, x0).x
但是,我不想鼓励这种用法。如果由于某种原因优化失败,您将永远不会知道。因此,除非你绝对确定它不会失败,否则你不关心它是否失败不要使用这种模式。
最好编写一个处理错误处理的包装器,并在成功时转发x
:
def my_lsq(*args, **kwargs):
result = spo.least_squares(*args, **kwargs)
if result.success:
return result.x
else:
print(result)
raise RuntimeError(result.message)
可以像y = my_lsq(test_function, x0)
一样使用。