实验5解线性方程组的迭代法

合集下载

大学数学实验报告----迭代(一)——方程求解

大学数学实验报告----迭代(一)——方程求解

Do M n , n, 2, 100
运行结果:
M n_Integer : Module y, k , m 2; k m ^ n 1 ;
x Mod k, n ;
Print n, " ", PrimeQ n , " ", x, "
", GCD m, n
Do M n , n, 2, 100
2 True 0 2 3 True 1 1 4 False 0 2 5 True 1 1 6 False 2 2 7 True 1 1 8 False 0 2 9 False 4 1 10 False 2 2 11 True 1 1 12 False 8 2 13 True 1 1 14 False 2 2 15 False 4 1 16 False 0 2 17 True 1 1 18 False 14 2 19 True 1 1 20 False 8 2 21 False 4 1 22 False 2 2 23 True 1 1 24 False 8 2 25 False 16 1 26 False 2 2 27 False 13 1 28 False 8 2 29 True 1 1 30 False 2 2 31 True 1 1 32 False 0 2 33 False 4 1 34 False 2 2 35 False 9 1 36 False 32 2 37 True 1 1 38 False 2 2 39 False 4 1 40 False 8 2
99 False 3 27 100 False 1 67 Null2
m=4 时
输入程序:
M n_Integer : Module y, k , m 4; k m ^ n 1 ; x Mod k, n ; Print n, " ", PrimeQ n , " ", GCD m, n , " ", x Do M n , n, 2, 100

计算方法-线性方程组的迭代法实验

计算方法-线性方程组的迭代法实验

实验五 线性方程组的迭代法实验一. 实验目的(1)深入理解线性方程组的迭代法的设计思想,学会利用系数矩阵的性质以保证迭代过程的收敛性,以及解决某些实际的线性方程组求解问题。

(2)熟悉Matlab 编程环境,利用Matlab 解决具体的方程求根问题。

二. 实验要求建立Jacobi 迭代公式、Gauss-Seidel 迭代公式和超松弛迭代公式,用Matlab 软件实现线性方程组求解的Jacobi 迭代法、Gauss-Seidel 迭代法和超松弛迭代法,并用实例在计算机上计算。

三. 实验内容1. 实验题目(1)分别利用Jacobi 迭代和Gauss-Seidel 迭代求解下列线性方程组,取()T 0,0,0,0,0,0=x ,要求精度510-=ε:⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡---------------626050410100141010014001100410010141001014654321x x x x x x ①Jacobi 迭代:②Gauss-Seidel迭代:(2)分别取1ω、1.05、1.1、1.25和1.8,用超松弛法求解上面的方程组,要求精度=为5ε。

=10-超松弛迭代代码如下所示:运行时初始化如下:分别以不同的松弛因子代入,W=1:W=1.05W=1.1:W=1.25W=1.8:当最大迭代次数增加时,我们可以看到,x向量的各个元素都变无穷大了,迭代发散2. 设计思想要求针对上述题目,详细分析每种算法的设计思想。

求解线性方程组的迭代法,其实质是将所给的方程组逐步地对角化或三角化,即将线性方程组的求解过程加工成对角方程组或三角方程组求解过程的重复。

⑴Jacobi迭代:将一般形式的线性方程组归结为对角方程组求解过程的重复;⑵Gauss-Seidel迭代:将一般形式的线性方程组的求解归结为下三角方程组求解过程的重复;⑶超松弛法:选择合适的松弛因子,利用旧值生成新值,使迭代加速;四.实验体会对实验过程进行分析总结,对比求解线性方程组的不同方法的优缺点,指出每种方法的设计要点及应注意的事项,以及自己通过实验所获得的对线性方程组求解问题的各种解法的理解。

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

第五章 解线性方程组的迭代解法
i 1 n 1 xi = [bi ∑ aij x j ∑ aij x j ] , i = 1, 2,, n. (*) ) aii j =1 j = i +1
定义迭代法为: 定义迭代法为:
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 或

