使用矢量化求解多个线性系统
|
抱歉,如果这很明显,但我搜索了一会儿却没有找到任何东西(或错过了它)。
我正在尝试用A 4x4矩阵和B 4x1向量解形式为Ax = B的线性系统。
我知道对于单个系统,我可以使用
mldivide
来获得x:x=A\\B
。
但是,我正在尝试解决大量系统(可能> 10000),并且我不愿意使用for循环,因为在许多MATLAB问题中,我被告知它明显比矩阵公式慢。
然后我的问题是:是否有一种方法可以使用A 4x4x N和B矩阵4x N的矢量化来解决Ax = B?
PS:我不知道这是否重要,但是B向量对于所有系统都是相同的。
没有找到相关结果
已邀请:
5 个回复
埃庐
保持不变而
发生变化,则预先计算因式分解并重新使用它可能会有好处。但是对于您的问题,其中
改变而
保持不变,则除了解决N个线性系统外别无选择。 您也不必太担心循环的性能成本:MATLAB JIT编译器意味着循环在最新版本的MATLAB上通常可以同样快。
感秆暴壳
是一个变化,因此事先将各种
\分解为无益。 给定您提到的尺寸,除了循环解决方案之外,它还非常快:
经过的时间是0.168101秒。
结乳
草票
对于一个随机的例子:
如果您知道4x4矩阵是正定的,则可以在S上使用use11ѭ来提高精度。 真傻但是即使在使用JIT的情况下,matlab的for循环在2015年仍然有多慢。当k不太大时,此解决方案似乎找到了一个最佳位置,因此所有内容仍适合内存。
量华