【问题标题】:Best way to solve a linear equation in code [duplicate]在代码中求解线性方程的最佳方法[重复]
【发布时间】:2011-05-22 00:03:19
【问题描述】:

可能重复:
Solving a linear equation

我需要在 C# 和 VB 中以编程方式求解线性方程组

以下是方程式的示例:

 12.40 = a * 56.0 + b * 27.0 + tx
-53.39 = a * 12.0 + b * 59.0 + tx
 14.94 = a * 53.0 + b * 41.0 + tx

我想获得 a、b 和 tx 的最佳近似值。

我应该使用某种矩阵类还是什么?

【问题讨论】:

标签: .net math


【解决方案1】:

Gauss-Jordan 消元法是求解此类联立线性方程组最直接、最容易理解的方法。 LU 分解在数值上更稳定一些,但您的矩阵看起来条件并不差,所以我认为您不需要额外的复杂性。

【讨论】:

  • 高斯消除是我的意思,但在凌晨 3.55 点,出于某种原因,我的脑袋说单纯形!纠正。 en.wikipedia.org/wiki/Gaussian_elimination
  • 啊是的,单纯形有一个涉及高斯消元的步骤,其他步骤用于确定哪些方程组合在可行区域内给出解,并在改进目标的方向上移动到相邻顶点功能。当然,我的优势是这里只有晚上 10 点,而且我的大脑还没有那么模糊。
【解决方案2】:

如果将系数存储在矩阵中,则可以通过计算矩阵的 LU 分解来求解。我对确切的算法不是很熟悉,但维基百科的页面应该是一个很好的起点:

http://en.wikipedia.org/wiki/System_of_linear_equations#Solving_a_linear_system
http://en.wikipedia.org/wiki/LU_decomposition

【讨论】:

    【解决方案3】:

    使用Cramer's Rule这个规则很容易求解线性方程组。

    要求解矩阵,请使用http://www.codeproject.com/KB/cs/CSML.aspx

    【讨论】:

      【解决方案4】:

      我想我们已经看到了这个问题:Solving a linear equation

      【讨论】:

      • 语言略有不同,但方法是一样的,反正我们似乎在谈论算法,所以是的,这个问题没有什么新东西。
      • 评论。重复项的识别属于 cmets。
      • 我认为这不是重复的。 C、Objective C 和 C++ 的库与 C# 完全不同。来吧,这不是你想自己做的事情。重复使用,重复使用和重复使用!
      猜你喜欢
      • 1970-01-01
      • 2013-12-09
      • 2016-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-30
      • 1970-01-01
      • 2020-04-15
      相关资源
      最近更新 更多