线性方程组的迭代式求解方法

线性方程组的迭代式求解方法

线性方程组的迭代式求解方法迭代法解方程的基本原理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 。

解线性方程组的迭代法

解线性方程组的迭代法
算程序,得到一向量序列和一般的计算公式(迭代公式)
(0) (1) (k ) x1 x1 x1 (0) (1) (k ) (0) (1) (k ) x x2 , x x2 ,, x x2 , x (0) x (1) x(k ) 3 3 3
或写为 x B0 x f , 其中
0 4 B0 11 6 12 3 8 0 3 12 2 8 1 , 11 0 20 8 33 f . 11 36 12
5
( k 1) (k ) (k ) x1 (3 x2 2 x3 20) / 8, x ( k 1) (4 x ( k ) x ( k ) 33) /11, 1 3 2 ( k 1) (k ) (k ) x3 (6 x1 3x2 36) /12.
7
构造迭代法
x1( k 1) 2 x2 ( k ) 5, ( k 1) (k ) x 3 x 5. 1 2
则对任何的初始向量,得到的序列都不收敛.
对于给定方程组 x Bx f, 设有唯一解 x * ,则
x* Bx * f .
(1.5)
又设 x ( 0 ) 为任取的初始向量,按下述公式构造向量序列
4
任取初始值,例如取 x ( 0) (0, 0, 0)T .
将这些值代入(1.3) 式右边 (若(1.3)式为等式即求得
方程组的解,但一般不满足). 得到新的值
(1) (1) (1) T x (1) ( x1 , x2 , x3 ) (2.5, 3, 3)T ,
再将 x (1) 分量代入(1.3)式右边得到 x ( 2 ),反复利用这个计

常微分方程的解线性方程组的迭代法

常微分方程的解线性方程组的迭代法

实验五 解线性方程组的迭代法【实验内容】对1、设线性方程组⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫⎝⎛-=⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫⎝⎛⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫⎝⎛--------------------------2119381346323125136824381004120291372642212341791110161035243120536217758683233761624491131512013012312240010563568000012132410987654321x x x x x x x x x x()Tx 2,1,1,3,0,2,1,0,1,1*--=2、设对称正定系数阵线性方程组⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫ ⎝⎛---=⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫ ⎝⎛⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫ ⎝⎛---------------------45152292320601924336002141103520411144334310422181233416120653811414023121220024042487654321x x x x x x x x ()Tx 2,0,1,1,2,0,1,1*--=3、三对角形线性方程组⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫ ⎝⎛----=⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫ ⎝⎛⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫ ⎝⎛------------------5541412621357410000000014100000000141000000001410000000014100000000141000000001410000000014100000000141000000001410987654321x x x x x x x x x x ()Tx 1,1,0,3,2,1,0,3,1,2*---=试分别选用Jacobi 迭代法,Gauss-Seidol 迭代法和SOR 方法计算其解。

解线性方程组的迭代法

解线性方程组的迭代法

解线性方程组的迭代法Haha送给需要的学弟学妹摘要:因为理论的分析表明,求解病态的线性方程组是困难的,但是实际情况是否如此,需要我们来具体检验。

系数矩阵H 为Hilbert 矩阵,是著名的病态问题。

因而决定求解Hx b =此线性方程组来验证上述问题。

详细过程是通过用Gauss 消去法、J 迭代法、GS 迭代法和SOR 迭代法四种方法求解Hx b =线性方程组。

关键词:病态方程组、Gauss 消去法、J 迭代法、GS 迭代法、SOR 迭代法目录:一、问题背景介绍二、建立正确额数学模型 三、求解模型的数学原理1、Gauss 消去法求解原理2、Jacobi 迭代法求解原理3、G-S 迭代法求解原理4、SOR 迭代法求解原理5、Jacobi 和G-S 两种迭代法收敛的充要条件 四、计算过程(一)Hilbert 矩阵维数n=6时1、Gauss 消去法求解2、Jacobi 迭代法求解3、G-S 迭代法求解4、SOR 迭代法求解(二)Hilbert 矩阵维数n=20、50和100时1、G-S 迭代法求解图形2、SOR 迭代法求解图形 五、编写计算程序 六、解释计算结果1、Gauss 消去法误差分析2、G-S 迭代法误差分析3、SOR 迭代法误差分析G-S 迭代法与SOR 迭代法的误差比较 七、心得体会正文:一、问题背景介绍。

