【问题标题】:Gaussian elimination for lower triangular matrix下三角矩阵的高斯消元法
【发布时间】:2016-12-19 23:37:30
【问题描述】:

我在下三角矩阵的高斯消元方面遇到了麻烦,我无法想象循环在这里应该如何工作。我试图向后运行循环,但没有帮助。目前我得到的只是上三角矩阵的高斯消元法。

For[k = 1, k <= size - 1, k++,
     For[i = k + 1, i <= size, i++,
      If[tab[[k]][[k]] != 0,
       help = tab[[i]][[k]]/tab[[k]][[k]];
       For[j = k, j <= size, j++,
        tab[[i]][[j]] = tab[[i]][[j]] - help*tab[[k]][[j]];
        identity[[i]][[j]] = identity[[i]][[j]] - help*tab[[k]][[j]]
        ]
       ]
      ]
     ]

有人可以帮帮我吗?

@编辑

我做了这样的循环

For[k = size, k > 1, k--,
 For[i = k - 1, i >= 1, i--,

而且它似乎有效,但现在我遇到了一个问题,因为这两个循环没有给出可逆矩阵。

示例矩阵:

[ 3 4 2 ]
[ 5 5 5 ]
[ 1 5 3 ]

上对角线的输出

[3   4   2  ]
[0 -5/3 5/3 ]
[0   0   6  ] 

身份矩阵的输出

  [1    0      0  ]
  [-5 -17/3 -10/3 ]  
  [-1   -5    -4  ]

现在,当我为下对角线运行循环时,它的输出不正确。它不分割主对角线

【问题讨论】:

  • 你见过RowReduce。您可能还想查看链接到许多其他线性代数指南的 Matrices and Linear Algebra 指南。
  • 请注意,mathematica 中的 For 循环与 C 有点不同。在 C/C++ 中,索引的增量是在循环操作之后执行的,而在您编写的代码中,在任何内部 -循环操作索引递增。
  • 显示一些示例小矩阵和预期结果。不清楚您是否有编码问题或线性代数问题(上三角矩阵上的高斯消元不起作用)
  • @agentp,完成。但我想,如果我对上三角矩阵和下三角矩阵进行高斯消元,它会产生一个可逆矩阵,不是吗?
  • 对不起,我以为你的意思是 input 是上三角形。不应该是identity[[i]][[j]] = identity[[i]][[j]] - help*identity[[k]][[j]] 吗?

标签: wolfram-mathematica gaussian


【解决方案1】:

好吧,实际上我发现了问题,但我不知道如何解决 - 上三角矩阵循环工作正常,但问题在于下三角,它不会在对角线上划分元素.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-16
    • 1970-01-01
    • 2011-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多