(给学生)第五章线性方程组的迭代解法

合集下载

数值分析课件-数值分析14-线性方程组的迭代法

数值分析课件-数值分析14-线性方程组的迭代法

a13 L a23 L 0L
O
a1n a2n
a3n M
0
0
a12 a11
a13 L a11
a1n a11
a21 a22
0
a23 L a22
a2 n a22
BJ
a31 a33
a32 a33
0
L
a3n a33
M
M
M
OM
an1 ann
an2 ann
an3 ann
j 1
n
aij x(jk )
j i1
bi )
x ( k 1) 1
1 a11
(a12 x2(k)
a13 x3(k )
a14 x4(k )
a1n xn(k )
b1 )
x ( k 1) 2
1 a22
(a21 x1(k1)
a23 x3(k )
a24 x4(k )
a2n xn(k )
b2 )
x ( k 1) 2
2
得 x(1) = ( 0.5000, 2.8333, -1.0833 )T
M
x(9) = ( 2.0000, 3.0000, -1.0000 )T
举例(续)
SOR 迭代格式
x1( k x2( k
1) 1)
x(k) 1
x(k) 2
1
2 x1(k)
x(k) 2
2
8
x ( k 1) 1
Jacobi 迭代
令 A = D - L- U, 其中 D diag(a11, a22,K , ann),
0
L
a21
M
an1
0 a12 L
0 OO
,

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

第五章 解线性方程组的迭代解法
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 或

计算方法3_线性方程组迭代解法

计算方法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个未知数的值。

数值分析5.1

数值分析5.1

湘潭大学数学与计算科学学院
10
定理5.3 矩阵的从属范数具有下列基本性质:
1) A 0 ,当且仅当 A0时, A 0 2) R ,
A | | A
A x A x
n n 3 )A B A B , A , B R ;
4) 5)
x Rn 时
A B A B , A 、B Rnn
T 2
1 3 1 2 1 0 1 4 A A 24 34 1 4 2 0
1 5 2 2 1
A ( A A ) 1 52 2 1 5 . 4 6 2
T
湘潭大学数学与计算科学学院 13
定理5.3中的性质 1), 2) 和 3)是一般范数所满 足的基本性质,性质 4)、5) 被称为相容性条件, 一般矩阵范数并不一定满足该条件.
湘潭大学数学与计算科学学院 11
三种从属范数计算:
(1)矩阵的1-范数(列和范数):
A1 m ax | aij |
j i1 n
i
n
(2)矩阵的 -范数(行和范数): A m ax | aij |
j1
(3)矩阵的2-范数: 其中
1
A 2 1
T A A 的最大特征值 :
湘潭大学数学与计算科学学院
12

1 2 求 A , p 1 ,2 , 已知矩阵 A , p 3 4
A1 6
解:பைடு நூலகம்按定义
T
A 7
1 0 1 4 I A A 3 0 4 0 1 4 2 0
第五章 线性代数方程组的解法
5.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 。

高斯-赛德尔法--数值分析线性方程组的迭代解法

高斯-赛德尔法--数值分析线性方程组的迭代解法
高斯赛德尔法数值分析线性方程组的迭代解法线性方程组的迭代解法迭代法求解线性方程组高斯赛德尔迭代法高斯赛德尔迭代法原理高斯赛德尔迭代赛德尔迭代法线性方程组的解法pkpm线性方程组解法非线性方程数值解法
实验六、高斯-塞德尔法
一、实验目的
通过本实验学习线性方程组的迭代解法。掌握高斯-赛德尔迭代法编程。
二、计算公式
}
if(k==T)printf("\nNo");
else
printf("\n",k);
for(i=0;i<M;i++)
printf("x(%d)=%15.7f\n",i+1,x[i]);
}
四、例题
书P189页例6:用高斯-塞德尔迭代解线性方程组:
取 使得
#include<math.h>
#define M 3
#define N 4
main()
{
double a[M][N]={{8,-3,2,20},
{4,11,-1,33},
{6,3,12,36},
};
double x[M]={0,0,0};//初值
double r,t,q,eps=0.0000202;//需要精度
if(j!=i)q=q+a[i][j]*x[j];
x[i]=(a[i][N-1]-q)/a[i][i];
if(fabs(x[i]-t)>r)r=fabs(x[i]-t);
}
if(r<eps)break;
printf("\nk=%d,",k);
for(i=0;i<M;i++)
printf("\nx[%d]=%lf",i,x[i]);