理论的分析表明,求解病态的线性方程组是困难的。

实际情况是否如此,会出现怎样的现象呢?二、建立正确的数学模型。

考虑方程组Hx b =的求解,其中系数矩阵H 为Hilbert 矩阵,,,1(), , ,1,2,,1i j n n i j H h h i j n i j ⨯===+-这是一个著名的病态问题。

通过首先给定解(为方便计算,笔者取x 的各个分量等于1),再计算出右端,b Hx =这样Hx b =的解就明确了,再用Gauss 消去法、J 迭代法、GS 迭代法和SOR 迭代法四种方法分别求解,Hx b =将求解结果与给定解比较,而后求出上述四种方法的误差,得出哪种方法比较好。

第五章 线性方程组的迭代法

第五章   线性方程组的迭代法
Jacobi迭代法的分量表示 记 x ( x , , x , , x ) 由Jacobi迭代公式可得: Dx

(k ) (k ) (k ) (k) T 1 i n
( k 1)
n
(L U ) x
aij x j
(k)
(k )
b ,写成分量
b (i 1, 2,, n) 于是,解 Ax b的Jacobi迭代法的计算公式为: Jacobi迭代法 由 aii 0(i 1, 2,, n) ,选取 M 为 A 的对角元素部分, 即选取 M D , D N ,可得Jacobi迭代公式: A
5.1 引言
已知其精确解为: (1,1,1) 。现将方程组改写成如下的 x 1 1 7 等价形式: x x x
* T
2 3 1 9 9 9 1 1 8 x1 x3 x2 10 10 10 1 1 13 x1 x2 x3 15 15 15
1 (k ) 1 (k ) 7 ( k 1) x x2 x3 1 9 9 9 1 (k ) 1 (k ) 8 ( k 1) 由此建立迭代格式(公式): x2 10 x1 10 x3 10 1 (k ) 1 ( k ) 13 ( k 1) x3 x1 x2 15 15 15
nn ij
xM
(0)
1
Nx M b
1
这样,可构造迭代法:
取x 为初始向量 ( k 1) (k ) x Bx f (k 0,1,)
其中: M N M (M A) I M A, f M b, 称 B I M A B 为迭代法的迭代矩阵,选取 M 阵,就得到解 Ax b 的各 种迭代法。

解线性方程组的迭代法

解线性方程组的迭代法

0.9906
0.0355
5 1.01159 0.9953
1.01159 0.01159
6 1.000251 1.005795 1.000251 0.005795
7 0.9982364 1.0001255 0.9982364 0.0017636
可见,迭代序列逐次收敛于方程组的解, 而且迭代7次得到精确到小数点后两位的近似解.
a11x1 a12x2 a13x3 b1 a21x1 a22x2 a23x3 b2 a31x1 a32x2 a33x3 b3
从而得迭代公式
x1
a12 a11
x2
a13 a11
x3
b1 a11
x2
a21 a22
x1
a23 a22
x3
b2 a22
x3
a31 a33
M 00.8 00..75
但(M)=0.8<1,所以迭代法 x(k+1)=Mx(k)+g 是收敛的.
由(3.5)式可见,‖M‖越小收敛越快,且当‖x (k) -x(k-1) ‖很小时,‖x(k) –x*‖就很小,实际中用‖x (k) x(k-1) ‖<作为
迭代终止的条件。 例如,对例1中的Jacobi迭代计算结果
+‖x(k+1) –x*‖‖M‖‖x(k) –x(k-1)‖+‖M‖‖x(k) –x*‖ 从而得‖x(k) –x*‖‖M‖‖x (k) -x(k-1) ‖/(1- ‖M‖)
(3.5) (3.6)
估计式(3.5)得证。利用(3.5)式和
‖x(k+1) 得到
-x(k)
‖‖M‖‖x
(k)
-x(k-1)

