【问题标题】:Solve A linear equation system b=0 Rstudio求解一个线性方程组 b=0 Rstudio
【发布时间】:2018-11-16 12:23:14
【问题描述】:

我会像这样求解一个线性方程组:

x_1*3+x_2*4+x_3*5+x_4*6+x_6*2=0
x_1*21+x_2*23+x_3*45+x_4*37*+x_6*0=0
x_1*340+x_2*24+x_3*25+x_4*31+x_6*0=0
x_1*32+x_2*45+x_3*5+x_4*6+x_7*2=0
x_1*9+x_2*11+x_3*13+x_4*49+x_7*0=0
x_1*5+x_2*88+x_3*100+x_4*102+X_7*2=0



     [x_1][x_2][x_3] [x_4]  [,5]
[1,]   3    4     5     6     2
[2,]  21   23    45    37     0
[3,]  340  24    25    31     0
[4,]  32   45     5     6     2
[5,]    9  11    13    49     0
[6,]   5   88   100   102     2

我用MASS::null(t(M) 求解这个线性齐次方程组, 但问题是找到 x_1....x_4,但 x_5 只找到一个解决方案,但我需要不同的三个值,即 x_5,1,x_5,2 和 x_5,3。 矩阵的值是随机的,可以改变

【问题讨论】:

  • solve函数。
  • @snaut,不好,因为 Ax=0 返回微不足道的解决方案
  • 好的,抱歉,我没理解您的需要。所以你想要解决方案的整个子空间?
  • 是的,但我的系统的问题是有 x_1....x_4 未知数和 x_5,1 x_5,2 x_5,3,如果最后一个未知数(x_5)是我能做到的已经解决了系统,但是有不同的 x_5 未知我不知道如何解决它。
  • 你能解释一下你的符号吗?我不认为x_5,1 是一个合法的变量名。

标签: r equation equation-solving linear-equation


【解决方案1】:

好的,不得不重新激活我生锈的线性代数知识,您可以使用奇异值分解来做到这一点,如果 SVD 的对角线部分的所有元素都不为零,则只存在平凡的解决方案:

solution_space <- function(A){
  my_svd <- svd(A)
  if(all(my_svd$d != 0)){
    return(rep(0, ncol(A)))
  } else {
    return(my_svd$u[,my_svd$d == 0, drop=F])
  }
}

A %*% solution_space(A)

您可以尝试使用这些矩阵的代码:

A <- matrix(c(1,1,0,1,1,0,0,0,1), 3, 3)
A <- matrix(c(1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1), 4, 4)
A <- matrix(c(1,1,0,1,1,0,0,0,0), 3, 3)

【讨论】:

    【解决方案2】:

    随着更新显示您有 5 个方程和 7 个未知数,很明显存在一个多维曲面的解。
    我担心我没有代码来计算该表面,但让我自己吹响喇叭并提供ktsolve 包。对于来自 { $x_1, x_2, ...x_7$ } [ah rats no latex markdown] 的任何给定输入集,输入已知值的集合,ktsolve 将运行反向求解器(通常为 BB)寻找未知数。
    因此,如果您可以为您的问题提供 {X_5, X_6, X_7} 中任意两个的选定集合,您可以找到所有其他五个值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-15
      • 2016-06-15
      • 2017-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-13
      相关资源
      最近更新 更多