首页 > 解决方案 > 如何在 Julia 中找到线性矩阵方程的最小二乘解?

问题描述

我想知道numpy.linalg.lstsq()Julia 中是否有替代功能。该函数返回线性矩阵方程的最小二乘解。从 NumPy 堆栈访问元素的正确语法?

蟒蛇示例:

import numpy as np
A = np.vstack([x, np.ones(len(x))]).T
m, c = np.linalg.lstsq(A, y, rcond=None)[0]
m, c
(1.0 -0.95) # may vary

输出图表:

在此处输入图像描述

Python 参考:https ://numpy.org/doc/stable/reference/generated/numpy.linalg.lstsq.html

标签: numpyjulialeast-squares

解决方案


在这种情况下,您可以\从 Julia Base 中使用:

julia> A = [rand(10) ones(10)]
10×2 Matrix{Float64}:
 0.637746  1.0
 0.296172  1.0
 0.795938  1.0
 0.611058  1.0
 0.737017  1.0
 0.992014  1.0
 0.914031  1.0
 0.522682  1.0
 0.3607    1.0
 0.934141  1.0

julia> y = A * [1, -1] + rand(10) ./ 10
10-element Vector{Float64}:
 -0.34049611405598046
 -0.6368145973747783
 -0.10597203750574954
 -0.2950574213524233
 -0.19571807260629853
  0.020902316863572645
 -0.07310077005612584
 -0.40758393396440784
 -0.6137424837773662
 -0.05149257027230776

julia> A \ y
2-element Vector{Float64}:
  0.9582937347300398
 -0.9216908912065571

推荐阅读