线性方程组迭代解法
第三章 线性方程组的迭代解法
其中
v x (0) = ( x1(0) , x2 (0) ,…, xn (0) )
是迭代初值。 是迭代初值。
写成矩阵形式: 写成矩阵形式: 矩阵形式
A=
D
U
v v Ax = b ⇔ ⇔ ⇔
v v (D + L + U )x = b v v v Dx = −( L + U ) x + b v v v −1 −1 x = −D (L + U )x + D b
( ( a 111 ) a 121 ) ... a 1( 1 ) n
A
( ( ( a ij2 ) = a ij1 ) − m i 1 a 1 1j ) (2) b i = b i( 1 ) − m i 1 b1( 1 ) ( i , j = 2 , ..., n )
− 共进行 n ?1 步
(1 ( ( a12) ... a11) x1 b11) n b( 2) ( 2) ( 2) a22 ... a2n x2 2 . . = . ... . . . . . . ( n) (n ann) xn bn
… … …
…
( ( ( ( ( xnk +1) = 1 (−an1 x1k +1) − an 2 x2k +1) − an3 x3k +1) − L − ann−1 xnk +1) + bn ) −1 ann v v ( k +1) v ( k +1) v (k ) −1 −1 写成矩阵形式 矩阵形式: 写成矩阵形式: x = − D ( Lx + Ux ) + D b v (k +1) v (k ) v ⇔ (D + L)x = −U x + b v v ( k +1 ) −1 v ( k ) −1 ⇔ x = − ( D + L ) Ux + ( D + L ) b v Gauss-Seidel B vf v ( k + 1) v(k ) 迭代阵
第五章 解线性方程组的迭代解法
定义迭代法为: 定义迭代法为:
x ( k + 1) = G J x ( k ) + g
其中Jacobi迭代矩阵:GJ = D1 ( L + U ) 迭代矩阵: 其中 迭代矩阵
g = D 1b = (7.2, 8.3, 8.4)T 取 x ( 0 ) = (0, 0, 0)T , 代入迭代式,得x(1) = Bx ( 0 ) + g = (7.2, 8.3, 8.4)T x ( 2 ) = Bx (1) + g = (9.71,10.70,11.5)T x (9 ) = (10.9994,11.9994,12.9992) 精确解为 x = (11,12,13)T .
记
A = D L U
其中 D = diag (a11 ,, ann ) , L, U 分别为 A 的 严格下、上三角形部分元素构成的三角阵 严格下、上三角形部分元素构成的三角阵. Gauss-Seidel方法的矩阵形式为 方法的矩阵形式为
x ( k +1) = D1 ( Lx ( k +1) + Ux ( k ) + b)
或者
x ( k +1) = ( D L)1Ux ( k ) + ( D L)1 b
( 这说明Gauss-Seidel方法的迭代矩阵为 D L)1U 方法的迭代矩阵为 这说明
从而有
定理5.2 定理5.2 Gauss-Seidel方法收敛的充分必要条件为 方法收敛的充分必要条件为
ρ (GG ) < 1 或
计算方法3_线性方程组迭代解法
计算方法3_线性方程组迭代解法线性方程组的迭代解法是解决线性方程组的一种常见方法,常用于大规模的线性方程组求解。
该方法通过不断迭代更新解的近似值,直到满足一定的收敛准则为止。
线性方程组的迭代解法有很多种,其中最经典的是雅可比迭代法、高斯-赛德尔迭代法和超松弛迭代法。
本文将分别介绍这三种迭代解法及其计算方法。
雅可比迭代法是一种比较简单的线性方程组迭代解法,它的基本思想是先将线性方程组转化为对角占优的形式,然后通过迭代求解逐渐接近精确解。
雅可比迭代法的迭代公式为:其中,x^(k+1)是第k+1次迭代的近似解,n是未知数的个数,a_ij 是系数矩阵A的元素,f_i是方程组的右端向量的元素。
雅可比迭代法的计算步骤如下:1.将线性方程组转化为对角占优的形式,即保证矩阵A的对角元素绝对值大于其它元素的绝对值。
2.初始化向量x^(0),设定迭代终止准则。
3.根据雅可比迭代公式,计算x^(k+1)。
4.判断迭代终止准则是否满足,如果满足,则停止迭代,返回近似解x^(k+1);否则,继续进行下一次迭代。
高斯-赛德尔迭代法是雅可比迭代法的改进方法,它的基本思想是在每次迭代计算x^(k+1)时,利用已经计算出的近似解作为x的一部分。
高斯-赛德尔迭代法的迭代公式为:其中,x^(k+1)_i是第k+1次迭代的近似解中第i个未知数的值,x^(k)_i是第k次迭代的近似解中第i个未知数的值。
高斯-赛德尔迭代法的计算步骤如下:1.将线性方程组转化为对角占优的形式。
2.初始化向量x^(0),设定迭代终止准则。
3.根据高斯-赛德尔迭代公式,计算x^(k+1)。
4.判断迭代终止准则是否满足,如果满足,则停止迭代,返回近似解x^(k+1);否则,继续进行下一次迭代。
超松弛迭代法是对高斯-赛德尔迭代法的一种改进方法,它引入了松弛因子ω,通过调整参数ω的值,可以加快迭代的收敛速度。
超松弛迭代法的迭代公式为:其中,0<ω<2,x^(k+1)_i是第k+1次迭代的近似解中第i个未知数的值,x^(k)_i是第k次迭代的近似解中第i个未知数的值。
线性方程组的迭代式求解方法
线性方程组的迭代式求解方法迭代法解方程的基本原理1.概述把 Ax=b 改写成 x=Bx+f ,如果这一迭代格式收敛,对这个式子不断迭代计算就可以得到方程组的解。
道理很简单:对 x^{(k+1)}=bx^{(k)}+f 两边取极限,显然如果收敛,则最终得到的解满足 \lim_{k\rightarrow\infty } x^{(k)}=x^*=Bx^*+f ,从而必然满足原方程 Ax^*=b 。
迭代方法的本质在于这一次的输出可以当作下一次的输入,从而能够实现循环往复的求解,方法收敛时,计算次数越多越接近真实值。
2.收敛条件充要条件:迭代格式 x=Bx+f 收敛的充要条件是 \rho (B)<1充分条件: \Vert B\Vert <1即 \Vert B\Vert <1 \Rightarrow \rho(B)<1\Leftrightarrow 迭代收敛一、Jacobi迭代法怎样改写Ax=b ,从而进行迭代求解呢?一种最简单的迭代方法就是把第i行的 x_i 分离出来(假定 a_{ii} \ne 0 ):\sum_{j=1}^{n}a_{ij}x_j=b_i\Rightarrow x_i=\frac{b_i-\sum_{j=1,j\ne i}^{n}a_{ij}x_j}{a_{ii}}\quad \\这就是Jacobi(雅可比)迭代法。
迭代格式给定x^{(0)}=\left[x_1^{(0)},x_2^{(0)},\cdots,x_n^{(0)}\rig ht]^T ,则Jacobi法的迭代格式(也称分量形式)为x_i^{(k+1)}=\frac{1}{a_{ii}}\left ( {b_i-\sum_{j=1,j\ne i}^{n}a_{ij}x_j^{(k)}}\right),\quadi=1,2,\cdots,n\\矩阵形式设 A=D-L-U。
Jacobi法的矩阵形式(也称向量形式)为x^{(k+1)}=B_Jx^{(k)}+D^{-1}b\\其中迭代矩阵 B_J=D^{-1}(L+U)收敛条件\begin{eqnarray} \left. \begin{array}{lll} \VertB_J\Vert <1 \\ A 严格对角占优\\ A, 2D-A对称正定\end{array} \right \} \end{eqnarray} \Rightarrow \rho (B_J)<1\Leftrightarrow 迭代收敛特别地,若 A 对称正定且为三对角,则 \rho^2(B_J)=\rho (B_G)<1 。
数值分析第六章线性方程组迭代解法
1)
b2 a21x1(k) a23x3(k)
xn( k
1)
bn an1x1(k) an2 x2(k)
a1n
x(k) n
a11
a2n xn(k) a22
an,n1
x(k) n1
ann
x(k1) D1(L U ) x(k) D1b
D1(D A) x(k) D1b
(I D1A) x(k) D1b x(k) D1(b Ax(k) )
x(7) = ( 2.0000, 3.0000, -1.0000 )T 如何确定 SOR 迭代中的最优松弛因子是一件很困难的事
26
收敛性
收敛性定理 Jacobi 迭代收敛的充要条件 (J)<1 G-S 迭代收敛的充要条件 (G)<1 SOR 迭代收敛的充要条件 (L)<1
Jacobi 迭代收敛的充分条件 ||J|| <1 G-S 迭代收敛的充分条件 ||G|| < 1 SOR 迭代收敛的充分条件 ||L|| < 1
x1( k x2( k
1) 1)
1
x(k) 2
2
8
x ( k 1) 1
x(k) 3
3
x3(k1)
5
x ( k 1) 2
2
迭代可得: x(1) = ( 0.5000, 2.8333, -1.0833 )T
x(9) = ( 2.0000, 3.0000, -1.0000 )T
25
举例
SOR 迭代:
x(k1) i
bi
i 1
a x(k1) ij j
n
aij
x(jk
)
aii
j 1
j i 1
线性方程组迭代解法
§3.2(I) Jacobi 迭代法 (Jacobi iterative method)
数学问题的描述
Jacobi迭代法的主要步
骤
1. The mathematical form 2. The process of Jacobi iterative method
数学问题的描述
Ax=b x= M-1 Nx + M-1 b
B= M-1 N, f= M-1 b
注:选取M阵,就得到解 Ax=b 的各种迭代 法 Re.mark: We can obtain various iterative schemes
by choosing different M.
本章重点介绍三个迭代法,即:
0满足(k什么条∞)件时有
Bk+1 0
The convergence of {x(k) } Bk+1 0
The condition ?
基本迭代法 the based iterative technique
设有 Ax b, 其中AA为非(a奇ij )异矩Rn阵n . 将A分裂为 A M N ,
The process of iterative method
解线性方程组迭代法的主要步骤是:
1. 把所给的线性方程组Ax=b 化成如下形式的同解
方程组
Converting Ax=b into an equivalent form
x=Bx+f
(3-1)
2. 给出初始向量
X 0
x(0) 1
,
x20
Direct techniques are used for solving linear systems of small
线性方程组迭代解法
输入最大迭代次数N, k=1;误差ε ② 迭代
计算X ( E D A) X
(1)
1
(0)
D b
1
(1) (1) (1) (1) ③ 控制 如果||X(1)-X(0)||<ε,则输出X ( x1 , x2 xn )
否则 如果k<N ,k=k+1,置X(1) =X(0)转②继续; 如果k>=N ,算法失败。
ji
可写成形如
x
( k 1) i
(bi a x
j 1 (k ) ij j
i 1
j i 1
a x
n
(k ) ij j
) / aii
(i 1,2,, n) (3-9)
在Jacobi 迭代中,是用X(k)的全部分量来计算 X(k+1)的全部分量的。 我们应该注意到,在计算新分量xi(k+1)时,分量 x1(k+1), x2(k+1), … , xi-1(k+1)都已经算出。
由于Gauss-Seidel迭代法逐次用计算出来的新值 代替旧值,所以在收敛的条件下,它要比Jacobi迭 代法收敛速度快。
返回节
Gauss-seidel迭代法的主要步骤
分量计算步骤为:
① 准备
X (0) ( x1(0) , x2(0) xn(0) ) 输入A,b,迭代初值
输入最大迭代次数N, k=1;误差ε
按系数矩阵中 零元素的个数: 按未知量 的个数: 按系数矩 阵的形状
稠密线性 方程组
稀疏线性 方程组 低阶线性 方程组
对角占 优方程组
高阶线性 (如1000) 方程组
对称正定 方程组 三角形 方程组
线性方程组迭代法
线性方程组迭代法
线性方程组迭代法,又称坐标下降法,是一种用于解线性方程组的迭代求解方法,常用于线性规划以及单纯形法等技术。
早在上世纪50年代,此方法就在解决
线性规划问题中得到了广泛应用,到目前为止,这种技术仍然广泛使用。
线性方程组迭代法是一种基于不断迭代调整变量,使目标函数达到最优结果的
迭代求解法。
其基本步骤是:
(1) 初始化目标函数变量:首先,初始化线性方程组的目标函数的变量;
(2) 评估梯度:选择合适的算法计算目标函数的梯度;
(3) 根据该梯度更新变量:更新目标函数变量的值,使得在此次更新之后的值
更加有利于满足线性方程组的要求;
(4) 重复上述步骤,直到目标函数足够接近最优值为止;
线性方程组迭代法能够快速地求解出线性规划问题的最优解,因此,它在计算
机上经常被用来优化问题,进而提高系统运行效率。
随着网络技术的发展,线性方程组迭代法在互联网领域得到了广泛应用,这在大大缩短了计算机程序的运行时间,提高了互联网的效率。
同时,线性方程组迭代法也有助于提高系统的性能,改善用户的体验,提升企业的品牌形象。
第三章 线性方程组的迭代解法
定理3.2 若 ||B|| =q<1,则由迭代格式x(k+1)=Bx(k)+f 和任意初始 向量x(0)产生的迭代序列x(k)收敛于准确解x*. 本定理是迭代法收敛的充分条件,它只能判别收敛的情况,当 ||B|| ≥1时,不能断定迭代不收敛.但由于||B||,特别是||B|| 1和||B|| ∞ 的计算比较容易,也不失为一种判别收敛的方法。 同时当||B|| <1时可以用来估计迭代的次数,或用来设置退出 计算的条件. 这时有定理3.3和定理3.4 定理3.3 若||B|| =q<1,则迭代格式x(k+1) =Bx(k)+f产生的向量序 k 列 {x(k)}中 q (k ) * (0) (1 )
3.2 几种常用的迭代法公式 3.2.1 Jacobi迭代法
先看一个算例:
10 x 1 2 x 2 x 3 3 例1 2 x 10 x x 15 1 2 3 x 2 x 5 x 10 1 2 3
从以上三个方程中分别解出x1, x2, x3
|| x x || 1 q || x x || ( 3 . 17 )
利用此定理可以在只计算出x(1)时,就估计迭代次数k,但估 计偏保守,次数偏大. 称为事前误差估计. 13 结束
x2
x3
0
0
可见它对这一方程组比Jacobi迭代法收敛快一些。
Gauss-Seidel迭代法的公式如下:
xi
( k 1)
bi a ii
1 i 1 a ij x (j k 1 ) a ii j 1
n
a ij x j
(k )
j i 1
i 1, 2 , n k 0 ,1, 2 ,
3线性方程组的迭代解法
三、逐次超松弛法(SOR方法)
逐次超松弛法(Successive Over Relaxation Method)可 看成是Gauss-Seidel方法的加速,Seidel迭代法是SOR方法的 特例。将Seidel方法的迭代公式
改写为
x(k1) i
1 aii
(bi
i 1
a x(k 1) ij j
k
0
1
2
3
4
5
6
x1
0
2.5000 2.9773 3.0098 2.9998 2.9999 3.0000
x2
0
2.0909 2.0289 1.9968 1.9997 2.0001 2.0000
x3
0
1.2273 1.0041 0.9959 1.0002 1.0001 1.0000
可见Gauss-Seidel迭代法比Jacobi迭代法收敛要快一些。
x(k 1) BJ x(k ) f J
0
其中
a21
a22
BJ D1(L U )
an1 ann
a12 a11 0
an2 ann
a13 a11
a23 a22
7
a1n1 a11
a2n1 a22
ann1 ann
a1n
a11
a2 n
a22 , fJ D1b
0
二、 Gauss-Seidel 迭代法
x(k ) i
xi(k )
x(k ) i
1 aii
bi
i 1
a x(k 1) ij j
j 1
n
aij
x(jk
)
j i
为加快收敛,在增量 xi(k ) 前加一个因子
线性方程组求解的迭代算法
线性方程组求解的迭代算法线性方程组是数学中常见的问题之一,求解线性方程组是很多科学和工程领域中必需的基本任务。
而迭代算法是一种常见的求解线性方程组的方法之一,通过不断逼近线性方程组的解来达到求解的目的。
本文将介绍一些常见的线性方程组迭代算法及其原理。
一、雅可比迭代法雅可比迭代法是最早被提出的线性方程组迭代算法之一。
其思想是通过不断迭代,在每一步都利用先前求得的近似解来逼近方程组的解。
具体算法如下:假设给定的线性方程组为Ax=b,其中A为系数矩阵,b为常数向量,x为未知向量。
1. 首先,将方程组转化为x=D^-1(b-Rx),其中D为一个对角矩阵,R为矩阵A的剩余部分。
2. 设定一个初始解向量x0。
3. 迭代计算:重复执行以下步骤,直到满足终止条件。
a. 计算下一次迭代的解向量:x_k+1 = D^-1(b-Rx_k),其中k为当前迭代的次数。
b. 检查终止条件是否被满足,如果是,则停止迭代;否则,返回步骤a。
雅可比迭代法的收敛性与系数矩阵A的特征值有关。
当A是严格对角占优矩阵时,迭代法收敛。
二、高斯-赛德尔迭代法高斯-赛德尔迭代法是雅可比迭代法的一种改进方法。
在每一次迭代中,新的解向量x_k+1的计算会利用到之前已经计算得到的近似解向量的信息,从而加快迭代的速度。
具体算法如下:1. 设定一个初始解向量x0。
2. 迭代计算:重复执行以下步骤,直到满足终止条件。
a. 对于每个方程i,计算下一次迭代的解向量的每个分量:x_k+1[i] = (1/A[i][i]) * (b[i]-Σ(A[i][j]*x_k[j],其中j为1到i-1之间的所有整数。
b. 检查终止条件是否被满足,如果是,则停止迭代;否则,返回步骤a。
高斯-赛德尔迭代法相比于雅可比迭代法,在每一次迭代中都会利用到之前计算得到的近似解向量的信息,因此收敛速度更快。
三、超松弛迭代法超松弛迭代法是对雅可比迭代法和高斯-赛德尔迭代法的进一步改进。
通过引入松弛因子ω,可以加速迭代的收敛速度。
第6章线性方程组的迭代解法
第六章 线性方程组的迭代解法
1
求解线性方程组的数值解除了使用直接解法,迭代解 法也是经常采用的一种方法,这种方法更有利于编程计 算,本章将介绍这种方法。
§1 向量和矩阵的范数
为了对线性方程组数值解的精确程度,以及方程组 本身的性态进行分析,需要对向量和矩阵的“大小”引 进某种度量,范数就是一种度量尺度,向量和矩阵的范 数在线性方程组数值方法的研究中起着重要的作用。
AT A的最大特征值 2
算理论上重要
n
矩阵∞-范数:
A
max 1 i n
| aij |
j 1
行和
以上三种范数都满足矩阵范数的条件,通常将这三种 矩阵范数统一表示为|| A ||p,P=1,2,∞。
2020/8/12
第六章 线性方程组的迭代解法
9
例6.2 设矩阵
1 A 3
2
4
求矩阵A的范数|| A ||p,P=1,2,∞。 解 根据定义
lim x(k) x* 或 x(k ) x*
k
向量序列 {x(k)} 收敛于向量 x*,当且仅当它的每一
个分量序列收敛于xi*的对应分量,即
x(k)
x*
x(k) i
xi* , i
1,2,, n
||
x(k )
x*
||
max
1 i n
|
x(k) i
xi*
|
2020/8/12
第六章 线性方程组的迭代解法
(4)|| AB ||≤|| A || || B ||
则称|| A ||为矩阵A的范数。
可定义矩 阵极限
2020/8/12
第六章 线性方程组的迭代解法
8
设 n 阶矩阵 A=(aij),常用的矩阵范数有:
数值分析第六章线性方程组迭代解法
数值分析第六章线性方程组迭代解法线性方程组是数值分析中的重要内容之一,其求解方法有很多种。
其中一种常用的方法是迭代解法,即通过不断迭代逼近方程组的解。
本文将介绍线性方程组迭代解法的基本思想和常用方法。
线性方程组可以用矩阵形式表示为Ax=b,其中A是系数矩阵,b是常数向量,x是未知向量。
线性方程组的解可以是唯一解,也可以是无穷多个解。
迭代解法的基本思想是通过不断迭代,并利用迭代序列的极限,逼近线性方程组的解。
迭代解法适用于大型的线性方程组,而直接求解法则适用于小型的线性方程组。
常用的迭代解法有雅可比迭代法、高斯-赛德尔迭代法和逐次超松弛迭代法。
雅可比迭代法是最简单的线性方程组迭代解法之一、它的基本思想是将线性方程组的每个方程都单独表示为未知数x的显式函数,然后通过不断迭代求解。
雅可比迭代法的迭代公式为:x(k+1)=D^(-1)(b-(L+U)x(k))其中,D是A的对角元素构成的对角矩阵,L是A的下三角矩阵,U 是A的上三角矩阵,x(k)是第k次迭代的解。
高斯-赛德尔迭代法是雅可比迭代法的改进版。
它的基本思想是将每个方程的解带入到下一个方程中,而不是等到所有方程都迭代完毕后再计算下一组解。
高斯-赛德尔迭代法的迭代公式为:x(k+1)=(D-L)^(-1)(b-Ux(k))其中,D是A的对角矩阵,L是A的下三角矩阵(除去对角线),U是A的上三角矩阵(除去对角线),x(k)是第k次迭代的解。
逐次超松弛迭代法是对高斯-赛德尔迭代法的改进。
它引入了松弛因子w,通过调节松弛因子可以加快收敛速度。
逐次超松弛迭代法的迭代公式为:x(k+1)=(D-wL)^(-1)[(1-w)D+wU]x(k)+w(D-wL)^(-1)b其中,D是A的对角矩阵,L是A的下三角矩阵(除去对角线),U是A的上三角矩阵(除去对角线),w是松弛因子,x(k)是第k次迭代的解。
线性方程组迭代解法需要设置迭代停止准则,通常可以设置迭代次数上限或者设置一个精度要求。
第6章线性方程组的迭代解法详解
解:对于 向量 x=(1,-3,2,0)T ,根据定义 可以计算出:
|| x||1=| 1 |+|-3 |+| 2 |+| 0 |=6
x
2
1 3 2
2 2
2
0
2
1 2
14
x
max 1 , 3 , 2 , 0
再由 Ax =b,得到 || b||= || Ax || ≤||A || ||x||
2018/11/1 第六章 线性方程组的迭代解法 16
于是,由 || △x ||≤||A-1 || ||△b||
及 ||b || ≤||A || ||x||
1 x
A b
得到解的相对误差为 x A x
x x
收敛于
k
2018/11/1
第六章 线性方程组的迭代解法
14
四、矩阵的条件数
方程组 Ax b 中扰动对结果的影响
x1 x2 2 x1 1.0001 x2 2
x1 x2 2 x1 1.0001 x2 2.0001
x1 2, x2 0
k
(k)=A,或 A(k)→A。 称{ A(k)}收敛于A, 记作 lim A k
(k ) 定理:设有n×n矩阵序列 A( k ) (aij ), k 1, 2, n×n矩阵A=(aij)的充要条件为 (k ) lim aij aij , i , j 1,2 , , n
多大算病态没有标准。如果主元很小或者元素数量级相差大,可能是病态
cond ( A) A A1 AA 1 1
2018/11/1 第六章 线性方程组的迭代解法 18
数值计算方法第三章 线性方程组迭代法
0,1,2,
取x1(0) 0, x2(0) 0,计算结果如下:
k0
x (k) 1
0
x (k) 2
0
1
2
3
4
0.66667 0.50000 0.61111 0.58333
0.50000 0.16667 0.25000 0.19445
5
6
7
8
9
0.60185 0.59722 0.60031 0.59954 0.6005
从而得迭代式 x(k1) (D L)1Ux (k) (D L)1 b, (k 0,1,2, )
上式中矩阵 M (D L)1U 为Gauss-Seidel迭代矩阵。
输入:A,b, n,
置初值: k 0; xi 0(i 1,L , n)
k k 1;e 0
3xx1 12xx22
2 1
精确到3位有效数字。
解 Gauss Siedel迭代格式为
x (k 1) 1
x (k 1) 2
(2 x2(k) ) / 3 (1 x1(k1) ) / 2
,
k
0,1,
2,L
取x1(0)
0,
x (0) 2
0, 计算结果如下:
0
101
0
1
10
2
1 0 0 101 1 1 5
0 0.1 0.2 0.1 0 0.2
0.2 0.2 0
取初值x (0) (0,0,0)T 代入迭代式
x(1) Bx (0) g (7.2,8.3,8.4)T x(2) Bx(1) g (9.17,10.70,11.50)T ,如此下去, x(9) Bx (1) g (10.9994 ,11.9994 ,12.9992 )T
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验六:线性方程组迭代解法1)实验目的• 熟悉Matlab 编程;• 学习线性方程组迭代解法的程序设计算法 2)实验题目1.研究解线性方程组Ax=b 迭代法收敛速度。
A 为20阶五对角距阵⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡------------------=321412132141412132141412132141412132141213O O O O O A 要求:(1)选取不同的初始向量x 0 及右端向量b ,给定迭代误差要求,用雅可比迭代和高斯-赛德尔迭代法求解,观察得到的序列是否收敛?若收敛,记录迭代次数,分析计算结果并得出你的结论。
(2)用SOR 迭代法求解上述方程组,松弛系数ω取1< ω <2的不同值,在 时停止迭代.记录迭代次数,分析计算结果并得出你的结论。
2.给出线性方程组b x H n =,其中系数矩阵n H 为希尔伯特矩阵:()n n ij n h H ⨯ℜ∈=,.,,2,1,,1n j i j i ih ij Λ=-+=假设().,1,,1,1*x H b x n n T=ℜ∈=Λ若取,10,8,6=n 分别用雅可比迭代法及SOR 迭代(5.1,25.1,1=ω)求解,比较计算结果。
3)实验原理与理论基础1.雅克比(Jacobi )迭代法算法设计:①输入矩阵a 与右端向量b 及初值x(1,i); ②按公式计算得),,2,1(1)(1)1(n i x a b a x k j n i j j ij i iik i Λ=⎪⎪⎪⎭⎫ ⎝⎛-=∑≠=+2.高斯――赛得尔迭代法算法设计:1. 输入矩阵a 与右端向量b 及初值x(1,i).2.⎪⎪⎭⎫⎝⎛--=∑∑+=+-=+)(1)1(11)1(1k j ni j ij k j i j ij i iik ix a x a b a x(i = 1, 2,…, n )3.超松驰法算法设计:①输入矩阵a 与右端向量b 及初值x(1,i)。
②⎪⎪⎭⎫⎝⎛--+-=∑∑+=+-=+)(1)1(11)()1()1(k j ni j ij k ji j ij i ii k ik ix a x a b a xxωω,20<<ω4)实验容第一题实验程序: 1.雅克比迭代法: function []=yakebi(e) %输入矩阵a 与右端向量b 。
for i=1:20 a(i,i)=3; endfor i=3:20 for j=i-2a(i,j)=-1/4; a(j,i)=-1/4; end endfor i=2:20 for j=i-1a(i,j)=-1/2; a(j,i)=-1/2; end endb=[2.2 1.7 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.7 2.2]; k=1;n=length(a); for i=1:nx(1,i)=1;%数组中没有第0行。
endwhile k>=1 for i=1:n m=0;%此步也可以用ifj~=i 条件判定一下。
for j=1:(i-1)m=m+a(i,j)*x(k,j); endfor j=(i+1):nm=m+a(i,j)*x(k,j); endx(k+1,i)=(b(i)-m)/a(i,i);endl=0;%判定满足条件使循环停止迭代。
for i=1:nl=l+abs(x(k+1,i)-x(k,i));endif l<ebreakendk=k+1;end%输出所有的x的值。
x(k+1,:)k2.高斯—赛德尔迭代法:function []=gaoshisaideer(e)for i=1:20a(i,i)=3;endfor i=3:20for j=i-2a(i,j)=-1/4;a(j,i)=-1/4;endendfor i=2:20for j=i-1a(i,j)=-1/2;a(j,i)=-1/2;endendb=[2.2 1.7 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.7 2.2]; k=1;n=length(a);for i=1:nx(1,i)=0;%数组中没有第0行。
endwhile k>=1for i=1:np=0;q=0;for j=1:(i-1)p=p+a(i,j)*x(k+1,j);endfor j=(i+1):nq=q+a(i,j)*x(k,j);endx(k+1,i)=(b(i)-q-p)/a(i,i);endl=0;%判定满足条件使循环停止迭代。
for i=1:nl=l+abs(x(k+1,i)-x(k,i));endif l<ebreakendk=k+1;end%输出所有的x的值。
x(k+1,:)k3.SOR迭代法程序:function []=caosongci(e,w)for i=1:20a(i,i)=3;endfor i=3:20for j=i-2a(i,j)=-1/4;a(j,i)=-1/4;endendfor i=2:20for j=i-1a(i,j)=-1/2;a(j,i)=-1/2;endendb=[2.2 1.7 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.7 2.2]; k=1;n=length(a);for i=1:nx(1,i)=0;%数组中没有第0行。
endwhile k>=1if w>=2||w<=1'请重新输入w的值,w在1与2之间';endfor i=1:np=0;q=0;for j=1:(i-1)p=p+a(i,j)*x(k+1,j);endfor j=i:nq=q+a(i,j)*x(k,j);endx(k+1,i)=x(k,i)+w*(b(i)-q-p)/a(i,i);endl=0;%判定满足条件使循环停止迭代。
for i=1:nl=l+abs(x(k+1,i)-x(k,i));endif l<ebreakendk=k+1;end%输出所有的x的值。
x(k+1,:)k第二题实验程序:1.雅克比迭代法:function X = p211_1_JJ(n)Hn = GET_Hn(n);b = GET_b(n);temp = 0;X0 = zeros(1, n);X_old = zeros(1, n);X_new = zeros(1, n);disp('Now Jacobi method!');disp('Start with the vector that (0, 0, 0, ...)^T');for i = 1:nfor k = 1:nX_old = X_new;temp = 0;for j = 1:nif(j ~= i)temp = temp + Hn(i, j) * X_old(j);endX_new(i) = (b(i) - temp) / Hn(i, i);endendX = X_new;end2.SOR迭代法:function X = p211_1_SOR(n, w)Hn = GET_Hn(n);b = GET_b(n);temp01 = 0;temp02 = 0;X0 = zeros(1, n);X_old = zeros(1, n);X_new = zeros(1, n);disp('Now Successive Over Relaxtion method!');disp('Start with the vector that (0, 0, 0, ...)^T');for i = 1:nfor k = 1:nX_old = X_new;temp01 = 0;temp02 = 0;for j = 1:nif(j < i)temp01 = temp01 + Hn(i, j) * X_new(j);endif(j > i)temp02 = temp02 + Hn(i, j) * X_old(j);endendendX_new(i) = w * (b(i) - temp01 - temp02) / Hn(i, i) + X_old(i);endX = X_new;end5)实验结果第一题实验结果:1.雅克比迭代法:输入:>> b=[2.2 1.7 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.7 2.2]; yakebi(0.00001)结果:ans =Columns 1 through 120.9793 0.9787 0.9941 0.9970 0.9989 0.9995 0.9998 0.9999 1.0000 1.0000 1.0000 1.0000Columns 13 through 200.9999 0.9998 0.9995 0.9989 0.9970 0.9941 0.9787 0.9793k =122.高斯—赛德尔迭代法:此时初值全取1;输入:>> b=[2.2 1.7 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.7 2.2];>> gaoshisaideer(0.00001)结果:ans =Columns 1 through 120.9793 0.9787 0.9941 0.9970 0.9989 0.9995 0.9998 0.99991.0000 1.0000 1.0000 1.0000Columns 13 through 200.9999 0.9998 0.9995 0.9989 0.9970 0.9941 0.9787 0.9793k =14此时初值全取1;输入:>> b=[2.5 1.9 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.9 2.5];gaoshisaideer(0.00001)结果:ans =Columns 1 through 121.0969 1.0707 1.0219 1.0103 1.0039 1.0016 1.0006 1.0003 1.0001 1.0001 1.0001 1.0001Columns 13 through 201.0003 1.0006 1.0016 1.0039 1.0103 1.0219 1.0707 1.0969k =143.SOR迭代法:>> caosongci(0.00001,1.1)ans =Columns 1 through 120.9793 0.9787 0.9941 0.9970 0.9989 0.9995 0.99980.9999 1.0000 1.0000 1.0000 1.0000Columns 13 through 200.9999 0.9998 0.9995 0.9989 0.9970 0.9941 0.97870.9793k =11>> caosongci(0.00001,1.2)ans =Columns 1 through 120.9793 0.9787 0.9941 0.9970 0.9989 0.9995 0.9998 0.9999 1.0000 1.0000 1.0000 1.0000Columns 13 through 200.9999 0.9998 0.9995 0.9989 0.9970 0.9941 0.9787 0.9793k =12>> caosongci(0.00001,1.3)ans =Columns 1 through 120.9793 0.9787 0.9941 0.9970 0.9989 0.9995 0.9998 0.9999 1.0000 1.0000 1.0000 1.0000Columns 13 through 200.9999 0.9998 0.9995 0.9989 0.9970 0.9941 0.9787 0.9793k =15>> caosongci(0.00001,1.4)ans =Columns 1 through 120.9793 0.9787 0.9941 0.9970 0.9989 0.9995 0.9998 0.9999 1.0000 1.0000 1.0000 1.0000Columns 13 through 200.9999 0.9998 0.9995 0.9989 0.9970 0.9941 0.9787 0.9793k =19>> caosongci(0.00001,1.5)ans =Columns 1 through 120.9793 0.9787 0.9941 0.9970 0.9989 0.9995 0.9998 0.9999 1.0000 1.0000 1.0000 1.0000Columns 13 through 200.9999 0.9998 0.9995 0.9989 0.9970 0.9941 0.9787 0.9793k =25>> caosongci(0.00001,1.6)ans =Columns 1 through 120.9793 0.9787 0.9941 0.9970 0.9989 0.9995 0.9998 0.9999 1.0000 1.0000 1.0000 1.0000Columns 13 through 200.9999 0.9998 0.9995 0.9989 0.9970 0.9941 0.9787 0.9793k =34>> caosongci(0.00001,1.7)ans =Columns 1 through 120.9793 0.9787 0.9941 0.9970 0.9989 0.9995 0.9998 0.9999 1.0000 1.0000 1.0000 1.0000Columns 13 through 200.9999 0.9998 0.9995 0.9989 0.9970 0.9941 0.9787 0.9793k =47>> caosongci(0.00001,1.8)ans =Columns 1 through 120.9793 0.9787 0.9941 0.9970 0.9989 0.9995 0.9998 0.9999 1.0000 1.0000 1.0000 1.0000Columns 13 through 200.9999 0.9998 0.9995 0.9989 0.9970 0.9941 0.9787 0.9793k =73>> caosongci(0.00001,1.9)ans =Columns 1 through 120.9793 0.9787 0.9941 0.9970 0.9989 0.9995 0.9998 0.9999 1.0000 1.0000 1.0000 1.0000Columns 13 through 200.9999 0.9998 0.9995 0.9989 0.9970 0.9941 0.9787 0.9793k =150第二题实验结果:1.雅克比迭代法:>> p211_1_JJ(6)Now Jacobi method!Start with the vector that (0, 0, 0, ...)^Tans =2.4500 1.1036 0.6265 0.4060 0.2831 0.2071>> p211_1_JJ(8)Now Jacobi method!Start with the vector that (0, 0, 0, ...)^Tans =2.7179 1.4101 0.8524 0.5809 0.4221 0.3198 0.24970.1995>> p211_1_JJ(10)Now Jacobi method!Start with the vector that (0, 0, 0, ...)^Tans =Columns 1 through 92.9290 1.6662 1.0517 0.7423 0.5554 0.4315 0.34450.2807 0.2325Column 100.19512.SOR迭代法:n=6, ω=1,1.25,1.5的时候>> p211_1_SOR(6, 1)Now Successive Over Relaxtion method!Start with the vector that (0, 0, 0, ...)^Tans =2.4500 1.1036 0.6265 0.4060 0.2831 0.2071>> p211_1_SOR(6, 1.25)Now Successive Over Relaxtion method!Start with the vector that (0, 0, 0, ...)^Tans =3.0625 0.2310 0.8704 0.3389 0.3141 0.2097>> p211_1_SOR(6, 1.5)Now Successive Over Relaxtion method!Start with the vector that (0, 0, 0, ...)^Tans =3.6750 -1.1009 2.0106 -0.3994 0.7670 -0.0384与n=8, ω=1,1.25,1.5的时候>> p211_1_SOR(8, 1)Now Successive Over Relaxtion method!Start with the vector that (0, 0, 0, ...)^Tans =2.7179 1.4101 0.8524 0.5809 0.4221 0.3198 0.24970.1995>> p211_1_SOR(8, 1.25)Now Successive Over Relaxtion method!Start with the vector that (0, 0, 0, ...)^Tans =3.3973 0.4887 1.0898 0.5062 0.4501 0.3203 0.25730.2042>> p211_1_SOR(8, 1.5)Now Successive Over Relaxtion method!Start with the vector that (0, 0, 0, ...)^Tans =4.0768 -0.9424 2.2923 -0.2753 0.9252 0.0578 0.40710.1275与n=10, ω=1,1.25,1.5的时候>> p211_1_SOR(10, 1)Now Successive Over Relaxtion method!Start with the vector that (0, 0, 0, ...)^Tans =Columns 1 through 92.9290 1.6662 1.0517 0.7423 0.5554 0.4315 0.34450.2807 0.2325Column 100.1951>> p211_1_SOR(10, 1.25)Now Successive Over Relaxtion method!Start with the vector that (0, 0, 0, ...)^Tans =Columns 1 through 93.6612 0.7098 1.2835 0.6617 0.5807 0.4299 0.35060.2844 0.2363Column 100.1984>> p211_1_SOR(10, 1.5)Now Successive Over Relaxtion method!Start with the vector that (0, 0, 0, ...)^Tans =Columns 1 through 94.3935 -0.7958 2.5326 -0.1523 1.0720 0.1565 0.50500.2041 0.2819Column 100.17666)实验结果分析与小结本次实习主要是学会应用雅克比迭代法、高斯—赛德尔迭代法、SOR迭代法三种迭代法,并且了解三种迭代法的性质以及迭代精度等。