R 用Gauss-Seidel方法求解线性方程会得到错误的结果

R 用Gauss-Seidel方法求解线性方程会得到错误的结果,r,linear-algebra,equation-solving,R,Linear Algebra,Equation Solving,用R软件包optR求解线性方程,给出了高斯-赛德尔法的错误结果。 我试着用不同的方法解决问题,结果看起来还不错。例如,求解或使用optR,但使用高斯方法。 这里就是一个例子。还是我做错了什么 library(optR) A<-matrix(c(5,-1,2, 3, 8,-2,1, 1,4), nrow=3,ncol=3, byrow = TRUE) b<-matrix(c(12,-25,6), nrow=3,ncol=1,byrow=TRUE) Z1<-optR(A, b,m

用R软件包optR求解线性方程,给出了高斯-赛德尔法的错误结果。 我试着用不同的方法解决问题,结果看起来还不错。例如,求解或使用optR,但使用高斯方法。 这里就是一个例子。还是我做错了什么

library(optR)
A<-matrix(c(5,-1,2, 3, 8,-2,1, 1,4), nrow=3,ncol=3, byrow = TRUE)
b<-matrix(c(12,-25,6), nrow=3,ncol=1,byrow=TRUE)

Z1<-optR(A, b,method="gaussseidel", iter=500, tol=1e-7)
Z2 <-optR(A, b, method="gauss", iter=500, tol=1e-7)
Z3 <- solve(A,b)

print(Z1)
print(Z2)
print(Z3)

A %*% Z1$beta - b
A %*% Z2$beta - b
A %*% Z3 - b

提前谢谢。

所以现在就解决了。这是软件包中的一个bug。 自1.2.5 optR版本起,对其进行了求解,并给出了正确的结果

> print(Z1)
call: 
optR.default(x = A, y = b, method = "gaussseidel", iter = 500, 
    tol = 1e-07)

 Coefficients: 
          [,1]
[1,]  4.183908
[2,] -2.379310
[3,] -1.781609
> print(Z2)
call: 
optR.default(x = A, y = b, method = "gauss", iter = 500, tol = 1e-07)

 Coefficients: 
     [,1]
[1,]    1
[2,]   -3
[3,]    2
> print(Z3)
     [,1]
[1,]    1
[2,]   -3
[3,]    2
> 
> A %*% Z1$beta - b
           [,1]
[1,]   7.735632
[2,]  22.080460
[3,] -11.321839
> A %*% Z2$beta - b
              [,1]
[1,]  0.000000e+00
[2,] -3.552714e-15
[3,]  0.000000e+00
> A %*% Z3 - b
              [,1]
[1,]  0.000000e+00
[2,] -3.552714e-15
[3,]  0.000000e+00