解线性方程组 的迭代法

数值分析实验报告--实验6--解线性方程组的迭代法

数值分析实验报告--实验6--解线性方程组的迭代法

1 / 8数值分析实验六:解线性方程组的迭代法2016113 张威震1 病态线性方程组的求解1.1 问题描述理论的分析表明,求解病态的线性方程组是困难的。

实际情况是否如此,会出现怎样的现象呢?实验内容:考虑方程组Hx=b 的求解,其中系数矩阵H 为Hilbert 矩阵,,,1(),,,1,2,,1i j n n i j H h h i j n i j ⨯===+-这是一个著名的病态问题。

通过首先给定解(例如取为各个分量均为1)再计算出右端b 的办法给出确定的问题。

实验要求:(1)选择问题的维数为6,分别用Gauss 消去法、列主元Gauss 消去法、J 迭代法、GS 迭代法和SOR 迭代法求解方程组,其各自的结果如何?将计算结果与问题的解比较,结论如何?(2)逐步增大问题的维数(至少到100),仍然用上述的方法来解它们,计算的结果如何?计算的结果说明了什么?(3)讨论病态问题求解的算法1.2 算法设计首先编写各种求解方法的函数,Gauss 消去法和列主元高斯消去法使用实验5中编写的函数myGauss.m 即可,Jacobi 迭代法函数文件为myJacobi.m ,GS 迭代法函数文件为myGS.m ,SOR 方法的函数文件为mySOR.m 。

1.3 实验结果1.3.1 不同迭代法球求解方程组的结果比较选择H 为6*6方阵,方程组的精确解为x* = (1, 1, 1, 1, 1, 1)T ,然后用矩阵乘法计算得到b ,再使用Gauss 顺序消去法、Gauss 列主元消去法、Jacobi 迭代法、G-S 迭代法和SOR 方法分别计算得到数值解x1、x2、x3、x4,并计算出各数值解与精确解之间的无穷范数。

Matlab 脚本文件为Experiment6_1.m 。

迭代法的初始解x 0 = (0, 0, 0, 0, 0, 0)T ,收敛准则为||x(k+1)-x(k)||∞<eps=1e-6,SOR方法的松弛因子选择为w=1.3,计算结果如表1。

实验五__解线性方程组的迭代法

实验五__解线性方程组的迭代法

