【问题标题】:Solving n linear equation求解 n 个线性方程
【发布时间】:2025-12-20 20:30:11
【问题描述】:

我正在尝试用 n 个变量求解 n 个线性方程。我使用了克莱默规则,但如果行列式等于零,它就会失败。如何解决这个问题?

我正在使用 c 语言。

我的线性方程也是这样的形式:

对于n = 3

- x + y + z = a
  x - y + z = b
  x + y - z = c

对于n = 2

- x + y = a
  x - y = b

我无法继续。

【问题讨论】:

    标签: c algorithm math linear-equation


    【解决方案1】:

    使用 cramer 求解时,如果行列式为零,则有两种情况:

    • 至少一个变量的行列式不为零:没有解

    • 所有变量的行列式都为零:那么您有无限数量的解决方案。

      在最后一种情况下,您可以根据其中一个变量找到答案。

    【讨论】:

      【解决方案2】:

      如果行列式等于 0,则系统是退化的,这意味着要么没有解,要么有无穷多个解。考虑你的第二个例子:

      -x+y=a
      x-y=b
      

      我们可以把它改写成

      x-y=-a
      x-y=b
      

      所以要么b=-a,在这种情况下任何一对(x,x-b) 都是一个解决方案,或者b!=-a 在这种情况下没有解决方案。

      【讨论】:

        【解决方案3】:

        Ax = b 中,当A 的行列式为零时,没有唯一解。特别是,如果b 为 0,则有无穷多个解。也有可能没有解决方案。

        您的选择是:

        • 将此标记为错误
        • 返回x 以最小化Axb 之间的差异

        【讨论】:

        • b!=0 并不能保证不存在任何解决方案。例如,在 OP 的第二个示例中,提供了无限的解决方案 a=-b.
        • 真;我没想到。