直接法与迭代法在求解大规模稀疏线性方程组中的比较研究

合集下载

直接法、迭代法解线性方程组

直接法、迭代法解线性方程组

2 Gauss-Seidel 迭代
当 Q [ ] 时,分裂迭代变为 Gauss-Seidel 迭代 x k 1 D 1 ( Lx k 1 Ux k ) D 1b x k 1 ( D L) 1Ux k ( D L) 1 b ( D L)1[( D L) A]x k ( D L)1 b
11
附录 Ⅱ Gauss-Seidel 迭代法
clear;clc; A=input('输入系数矩阵A='); b=input('输入常数项向量b='); t0=cputime;%记录开始运算时间t0 N=length(b); x=inv(A)*b %解向量的维数 %库函数计算结果 fprintf('库函数计算结果:'); x=zeros(N,1);%迭代初始值 %-----(A=D-E-F)-----D=diag(diag(A)); E=-tril(A,-1);%下三角 F=-triu(A,1);%上三角 B=inv(D-E)*F;g=inv(D-E)*b; eps=0.0001;%相邻解的距离小于该数时,结束迭代 %--------开始迭代------for k=1:100 %最大迭代次数为100 fprintf('第%d次迭代:',k); y=B*x+g; fprintf('\n与上次计算结果的距离(2范数):%f \n',norm(x-y)^2); if norm(x-y)<eps break; end x=y end t=cputime-t0;%计算程序运算时间t x fprintf('\n运算时间t=%fs\n',t)
题目:用直接法、迭代法解线性方程组
学生姓名:崔敬轩 学 号:2015210458

第三章 迭代法s4 解线性方程组的迭代法

第三章  迭代法s4 解线性方程组的迭代法

得 x(1) = ( 0.5000, 2.8333, -1.0833 )T

x(9) = ( 2.0000, 3.0000, -1.0000 )T
举例(续)
SOR 迭代格式
( x1( k 1) (1 ) x1( k ) 1 x2k ) 2 ( k 1) (k ) ( k 1) (k ) x2 (1 ) x2 8 x1 x3 3 ( k 1) ( ( x3 (1 ) x3k ) 5 x2k 1) 2
( k ( k 在计算 xi( k 1) 时,如果用 x1 k1) ,, xi(11) 代替 x1 k ) ,, xi(1) ,则 可能会得到更好的收敛效果。此时的迭代公式为
x1( k 1) ( x2k 1) ( k 1) xn
( ( ( b1 a12 x2k ) a13 x3k ) a1n xnk ) a11 ( ( b2 a21 x1( k 1) a23 x3k ) a2 n xnk ) a22
解得
x
x ( k 1) (1 ) x ( k ) D 1 b Lx ( k 1) Ux ( k )
( k 1)
D L
1
1
(1 ) D U x
(k )
D L b
1
GS D L
Jacobi 迭代 x( k 1) D1 ( L U ) x( k ) D1b
M = D, N = M – A = -(L + U)
GS 迭代
x
( k 1)
L D Ux
1
(k )

第六章 迭代法-数值分析