实验五 解线性方程组的迭代法5.1实验目的① 掌握解线性方程组的雅可比迭代和高斯-塞德尔迭代算法;② 培养编程与上机调试能力.5.2算法步骤5.2.1迭代法的基本思想根据方程组Ax b =设计出一个迭代公式,然后将任意选取的一初始向量(0)x代入迭代公式,求出(1)x,再以(1)x 代入同一迭代公式,求出(2)x ,如此反复进行,得到向量序列(){}k x .当(){}k x 收敛时,其极限即为原方程组的解.5.2.2雅可比(Jacobi )迭代法解方程组设方程组Ax b =的系数矩阵对角线元素0(1,2,...,)ii a i n ≠=,M 为最大迭代次数,ε为容许误差. 雅可比(Jacobi )迭代法解方程组算法步骤如下:① 取初始向量(0)(0)(0)12(,,...,)T n x x x x =,令0k =.② 对1,2,...,i n =,计算(1)()11()n k k i i ij j j ii j ix b a x a +=≠=-∑. ③ 如果(1)()1n k k i i i xx ε+=-<∑,则输出(1)k x +,结束;否则执行④④ 如果k M ≥,则不收敛,终止程序;否则1k k ←+,转②5.2.3高斯-塞德尔(Gauss-Seidel)迭代法在雅可比(Jacobi )迭代法中,如果当新的分量求出后,马上用它来代替旧的分量,则可能会更快地接近方程组的准确解.基于这种设想构造的迭代公式称为高斯-塞德尔(Gauss-Seidel)迭代法. 算法可相应地从雅可比(Jacobi )迭代法改造得到.5.3实验内容应用雅可比迭代和高斯-塞德尔算法分别求解线性方程组1231231238322041133631236x x x x x x x x x -+=⎧⎪+-=⎨⎪++=⎩要求:选择不同的迭代次数,观察输出结果;5.4 实验程序:雅可比迭代:function [xk,k]=f5_Jacobi(x0,A,b,m)e=10.^(-4);[r,n]=size(x0);n=max(r,n);x0=reshape(x0,1,n);k=0;while k<mk=k+1;for i=1:nxk(i)=(b(i)-sum(A(i,:).*x0)+A(i,i)*x0(i))./A(i,i);endif sum(abs(xk-x0))<ebreak;endx0=xk;end高斯-塞德尔算法function [xk,k]=f5_Gs(x0,A,b,m)e=10.^(-5);[r,n]=size(x0);n=max(r,n);x0=reshape(x0,1,n);xk=[];k=0;while k<mk=k+1;for i=1:nxk(i)=(b(i)-sum(A(i,1:i-1).*xk(1:i-1))-sum(A(i,i+1:n).*x0(i+1:n)))./A( i,i);endif sum(abs(xk-x0))<ebreak;endx0=xk;end5.5 实验求解:在command window窗口输入如下命令求解方程组>> A=[8,-3,2;4,11,-1;6,3,12];>> b=[20;33;36];>> [xk,k]=f5_Jacobi(x0,A,b,20)xk =3.0000 2.0000 1.0000k =12>> [xk,k]=f5_Jacobi(x0,A,b,5)xk =3.0003 1.9840 1.0010k =5>> [xk,k]=f5_Gs(x0,A,b,20)xk =3.0000 2.0000 1.0000 k =8>> [xk,k]=f5_Gs(x0,A,b,5)xk =2.9998 2.0001 1.0001 k =5。

解线性方程组的迭代法实际应用

解线性方程组的迭代法实际应用

解线性方程组的迭代法实际应用
现今,互联网行业的发展速度越来越快,数据和信息的传播变得越来越重要,因此,熟练掌握并利用数据和信息变得越来越必要。

迭代法是解决线性方程组最重要的算法之一,在互联网行业中也有广泛的应用。

迭代法能够有效的求出不同的近似解,而且计算速度较快,能够满足互联网行业的快速发展。

比如运行在分布式环境中的搜索引擎,其中有大量的系统参数,如摆放有系统服务器到网络以及运行配置等,这些参数有很多线性方程组,这些线性方程组很难使用传统的数学方法来求解,而使用迭代法可以快速得到这些方程组的答案,为搜索引擎提供良好的运行环境。

另外,现代的宽带技术和视频技术极大的提高了节目的传输效率。

它们的实现依赖于复杂的线性方程,迭代法可以有效的帮助实现技术的快速发展。

此外,依靠迭代法的快速求解,将抗性算法转换为原始算法,也可以有效改进网络的性能,比如入侵检测算法中,使用迭代引入抗性算法来更新原始算法,结合专业技术确定加密规则,从而更有效的防止非法攻击。

总之,迭代法在互联网行业中发挥着重要作用,在搜索引擎、宽带技术和入侵检测算法等方面,迭代法及其所需技术都可以极大地提升网络系统的效率,确保互联网系统的可靠性和安全性,完善互联网的运作环境。

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

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