线性代数方程组的解法

线性代数方程组的解法
上一页 下一页 3
(2) 迭代解法:所谓迭代方法,就是构造某种 极限过程去逐步逼近方程组的解.
经典迭代法有: Jacobi 迭代法、Gauss Seidel 迭代法、 逐次超松弛(SOR)迭代法等;
上一页 下一页 4
5.1.1 向量空间及相关概念和记号
1 向量的范数
设 是n维实向量空间Rn上的范数,最常用的向量
a21 x1 a22 x2 a23 x3 a24 x4 b2 ,
(1)
a31 x1 a32 x2 a33 x3 a34 x4 b3 ,
a41 x1 a42 x2 a43 x3 a44 x4 b4 .
上一页 下一页 26
若 a11 0 ,则以第 i(i 2, 3,4) 个方程减去
证明 我们只证按行严格对角占优的情形,这时有
n
aij | aii |, i 1, 2,L , n
j 1 ji
假设 Ax 0有非零解x (x1, x2,L , xn ),
则存在下标1 i n,使得 xi
max 1 jn
xj
0,
考虑 Ax 0的第i 行 ai1x1 ai2x2 L ain xn 0
j 1 ji
且至少有一 i 个使不等式严格成立,则称矩阵 A 为按行对角占优矩阵。若 i 1, 2,L , n 严格不等 式均成立,则称 A 为按行严格对角占优矩阵. 类似地,可以给出矩阵 A 为按列(严格)对角
占优矩阵的定义.
上一页 下一页 22
定理 5.8 若 A为严格对角占优矩阵,则 A非奇异.
此时 A ( AT A) 2
若 A Rnn 为对称阵, A ( A) 2 ( 因为 ( AT A) ( A2 ) )
上一页 下一页 15

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

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

(1.11)
由(1.11)式可知,雅可比迭代法计算公式简单, 每迭代一次只需计算一次矩阵和向量的乘法且计算 过程中原始矩阵A始终不变.
(1.3)式右边(若(1.3)式为等式即求得方程组的解,但一 般不满足),得到新的值 x(1)=(x1(1), x2(1), x3(1))T =(3.5, 3, 3)T ,再将x(1)分量代入(1.3)式右边得到 x(2),反复利 用这个计算程序,得到一向量序列和一般的计算公式
(迭代公式)
x (0)
2019/3/31
21
于是,解Ax=b的雅可比迭代法的计算公式为
(0) (0) (0) T x ( x , , x 1 n ) , n ( k 1) (k ) x ( b a x i i ij j ) / a ii , j 1 ji ( i 1,2, , n) ( k 0,1, 表示迭代次数).
换. 如果方程组的阶数很高, 则运算量将会很大并且大
量占用计算机资源,因此对线性方程组要求找寻更经 济、适用的数值解法.
2019/3/31 2
当A为大型稀疏矩阵方程组(A的阶数n很大,但零 元素较多), 利用迭代法求解是合适的. 本节将介绍迭代法的一些基本理论及雅可比 迭代法,高斯-赛德尔迭代法,超松弛迭代法,而 超松弛迭代法应用很广泛。
将A分裂为 A=M-N. (1.8)
其中,M为可选择的非奇异矩阵,且使Mx=d容易求 解,一般选择A的某种近似,称M为分裂矩阵.
2019/3/31 13
于是,求解Ax=b转化为求解Mx=Nx+b ,即求解
Ax b 求解 x M Nx M b.
可构造一阶定常迭代法
1
1
x ( 0 ) (初始向量), ( k 1) (k ) x Bx f ( k 0,1, , n),
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

