gpt4 book ai didi

c - 没有加速结果的高斯消元法

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:46:01 26 4
gpt4 key购买 nike

你好,

我正在开发一个 C 库(对于我自己,代码:https://github.com/BattlestarSC/matrixLibrary.git)来处理矩阵函数。这主要是一种学习/实践事件。我面临的挑战之一是有效地获取矩阵的行列式。由于我目前的尝试都失败了,我想采取不同的方法。我正在阅读麻省理工学院文档中的这种方法:http://web.mit.edu/18.06/www/Spring17/Determinants.pdf这很有意义。我遇到的问题是如何达到上述目的。由于高斯消元法适用于多变量方程组,我的矩阵不是由方程构建的,因此不是系统的一部分。例如,每个方程式都没有固定结果,不符合本文的形式:https://math.oregonstate.edu/home/programs/undergrad/CalculusQuestStudyGuides/vcalc/gauss/gauss.html

从这一点来看,我不知道如何继续使用此方法。

如麻省理工学院论文中所述,从每组方程中获取枢轴点很有意义,但我应该如何设置矩阵才能使所述结果有效?

最佳答案

执行高斯消元法时,您交换行并重复从另一行中减去一行的倍数以生成上三角形式。

当您在方程组或“增广矩阵”上执行此操作时,您不会使用结果列中的任何信息。无论结果列中的数字是什么,关于交换哪些行以及用什么乘数减去哪些行的决定将完全相同。

因为没有使用“结果列”,所以可以对普通方阵进行同样的操作。由于这些操作不会改变行列式(如果您每次交换时都取反一行),您最终会得到一个上三角矩阵,其 det 与原始矩阵相同。

MIT 作者在开头附近的示例中调用函数 lu 来执行此操作。这对矩阵进行 L-U 分解,返回“U”部分中的高斯消除矩阵:https://en.wikipedia.org/wiki/LU_decomposition .

L-U 分解非常酷。这就像进行高斯消元法以一次性求解所有具有相同“矩阵部分”的系统,您同样可以这样做,因为该过程根本不需要查看结果列。

从矩阵 M 开始,您得到 LU 使得 LU = M。这意味着,如果你想解决:

Mx = y

... 其中(x 和 y 是列 vector ),您有:

LUx = y

求解 Lv=y,这很容易(只需替换),因为 L 是下三角矩阵。那么你有:

Ux = v

...这很容易解决,因为 U 是上三角形。

关于c - 没有加速结果的高斯消元法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55434303/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com