能找到一种范数成立.)
《数值分析》 主讲教师
16
证明:x *的存在性及迭代序列的收敛性已由定理给出。
同时有:x(k) x* x(k) x(k1) x(k1) x*
x(k) x(k1) x(k1) x*
x(k) x(k1) B x(k) x*
x(k) x* 1 x(k) x(k1) 1 q
设ARnn非奇异,用迭代法解方程组Ax b,首先要构 造迭代序列,可将方程改写为不动点形式x Bx f, 并由此构造迭代公式x(k1) Bx(k) f,k 0,1, , 其中B R nn称为迭代矩阵。
定义:若迭代法x(k1) Bx (k) f , k 0,1, 生成的序列{x(k)} 满足 lim x(k) x* ,x(0) R n则称迭代法收敛的。
显然有:
lim x(k) x lim x(k) x 0
k
k
(依范数 收敛)
《数值分析》 主讲教师
6
矩阵范数、谱半径
对于方阵A
aij
,有
nn
n
A
max 1in
j 1
aij
矩阵的行范数
n
A max 1 1 jn
i 1
aij
矩阵的列范数
称(A)= max 1 jn
j
xi
i 1
1 范数
x
n
1/2
x2
2 i1 i
2 范数
x
max
1in
xi
范数
一般的,定义p 范数 :
n
p 1/p
x x
p
i i 1
《数值分析》 主讲教师
4
范数的等价性:
称范数
,

计算方法 5 解线性方程组的迭代法.

计算方法 5 解线性方程组的迭代法.

( I L) Ux ( I L) f
(k )
1
1
这表明:Gauss-Seidel迭代实际上是Jacobi迭代! 上面的迭 代矩阵被称为G-S迭代法的迭代矩阵.
若方程组为:Ax=b. 则令A=D-L-U,于是
Dx ( k 1) Lx( k 1) Ux( k ) b ( D L) x( k 1) Ux( k ) b x ( k 1) ( D L)1Ux( k ) ( D L)1 b
4. 最速下降法与共轭梯度法–
解对称正定线性方程组的方法
最速下降法与共轭梯度法,是求最优化问题的重要方法. 在此,使用它们 解线性方程组。
途径:求解线性方程组问题等价地转化成求极值问题!
考察二次函数: 1 F ( x ) ( Ax, x ) (b, x ) 的极小值问题.和 线性方程组:Ax=b 之间的关系 2 如此不断地 定理4.1 设A为对称正定矩阵,则下列两个问题等价 修正下去 1 * x*是极值问题 min F ( x ) ( Ax , x ) ( b , x ) 的解 x 是Ax b的解. xR n 2 * x 引理 设 ( ) F ( x* x ),
x Bx f xi bij x j fi , i 1,
构造迭代格式
j 1
n
, n.
1. 各分量的计算顺序无关。 2. 迭代格式仅有前后两步有关。 3. 新的近似解是已知近似解的线性函数。
任取初始向量x (0) , 给出迭代格式 x ( k 1) Bx ( k ) f xi( k 1) bij x (j k ) fi ,
1) 最速下降法或梯度法
如何选择搜索方向?
函数值增加最快的方向 F ( x k )

解线性方程组的迭代法

解线性方程组的迭代法

G的特征值分别为: 0.308507, 0.154254 + 0.18304 i, 0.154254 0.18304 i
G的谱半径(G)= 0.308507 <1.Jacobi迭代收敛。
上海理工大学
University of Shanghai for Science and Technology
n 1 i 1 ( k 1) (k ) ( aij x j aij x j bi ) aii j 1 j i 1
上海理工大学
University of Shanghai for Science and Technology
College of Science
理学院
Gauss-Siedel迭代算法
上海理工大学
University of Shanghai for Science and Technology
College of Science
理学院
Jacobi迭代
a11 x1 a1n xn b1 a x a x b nn n n n1 1
上海理工大学
University of Shanghai for Science and Technology
College of Science
理学院
迭代矩阵为
0 1 G 3 11 6
6 0 1 6
1 2 5 0
G的特征值为:1=4.02408, 2=2.01204 3.10115 i, 1=4.02408; 2,3=3.69668 G的谱半径(G)=4.0197>1. Jacobi迭代不收敛。
x1 x2 xn 1 (a12 x2 a1n xn b1 ) a11 1 (a21 x1 a23 x3 a1n xn b2 ) a22 1 (an1 x1 an n 1 xn 1 bn ) ann
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