⎡10 −1 −2⎤ ⎡ x1 ⎤ ⎡7.2⎤
⎢⎢−1
10
−2⎥⎥
⎢ ⎢
x2
⎥ ⎥
=
⎢⎢8.3⎥⎥
⎢⎣−1 −1 5 ⎥⎦ ⎢⎣x3 ⎥⎦ ⎢⎣4.2⎥⎦
试用 Jacobi 迭代法求解,使得 x(k+1) − x(k) < 10−3 。 ∞
解:程序见下页,结果: k= 7 x=
1.099811159 1.199811158 1.29977665
0⎥
gJ = D−1b = ⎢⎢1.5⎥⎥ ⎢⎣ 2 ⎥⎦
⎢⎣ 5 5 ⎦⎥
计算方法第五章
9
原方程改写为
⎡ x1 ⎤ ⎡ 0 0.2 0.1⎤ ⎡ x1 ⎤ ⎡0.3⎤
⎢ ⎢
x2
⎥ ⎥
=
Hale Waihona Puke ⎢⎢0.200.1⎥⎥
⎢ ⎢
x2
⎥ ⎥
+
⎢⎢1.5
⎥ ⎥
⎢⎣ x3 ⎥⎦ ⎢⎣0.2 0.4 0 ⎥⎦ ⎢⎣ x3 ⎥⎦ ⎢⎣ 2 ⎥⎦
第五章 方程组的迭代解法
5.1 引言 5.2 线性方程组的迭代解法 5.3 非线性方程组的迭代解法
计算方法第五章
1
5.1 引言
• 直接法是通过有限步运算后得到线性方程组的 解,解线性方程组还有另一种解法,称为迭代 法,它的基本思想是将线性方程组 Ax=b 化 为 x = Bx + g
• 再由此构造向量序列{x (k)}:
end if norm(x-x0,inf)<ep, break; end; x0=x;k=k+1; end if k==N,warning('已达到迭代次数上限');end disp(['k= ',num2str(k)]), x
x2(
k
+1)
=
−1 a22
(a21 x1(k+1)
+
a23 x3(k )
+"+
a2n xn(k )

b2 )
⎪ ⎪
#
⎪ ⎪
xn(
k
+1)

