用矩阵参数解线性系统


10

我们都熟悉解决标准线性系统的多种计算方法

Ax=b.
但是,我很好奇是否有任何“标准”计算方法可以解决以下形式的更一般的(有限维)线性系统

A m 1 × n 1 B m 2 × n 2 L m 1 × n 1 m 2 × n 2

LA=B,
其中,是一个矩阵,是一个矩阵,而是将矩阵矩阵的线性算子,这不涉及向量化矩阵,即将所有内容转换为标准形式。 Am1×n1Bm2×n2Lm1×n1m2×n2Ax=b

我问的原因是我需要为解以下方程式:u

(RR+λI)u=f
,其中是2d Radon变换,其伴随元素,和均为2d数组(图像)。可以对这个方程进行矢量化处理,但这很痛苦,尤其是当我们使用3D时。R * u fRRuf

更一般而言,阵列呢?例如,求解,其中和是3D数组(在某些时候,我也需要使用Radon变换进行此操作)。L A = B A BnDLA=BAB

谢谢,如果您有需要,可以随时将我运送到另一个StackExchange。


1
您也许可以构建有效的多级预处理器,然后使用共轭梯度。我有一个类似的问题,其中这是非常有效且非常可并行化的。如果您需要直接方法,请考虑将本文的Lyapunov方程简化为舒尔
Nick Alger

太好了,感谢裁判!我只是让CG有效地工作,所以我很高兴。
icurays13年

Answers:


9

是的,您做对了,升级到3-D时确实可以正常工作。实际上,最简单的部分是内积-只需对等效的展开的向量执行标准点积。由于您仍然可能会连续存储数据,因此可以就地执行此操作。这甚至适用于复数向量空间-只需将复数值视为实数对即可。这是因为对于CG,您需要真正的内积。ÿX回复 Ý ħ X[RñÿX回覆ÿHX

使用通用线性运算符实现CG(或类似的迭代方法)时,必须注意的一件事是正确实现线性运算符的伴随。也就是说,人们经常正确地理解,但是实现犯错误。z = F y ÿ=FXž=Fÿ

我建议实施一个利用以下身份的简单测试:对于任何符合和, 因此,您要做的是生成和随机值,分别通过正向和伴随运算运行它们,然后计算上面的两个内积。确保它们在合理的精度内匹配,并重复几次。ÿ Ý ˚F X = ˚F *Ý X X ÿXÿ

ÿFX=FÿX
Xÿ

编辑:如果您的线性算子应该对称,该怎么办?好吧,您也确实需要验证对称性。因此,使用相同的测试,只是注意 ---对和应用相同的操作。当然,OP具有不对称运算符和对称运算符来处理... x yF=FXÿ


谢谢@ChristianClason!我从经验中知道伴随计算中令人沮丧的错误。:)为此,我们在软件包TFOCS中实现了一个linop_test.m例程。该软件包还支持向量空间中的矩阵,数组和笛卡尔积。
迈克尔·格兰特

3

事实证明,由于我的系统是对称且为正定的(因为我的线性算子写为),因此可以采用共轭梯度来迭代求解此类方程。唯一的修改是在计算内部乘积时进行的-即CG中的典型内部乘积计算看起来像或。在修改后的版本中,我们使用Frobenius内积,可以通过将Hadamard(逐点)积的项相加来计算。即ř Ť ķ ř ķ p Ť ķp ķRR+λIrkTrkpkTApk

A,B=i,jAijBij

我怀疑当我升级到3D阵列时,这种情况是否会通过,尽管我还没有看到在3D阵列上定义的Frobenius内部乘积(我会假设我可以再次对点积进行求和)。

如果有人知道的话,我仍然会对更通用的方法感兴趣!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.