西华数学与计算机学院上机实践报告
课程名称:数值计算方法B
年级:2009级 上机实践成绩: 指导教师:严常龙
姓名: 上机实践名称:解线性方程组的迭代法
学号: 上机实践日期:yyyy.mm.dd 上机实践编号:5
上机实践时间: 一、目的
1.通过本实验加深对Jacobi 迭代法、Gauss-Seidel 迭代法的构造过程的理解;
2.能对上述三种迭代法提出正确的算法描述编程实现,进一步理解迭代法的改进过程;
二、内容与设计思想
自选线性方程组,编制一个程序,分别用Jacobi 迭代法、Gauss-Seidel 迭代法求解,比较两种迭代
法收敛速度的快慢。

三、使用环境
操操作系统:
软件环境:
四、核心代码及调试过程
题目要求,求解下面的方程组,分别用Jacobi 迭代法、Gauss-Seidel 迭代法求解
⎪⎪⎩
⎪⎪⎨
⎧=+++=-++=+-+=+-+9.369.57.34.05.16
.163.11.89.06.58.18.25.33.63.11.155.04.43.22.74321432143214321x x x x x x x x x x x x x x x x Jacobi 迭代法
#include <stdio.h>
#include <math.h>
void main()
{ { double a[4][4]={{7.2,2.3,-4.4,0.5},{1.3,6.3,-3.5,2.8},
{5.6,0.9,8.1,-1.3},{1.5,0.4,3.7,5.9}},b[4]={15.1,1.8,16.6,36.9};
double x[4]={0,0,0,0},y[4],sum,z;
int i,j,k,n=4;
for (k=0;k<100;k++)
{ for(i=0;i<n;i++)
{ sum=0;
for(j=0;j<n;j++)
{if(j!=i) sum=sum+a[i][j]*x[j]; } y[i]=(b[i]-sum)/a[i][i];
}
for(i=0;i<n;i++)
{printf("x%d=%-10f",n+1,y[i]);}
printf("\n");
z=fabs(y[0]-x[0]);
for(i=0;i<n;i++)
if(z<fabs(y[i]-x[i]))
z=fabs(y[i]-x[i]);
if(z<10e-6)
{printf("die dai ci shu k=%d\n",k+1); printf("the result is:\n");
for(i=0;i<n;i++)
printf("x%d=%-10f",i+1,y[i]);
printf("\n"); break; }
else
for(i=0;i<n;i++)
x[i]=y[i];
}
}
Gauss-Seidel迭代法
#include <stdio.h>
#include <math.h>
void main()
{ double a[4][4]={{7.2,2.3,-4.4,0.5},{1.3,6.3,-3.5,2.8},
{5.6,0.9,8.1,-1.3},{1.5,0.4,3.7,5.9}},b[4]={15.1,1.8,16.6,36.9}; double x[4]={0,0,0,0},sum1,sum2;
int i,j,k,n=4;
for (k=0;k<5;k++)
{ for(i=0;i<n;i++)
{ sum1=0;sum2=0;
for(j=0;j<i-1;j++)
{ sum1=sum1+a[i][j]*x[j];
}
for(j=i+1;j<n;j++)
{sum2=sum2+a[i][j]*x[j];}
x[i]=(b[i]-sum1-sum2)/a[i][i];
}
for(i=0;i<n;i++)
{ printf("x%d=%-15f",i+1,x[i]);}
printf("\n");
}
}
五、总结
加深对Jacobi迭代法、Gauss-Seidel迭代法的构造过程的理解。

对Jacobi迭代法、Gauss-Seidel迭代法提出正确的算法描述编程实现,进一步理解迭代法的改进过程六、附录。

相关文档
最新文档