我在执行高斯消除时遇到问题。矩阵A非常大,不能用我的内存约束存储,但是,A的元素可以描述为i和j的函数,即A(i,j)= f(i,j) )。
此外,我不需要计算得到的上三角矩阵的所有元素。
现在的问题, 如何更新高斯消元法使用f(i,j)计算得到的矩阵的特定元素而不是计算所有元素?
更新: 这是我的A矩阵:
a_{11} & a_{12} & a_{13} & a_{14} & .. & a_{1L}
q_1 & a_{22} & a_{23} & a_{23} & .. & a_{2L}
q_2 & q_1 & a_{33} & a_{34} & .. & a_{3L}
q_3 & q_2 & q_1 & a_{44} & .. & a_{3L}
q_4 & q_3 & q_2 & q_1 & .. & a_{3L}
: & : & : & : & : & :
: & : & : & : & : & :
q_L & q_{L-1} & q_{L-2} & q_{L-3} & .. & a_{LL}
答案 0 :(得分:0)
假设您要计算条目(m,n)
。 m
行,n
列。
第一:
如果m > n
条目为零,则因为它在对角线下
如果m = n
条目为1(条目在对角线上)
所以请m < n
。
我认为您只需存储m^2+m
entrys:
m
次要和第一行的n
条目,第一个条目不为零。称之为M_11,M_12,...,M_1m,M_1n
。M_i
除以M_1
m
次要信息,第n
条y
的{{1}}条目y_2 - y_1 * M_12
不为零。M_21,M_22,...M_2m,M_2n
i = 2 ... m
do M_2i = M_2i - M_1i * M_21
最后(m
行之后)条目M_mn
包含您的结果。
注意:如果必须切换两行,则必须保存行的新顺序。
关于时空:
您可以使用空间来购买一些时间,反之亦然。如果您不想保存m^2
次托管,则可能只会存储2m
次托管,但这会花费您很多时间,直至{{1}的指数时间}}
如果您对m
有更多了解,可以采用一种方法来加快算法速度或减少所需的空间。