第六章 迭代法-数值分析
1 j n
由极限存在准则得 即
k
lim xi( k ) xi =0
k
(i 1, 2, , n)
, n)
lim xi( k ) xi
(i 1, 2,
定义:设{ A( k ) }为n阶方阵序列,A为n阶方阵,如果 lim A( k ) A 0
k
其中 为矩阵范数,则称序列{ A( k ) }收敛于矩阵A,记为 lim A( k ) A


g
n
其中bij
aij aii
, (i j , i, j 1, 2,
, n), g i
bi (i 1, 2, aii
, n).
迭代公式x ( k 1) Bx ( k ) g (k 0,1, 2, )用方程组表示为
(k ) (k ) (k ) ( k 1) b13 x 3 b1n x n g x b 1 12 x 2 1 (k ) (k ) (k ) ( k 1) b 23 x 3 b 2 n x n g x2 b 21 x 1 2 ( k 1) (k ) (k ) (k ) b n1 x1 b n 2 x 2 b n,n 1 x n 1 g x n n 因此,在Jacobi迭代法的计算过程中,需同时保留两个
k k
即x是方程组Ax b的解。
引入误差向量
k
(k ) (k ) lim x x lim 0 所以 等价于 k

( k 1)
x
( k 1)
x

x ( k 1) Mx ( k ) g
x Mx g
则可得

( k 1)

(整理)线性方程组的直接法

(整理)线性方程组的直接法

第二章线性方程组的直接法在近代数学数值计算和工程应用中,求解线性方程组是重要的课题。

例如,样条插值中形成的关系式,曲线拟合形成的法方程等,都落实到解一个元线性方程组,尤其是大型方程组的求解,即求线性方程组(2.1)的未知量的数值。

(2.1)其中ai j,bi为常数。

上式可写成矩阵形式Ax = b,即(2.2)其中,为系数矩阵,为解向量,为常数向量。

当detA=D0时,由线性代数中的克莱姆法则,方程组的解存在且惟一,且有为系数矩阵的第列元素以代替的矩阵的行列式的值。

克莱姆法则在建立线性方程组解的理论基础中功不可没,但是在实际计算中,我们难以承受它的计算量。

例如,解一个100阶的线性方程组,乘除法次数约为(101·100!·99),即使以每秒的运算速度,也需要近年的时间。

在石油勘探、天气预报等问题中常常出现成百上千阶的方程组,也就产生了各种形式方程组数值解法的需求。

研究大型方程组的解是目前计算数学中的一个重要方向和课题。

解方程组的方法可归纳为直接解法和迭代解法。

从理论上来说,直接法经过有限次四则运算,假定每一步运算过程中没有舍入误差,那么,最后得到方程组的解就是精确解。

但是,这只是理想化的假定,在计算过程中,完全杜绝舍入误差是不可能的,只能控制和约束由有限位算术运算带来的舍入误差的增长和危害,这样直接法得到的解也不一定是绝对精确的。

迭代法是将方程组的解看作某种极限过程的向量极限的值,像第2章中非线性方程求解一样,计算极限过程是用迭代过程完成的,只不过将迭代式中单变量换成向量而已。

在用迭代算法时,我们不可能将极限过程算到底,只能将迭代进行有限多次,得到满足一定精度要求的方程组的近似解。

在数值计算历史上,直接解法和迭代解法交替生辉。

一种解法的兴旺与计算机的硬件环境和问题规模是密切相关的。

一般说来,对同等规模的线性方程组,直接法对计算机的要求高于迭代法。

对于中等规模的线性方程组,由于直接法的准确性和可靠性高,一般都用直接法求解。

稀疏线性代数方程组迭代法中的预处理技术研究.ppt

稀疏线性代数方程组迭代法中的预处理技术研究.ppt
➢ 计算资源可能分布在各地 ➢ 各个单位对资源的使用存在淡季与旺季,
不利于对资源的充分利用 ➢ 资源的集中调度与使用可以提高利用率,
也有利于对系统的集中统一维护
软件开发要跟上硬件设施的采购
➢ 硬件采购是用来解决实际问题的,实际问题的解决 只有硬件是不够的,需要同时开发相应的软件
➢ 软件开发时,要注意对现有硬件与软件资源的充分 利用。例如,对这里的问题:
o 内存不足时可以利用辅存来减少swap时间 实践证明,在sun机器上,该策略非常有效
o Sun高性能库的调用 Sun高性能库是针对特定机器开发的数学函数库, 调用库中函数可提高效率
o 利用S3L可能将进一步提升计算速度
并行算法是一门大学问
➢ 并行程序开发并不是自动并行编译能完全解决的
➢ 并行算法也并不是直接调用某些并行库就行的,并 非所有并行算法都可以通过这种方法来实现
✓ 结论:在核心算法以软件包形式存在 的前提下,对其它模型对应程序进行 改造的代价并不大
推广应用前景
✓ 针对其它有限元计算问题,可以将这里 所开发的软件直接进行移植与推广
✓ 针对非有限元,但涉及到线性方程组的 问题,可以开发类似的并行计算方法
✓ 针对一般的计算问题,可以将并行开发 的实践经验进行推广应用
➢ 并行算法也不是学会MPI或OpenMP编程就行的, 算
法设计的本质是思想,并行算法也不例外
➢ 高效并行程序的设计涉及体系结构、并行程序设 计、并行计算方法、性能分析与评测等许多问题
➢ 正确高效的并行算法涉及涉及到计算机、数学、 物理等许多学科,稀疏线性方程组的高效并行求 解也不例外
谢谢!
✓ 对编译好的可执行程序,输入都集中 在3个文件中;
✓ 开发的核心算法形成了软件包,只需 要对主体计算程序进行与本程序类似 的修改,调用该软件包中的子程序;

第六章 解大型稀疏线性方程组的迭代法

第六章 解大型稀疏线性方程组的迭代法
x2 (k) 0 1.1 00..9966 00..998895915.001915 .000015 x3 (k) 0 00..66 1.02 1.004050..9999 64641.000015
且有 x(5) x 0.0007
2021/4/26
(2)G-S迭代公式
xx12((kk 11))
(8x2(k) x3(k))/8 (112x1(k1) x3(k))/1
求近似解的方法,称为迭代法(或称为一阶定常迭代法)。
(2)如果对任意初始近似 x(0,) 都有 limx(k) x*,称迭代法
(1.10)为收敛,否则称迭代法为发散。 k
迭代法研究的问题:
§2
(1)构造各种解 Axb的有效迭代法(有效:x(k) 收敛)。
(2)研究迭代法的收敛性及收敛速度。
§3
注:(1.10)为迭代公式,简记为:x ( 1 k ) B ( kf x ( ) k , 0 , • 1 ,2 , ) 。
2.2 高斯-塞德尔迭代法(G-S) ji
(优1)点G-:S迭代存xx i(贮( 0k ) 1 少)( x;1a (1 0i),i( b i xni(j 0 1 1 ))a Tix jj(Gk 1 -)S 迭j n i代 1 a 阵ix jj(k B )), ((D i 1 L ,)2 1 ,U ,n G )
a0n1,n
常用的是将A分裂为A M N (2.3)
其中 M为可选择的非奇异阵使 Mxd容易求解,一般M选为A的某
种近似,于是 A b xM N x b x 或 xM 1N x M 1b。
若记
B M 1 N M 1 (M A )IM1A,•••f M1b,
并取初始向 •x(量 0),则x(0)•( 可 任 意 取B是)迭代矩阵

关于稀疏线性方程组求解

关于稀疏线性方程组求解

稀疏线性方程组求解法稀疏线性方程组的求解是对自然科学和社会科学中许多实际问题进行数值模拟时的关键技术之一。

在高层建筑、桥梁、水坝、防洪堤的结构设计中,需对变形与应力情况进行模拟;在油气资源探测与分析、数值天气预报、飞行器的动力学分析中,需利用流体力学方程组进行模拟;在进行恒星大气分析与核爆实验时,常需利用辐射流体力学与粒子统计平衡等规律进行模拟。

在对这些问题进行分析模拟时,通常利用偏微分方程建立数学模型。

在对偏微分方程的离散求解过程中,稀疏线性方程组求解算法扮演着十分重要的角色。

在许多不以偏微分方程建模的问题中,稀疏线性方程组求解同样发挥了重要的作用。

在空中交通控制、电力线路中的最优电流问题中,需利用数学规划求解;在对采纳某项政策时在某给定条件下对国内、国际多个区域的相应经济指标进行预测时,需利用CGE模型进行分析;在可靠性分析、排队网络分析与计算机系统性能评估中,常利用具有大量状态的离散Markov链进行模拟。

在这些问题的求解中,稀疏线性方程组的求解都占有重要位置,并且往往是整个计算过程中的性能瓶颈,稀疏线性方程组的高效求解是计算数学和工程应用中十分重要的课题之一。

解稀疏线性方程组的方法包括直接法(direct method)与迭代(iterative method)两类。

直接法指在不考虑计算舍入误差的情况下,通过包括矩阵分解和三角方程组求解等有限步的操作求得方程组的精确解,因此又称精确法;迭代法指给定一个初始解向量,通过一定的计算构造一个向量列(一般通过逐次迭代得到一系列逼近精确值的近似解),向量列的极限为方程组理论上的精确解。

迭代法对存储空间的需求低,在求解高阶非病态(求解方程组时如果对数据进行较小的扰动,则得出的结果具有很大波动,这样的矩阵称为病态矩阵。

判定矩阵是否病态以及衡量矩阵的病态程度通常是看矩阵A的条件数K(A)=‖A-1‖*‖A‖的大小,其中‖‖表示对矩阵取某一种范数。

K(A)称为A的条件数,它很大时,称A为病态,否则称良态;K(A)愈大,A的病态程度就愈严重。

第三章 解线性方程组的直接法

第三章  解线性方程组的直接法

第三章 解线性方程组的直接法3.1 引言许多科学技术问题要归结为解含有多个未知量x 1, x 2, …, x n 的线性方程组。

例如,用最小二乘法求实验数据的曲线拟合问题,三次样条函数问题,解非线性方程组的问题,用差分法或有限元法解常微分方程、偏微分方程的边值等,最后都归结为求解线性代数方程组。

关于线性方程组的数值解法一般有两类:直接法和迭代法。

1. 直接法直接法就是经过有限步算术运算,可求得线性方程组精确解的方法(假设计算过程中没有舍 入误差)。

但实际计算中由于舍入误差的存在和影响,这种方法也只能求得线性方程组的近似解。

本章将阐述这类算法中最基本的高斯消去法及其某些变形。

2. 迭代法迭代法就是用某种极限过程去逐步逼近线性方程组精确解的方法,迭代法需要的计算机存储 单元少、程序设计简单、原始系数矩阵在计算过程中不变,这些都是迭代法的优点;但是存在收敛性和收敛速度的问题。

迭代法适用于解大型的稀疏矩阵方程组。

为了讨论线性方程组的数值解法,需要复习一些基本的矩阵代数知识。

3.1.1 向量和矩阵 用nm ⨯R表示全部n m ⨯实矩阵的向量空间,nm C⨯表示全部n m ⨯复矩阵的向量空间。

()⎪⎪⎪⎪⎪⎭⎫⎝⎛==⇔∈⨯nn n n n n ij nm a a aa a aa a a a212222111211A R A 此实数排成的矩形表,称为m 行n 列矩阵。

⎪⎪⎪⎪⎪⎭⎫⎝⎛=⇔∈n n x x x 21x R x x 称为n 维列向量矩阵A 也可以写成)(n 21a ,,a ,a A = 其中 a i 为A 的第i 列。

同理⎪⎪⎪⎪⎪⎭⎫ ⎝⎛=T T T n 21b b b A其中T i b 为A 的第i 行。

矩阵的基本运算:(1) 矩阵加法 )( ,n m n m R C ,R B ,R A B A C ⨯⨯⨯∈∈∈+=+=n m ij ij ij b a c . (2) 矩阵与标量的乘法 ij j a ci αα== ,A C (3) 矩阵与矩阵乘法 p nk kjik b acij ⨯⨯⨯=∈∈∈==∑m p n n m R C ,R B ,R A AB C ( ,1(4) 转置矩阵 ji ij T nm a c ==∈⨯ , ,A C RA(5) 单位矩阵 ()n n ⨯∈=R e ,,e ,e I n 21 ,其中 ()Tk e 0,0,1,0,0 = k=1,2,…,n(6) 非奇异矩阵 设nn ⨯∈RA ,nn ⨯∈RB 。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

直接法与迭代法在求解大规模稀疏线性方程
组中的比较研究
在科学和工程问题中,线性代数是一个非常重要的分支领域。

在大规模科学计算和工程计算中,线性方程组的求解是一个需要高效和准确的问题,这个问题的求解是计算机领域中的一个重要难题。

本文将比较和分析直接法和迭代法这两种用于求解大规模稀疏线性方程组的算法。

一、直接法
在数学领域中,解决线性方程组是一项非常广泛的研究问题,而直接法是其中的一种传统方法。

在求解小规模的线性方程组时,直接法是一种非常有效的解题方法。

所谓直接法,就是通过对方程组的系数矩阵进行高斯消元等操作,将未知量解出来。

以高斯消元法为例,消元法将系数矩阵的行进行逐行的消元,使得系数矩阵化为一个上三角矩阵,然后通过回带法求解出未知量。

直接法主要有高斯消元法和LU分解法两种,其中高斯消元法是裸的的直接法。

直接法的优点是它的精度非常高,可以获得准确的解。

同时,在小规模的方程组中,直接法的性能也很好。

但是,直接法的缺点也是显而易见的:当方程组的维数大到一定程度时,直接法的时间复杂度会增加到难以计算的程度。

二、迭代法
用于求解大规模稀疏线性方程组的另一种方法是迭代法。

迭代法是一种迭代逼近的方法,通过一系列逐步近似地计算来解决问题。

迭代法的核心思想是:场解逐渐逼近正确的解。

相比直接法,迭代法的时间复杂度要低得多。

迭代法包含以下几个步骤:
1.选取一个初始解x0;
2.给出逼近的准则和停止准则;
3.通过计算产生下一个逼近解;
4.不断重复以上步骤,直到满足停止准则为止。

迭代法在大规模线性方程组的求解中有着广泛的应用。

迭代法有很多优点,其
中最重要的是相比直接法,迭代法的时间复杂度相对要低很多。

另外,迭代法还具有灵活性高,容易适应不同的求解目标等优点。

但是,迭代法也有许多缺点,其中最重要的是其求解精度相对直接法要低。


代法也比较复杂,算法实现有很多细节需要处理。

此外,迭代法的收敛速度非常慢,因此,在实际问题中需要通过参数制定来进行优化。

三、直接法与迭代法的比较
直接法和迭代法是解决线性方程组的两个核心算法。

两种算法各有优缺点,在
现实应用中需要根据实际情况进行选择。

作为一种基础的算法,直接法在求解小规模问题时有许多优势。

在小规模问题中,直接法能够获得精确的解,并且能够保证数值稳定性。

但是在大规模问题中,直接法的缺点就显而易见了。

相比之下,迭代法在求解大规模问题中有非常优异的性能。

迭代法是基于逐步
逼近的思路,因此可以通过一步步迭代,利用前一个解来逐渐逼近最终解。

由于迭代法的实现需要进行大量的矩阵乘法等复杂计算,因此其实现也比直接法较复杂,但是其时间复杂度要远低于直接法。

迭代方法能采用矩阵分裂或预条件以加速收敛进程,从而获得更好的解。

总的来看,无论是直接法还是迭代法都有其适用范围,实际情况需要根据问题
规模特点等方面进行选择。

此外,还需要考虑到计算效率,因为两种算法的速度和效率不一样。

但不论选择哪种算法,都需要注意算法的实现细节,避免数值方面的问题。

相关文档
最新文档