主要内容

使用分布式阵列解决线性方程组的直接方法

这个例子展示了如何解决线性方程组的形式 一个 x = b 与直接法使用分布式阵列。

分布式阵列非常适合大型的数学计算,如大型线性代数问题。以同样的方式对于数组存储在客户端内存,你可以使用mldivide解决可以使用分布式系统线性方程定义的数组,所以你不需要改变你的代码。

分布式阵列分发数据从客户端工作空间在你的本地机器上并行池或在一个集群中。每个工人将数组的一部分存储在内存中,但是也可以与其他工人来访问数组的所有部分。分布式阵列可以包含不同类型的数据包括完整的和稀疏矩阵。

解线性方程组的直接方法通常因式分解的系数矩阵 一个 计算的解决方案。mldivide选择一组之一,根据结构的直接求解方法 一个 以及是否 一个 充满或稀疏。

这个案例展示了如何解决一个简单的线性方程组的形式 斧头 = b 一个精确的、已知的解决方案 x 。定义的系统矩阵 一个 和列向量 b 。解决方案 x 也是一个列向量。在这个例子中,系统使用完整的定义和稀疏矩阵。所需的代码是相同的系统使用分布式数组或数组定义在客户端内存。

一个相关的例子,展示了如何使用迭代解决者和分布式阵列,明白了使用分布式阵列与迭代解线性方程组的方法

解决一个完整的矩阵系统

首先定义系数矩阵 一个 作为客户端内存变量,一个,然后通过这个矩阵分布式函数创建一个分布式版本相同的矩阵,ADist。当你使用分布式MATLAB函数,将自动启动集群并行池使用默认设置。

n = 1 e3;一个=兰迪(100 n, n);ADist =分布式(A);

现在,您可以定义右手向量 b 。在这个例子中, b 被定义为的行和 一个 ,从而导致一个确切的解决方案 一个 x = b 的形式 x 确切的 = ( 1 , , 1 ] T

b =和(2);bDist = (ADist, 2)之和;

总和作用于一个分布式阵列,bDist也是其数据存储在分布式和并行的工人池的记忆。最后,定义具体的解决方案与使用直接数值方法获得的解决金宝搏官方网站方案。

xEx = 1 (n, 1);xDistEx = 1 (n, 1“分布式”);

现在您已经定义了你的线性方程组,可以使用mldivide直接解决系统。在MATLAB中,您可以调用mldivide使用特殊操作符\。你不需要改变你的代码来解决分布式系统mldivide有自动支持分布式阵列。金宝app

一旦你计算的解决方案,您可以检查每个元素之间的误差得到的结果 x 和预期的值 x 确切的

x = \ b;呃= abs (xEx-x);xDist = ADist \ bDist;errDist = abs (xDistEx-xDist);图次要情节(2,1,1)semilogy(呃,“o”);标题(与全矩阵的线性方程组);ylabel (的绝对误差);包含(“x元素”);ylim ([10 e-17, e-13])次要情节(2,1,2)semilogy (errDist,“o”);标题(与分布式全矩阵的线性方程组的);ylabel (的绝对误差);包含(“x元素”);ylim ([10 e-17, e-13])

为分布式数组和数组存储在客户端,计算结果之间的绝对误差 x 确切的结果 x 确切的 很小。解决方案的精度大约是相同的两个数组类型。

意思是(err)
ans = 1.6031 e-13
意思是(errDist)
ans = 1.2426 e-13

解决一个稀疏矩阵系统

分布式阵列也可以包含稀疏数据。创建系数矩阵 一个 ,使用sprandspeye直接生成一个随机数+的稀疏矩阵稀疏的单位矩阵。添加单位矩阵有助于防止创建 一个 作为一个单数或near-singular矩阵,这两个很难因式分解。

n = 1 e3;密度= 0.2;一个= sprand (n, n,密度)+ speye (n);ADist =分布式(A);

选择正确的手向量 b 行之和 一个 产生一个精确解相同的形式作为完整的矩阵系统的解决方案。

b =和(2);bDist = (ADist, 2)之和;xEx = 1 (n, 1);xDistEx = 1 (n, 1“分布式”);

以同样的方式与完整的矩阵,您现在可以使用直接求解线性方程组mldivide并检查获得的结果及其预期值之间的误差。

x = \ b;呃= abs (xEx-x);xDist = ADist \ bDist;errDist = abs (xDistEx-xDist);图次要情节(2,1,1)semilogy(呃,“o”);标题(与客户端稀疏矩阵的线性方程组);ylabel (的绝对误差);包含(“x元素”);ylim ([10 e-17, e-13])次要情节(2,1,2)semilogy (errDist,“o”);标题(与分布的稀疏矩阵的线性方程组);ylabel (的绝对误差);包含(“x元素”);ylim ([10 e-17, e-13])

与完整的矩阵系统,解决线性方程组使用客户阵列和分布式阵列产生解决方案与类似的准确性。金宝搏官方网站

意思是(err)
ans = 1.6031 e-13
意思是(errDist)
ans = 1.2426 e-13

你和计算完成后,您可以删除你的平行的池中。的gcp函数返回当前并行池对象,这样你就可以删除当前池。

删除(gcp (“nocreate”));

提高效率的解决方案

对于某些类型的大型稀疏系数矩阵 一个 有更有效的方法比直接分解,解决您的系统。在这些情况下,迭代的方法可能更有效地解决线性方程组。迭代的方法生成一系列近似解收敛于一个最终结果。金宝搏官方网站例如如何使用迭代方法来解决与大型线性方程组,稀疏的输入矩阵,明白了使用分布式阵列与迭代解线性方程组的方法

另请参阅

||

相关的话题