【问题标题】:How to invert a matrix [closed]如何反转矩阵[关闭]
【发布时间】:2014-01-22 17:43:16
【问题描述】:

我需要使用消除的高斯方法在 C++ 中求解具有 n 个未知变量的 n 线性方程组。任何提示如何实现这一目标?我可能会使用 rand();对于n的数量,因为不可用,因为C++11我不能用。

【问题讨论】:

  • 有一个很酷的新工具,叫做“google”。试一试。说真的,SO 不是这类问题的正确论坛。我在 2 秒内找到了this link
  • 高斯消元技术已为人所知几个世纪,因此它确实不需要“提示”。看看吧。您在任务的哪个特定部分遇到问题?
  • 谷歌“高斯消除”。第一个链接是维基百科的文章,它描述了这个过程并提供了一个例子。

标签: c++ math linear-algebra equation-solving linear-equation


【解决方案1】:

求解线性系统

AX=B

你需要对矩阵 A 求逆,得到 A^(-1) 并乘以 A^(-1) * B 得到 X。 这是使用 Gauss - Jordan 消元算法反转非奇异矩阵的示例代码(复杂度为 O(n^3)):

matrix inversion using Gauss-Jordan elimination

【讨论】:

  • 感谢您的示例。原谅我的无知,但既然我现在明白了,你能告诉我我还应该实施什么来解决我的问题吗?
  • 你知道你的矩阵A,对吧?那么你也知道 A^(-1)。所以现在你只需要把它乘以 B,这就是你的兴趣点
  • 我的矩阵A是系统中变量之前的变量吧?矩阵 B 是那些方程的“答案”的变量?
  • 是的,即如果:1x+2y=3, 4x+5y=6,那么A第1行是1 2,第2行4 5,B第1行是3,第2行6
  • 那么,要找到变量的值,我必须将矩阵 A 反转,然后将其乘以 B,这就是我所要做的吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-12
  • 1970-01-01
相关资源
最近更新 更多