=
−1 ann
(an1 x1(k+1)
+"+
a x (k+1) n,n−1 n−1

bn )
计算方法第五章
14
就是
∑ ∑ x(k+1) i
=
1 aii
(bi

i −1
for i=1:n
x(i)=(b(i)-A(i,[1:i-1,i+1:n])*x0([1:i-1,i+1:n]))/A(i,i);
end
if norm(x-x0,inf)<ep,break;end
x0=x;k=k+1;
end if k==N,Warning('已达到迭代次数上限');end disp(['k= ',num2str(k)]),x
end
if k==N,Warning('已达到迭代次数上限');end
disp(['k= ',num2str(k)]),x
计算方法第五章
11
例2 试用Jacobi迭代法解线性方程组
⎡ 0.76
⎢ ⎢
−0.0
⎢−0.14
⎢⎣−0.16
−0.01 0.88 −0.03 0.06
−0.14 −0.03 1.01 −0.12
+
0.4 x2(k+1)
+
2
x 取初值 (0) = (0, 0, 0)T,迭代到第6次得
x(6) = (1.000, 2.000, 3.000)T
显然,Seidel迭代法收敛速度快。
计算方法第五章
16
用 Gauss-Seidel 迭代法解线性方程组程序
%maseidel.m function x=maseidel(A,b,x0,ep,N) %用途:用 Gauss-Seidel 迭代法解线性方程组 Ax=b %格式:x=maseidel(A,b,x0,ep,N) A 为系数矩阵,b 为右端向量, % x0 为初始向量(默认零向量),ep 为精度(默认 1e-6),N 为迭代次数上限 %(默认 500 次),x 返回近似解向量 n=length(b);if nargin<5,N=500;end;if nargin<4,ep=1e-6;end if nargin<3,x0=zeros(n,1);end;x=zeros(n,1); k=0; while k<N
计算方法第五章
⎧ ⎪⎪ ⎨ ⎪
x (k+1) 1
x (k+1) 2
= = #
(b1 (b2
− (a12 x2(k ) − (a21 x1(k )
+ " + a1n xn(k) )) + a23 x3(k ) + " +
/ a11 a1n xn(k ) ))
/
a22
8 ⎪⎩ xn(k+1)
=
(bn

(an1 x1(k )
BJ
=
I

D−1 A =
⎢ ⎢
⎢⎣
1
⎥ ⎥

⎢ ⎢
1⎥⎦ ⎢

1 10
⎥ ⎥
⎢⎢−2
1
⎥ ⎥
⎢⎣ −1
10 −2
−1⎥⎥ 5 ⎥⎦
⎢⎣
5 ⎥⎦
⎡ ⎢
0

2 1⎤
10
10
⎥ ⎥
⎡0
0.2 0.1⎤
⎡0.3⎤
=
⎢2 ⎢10
⎢ ⎢
1
0 2
1⎥ 10 ⎥

=
⎢⎢0.2 ⎢⎣0.2
0 0.4
0.1⎥⎥ , 0 ⎥⎦
−0.16⎤ ⎡ x1 ⎤ ⎡0.68⎤
0.06
⎥ ⎥
⎢ ⎢
x2
⎥ ⎥
=
⎢⎢1.18⎥⎥
−0.12⎥
0.72
⎥ ⎦
⎢ ⎢ ⎣
x3 x4
⎥ ⎥ ⎦
⎢0.12⎥ ⎢⎣0.74⎥⎦
解: 程序见下页,结果为:
K=13 x=
1.2715 1.2844 0.4858 1.2843
计算方法第五章
12
2
例 3:设方程组为
clear;format long;clc;
%用途:用 Jacobi 迭代法解线性方程组 Ax=b,A 为系数矩阵,b 为右端向量,
% x0 为初始向量,ep 为精度,N 为最大次数,x 是近似解向量
A=[10 -2 -1;-2 10 -1;-1 -2 5];b=[3 15 10]';N=500;ep=1e-6;
%用途:用 Jacobi 迭代法解线性方程组 Ax=b
%格式:x=majacobi(A,b,x0,ep,N) A 为系数矩阵,b 为右端向量,
% x0 为初始向量(默认零向量),ep 为精度(默认 1e-6),N 为
%(默认 500 次),x 返回近似解向量
x=zeros(n,1); k=0;
while k<N
计算方法第五章
3
⎧ ⎪ ⎪
x1
=
−1 a11
(a12 x2
+"+
a1n xn

b1 )

⎪ ⎨
x2
=
−1 a22
(a21 x1
+
a23 x3
+"+
a1n xn

b2 )
⎪ ⎪
#
⎪ ⎪ xn ⎩
=
−1 ann
(an1 x1
+"+
a x n,n−1 n−1
− bn )
于是有 Jacobi 迭代公式
计算方法第五章
x(11) = (1.0000, 2.0000, 3.0000)T
计算方法第五章
10
例 3、试用 Jacobi 迭代法解线性方程组
⎡10 −2 −1⎤ ⎡ x1 ⎤ ⎡ 3 ⎤
⎢⎢−2
10
−1⎥⎥
⎢ ⎢
x2
⎥ ⎥
=
⎢⎢15⎥⎥
⎢⎣−1 −2 5 ⎥⎦ ⎢⎣ x3 ⎥⎦ ⎢⎣10⎥⎦
-----------------------------------------------------------------------




0

⎜⎝ −an1
" −an,n−1 0 ⎟⎠
⎛0 ⎜ ⎜
−a12 0
" %
−a1n #
⎞ ⎟ ⎟
U =⎜
%

⎜ ⎜
0
−an
−1,
n
⎟ ⎟
⎜⎝ 0
0 ⎟⎠
计算方法第五章
6
1
方程组可写为
(D− L−U)x = b


Dx = (L + U )x + b
x = D−1(L + U ) x + D−1b
a x a x a x b ⎧
+
+"+
=
⎪ 11 1
12 2
1n n
1
a x a x a x b ⎪

21

+
1
+"+
相关文档
最新文档