线性方程组的数值解
第二章 线性方程组的数值解法
第二章 线性方程组的数值解法在科技、工程技术、社会经济等各个领域中很多问题常常归结到求解线性方程组。
例如电学中的网络问题,样条函数问题,构造求解微分方程的差分格式和工程力学中用有限元方法解连续介质力学问题,以及经济学中求解投入产出模型等都导致求解线性方程组。
n 阶线性方程组的一般形式为⎪⎪⎩⎪⎪⎨⎧=+++=+++=+++nn nn n n n n n n b x a x a x a b x a x a x a b x a x a x a L K K K K L L 22112222212********* (1.1) 其矩阵形式为b Ax = (1.2) 其中⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=n n nn n n n n b b b b x x x x a a a a a a a a a A M M L K K K K L L 2121212222111211),,2,1,(n j i a ij L =,),,2,1(n i b i L =均为实数,i b 不全为0,且A 为非奇异。
关于线性方程组的数值解法一般分为两类:1.直接法 就是不考虑计算机过程中的舍入误差时,经有限次的四则运算得到方程组准确解的方法。
而实际中由于计算机字长的限制,舍入误差的存在和影响,这种算法也只能求得线性方程组的近似解。
本章将阐述这类算法中最基本的消去法及其某些变形。
这些方法主要用于求解低阶稠密系数矩阵方程组。
2.迭代法 从某个解的近似值出发,通过构造一个无穷序列,用某种极限过程去逐步逼近线性方程组的精确解的方法。
本章主要介绍迭代法与迭代法。
迭代法是解大型稀疏矩阵(矩阵阶数高而且零元素较多)的线性方程组的重要方法。
§1 高斯)(Gauss 消去法1.1 Gauss 消去法Gauss 消去法是将线性方程组化成等价的三角形方程组求解。
首先举例说明Gauss消去法的基本思想和过程。
线性代数方程组的数值解法讨论
线性代数方程组的数值解法讨论解线性方程组的方法,主要分为直接方法和迭代方法两种。
直接法是在没有舍入误差的假设下能在预定的运算次数内求得精确解。
而实际上,原始数据的误差和运算的舍入误差是不可以避免的,实际上获得的也是近似解。
迭代法是构造一定的递推格式,产生逼近精确解的序列。
对于高阶方程组,如一些偏微分方程数值求解中出现的方程组,采用直接法计算代价比较高,迭代法则简单又实用,因此比较受工程人员青睐。
小组成员本着工程应用,讨论将学习的理论知识转变为matlab 代码。
讨论的成果也以各种代码的形式在下面展现。
1 Jacobi 迭代法使用Jacobi 迭代法,首先必须给定初始值,其计算过程可以用以下步骤描述: 步骤1 输入系数矩阵A ,常熟向量b ,初值(0)x ,误差限ε,正整数N ,令1k =.步骤2 (0)11ni i ij jj ii j i x b a x a =≠⎡⎤⎢⎥=-⎢⎥⎢⎥⎣⎦∑,(0)j x 代表(0)x 的第j 个分量。
步骤3 计算11ni i ij j j ii j i y b a x a =≠⎡⎤⎢⎥=-⎢⎥⎢⎥⎣⎦∑,判断1max i i i n x y ε≤≤-<,如果是,则结束迭代,转入步骤5;否则,转入步骤4。
步骤4 判断k N =?如果是,则输出失败标志;否则,置1k k =+,i i x y ⇐,1,2,,i n =,转入步骤2。
步骤5 输出12,,n y y y 。
雅可比迭代代码function [x,k]=Fjacobi(A,b,x0,tol)% jacobi 迭代法 计算线性方程组% tol 为输入误差容限,x0为迭代初值max1= 300; %默认最多迭代300,超过要300次给出警告 D=diag(diag(A)); L=-tril(A,-1);U=-triu(A,1); B=D\(L+U); f=D\b; x=B*x0+f;k=1; %迭代次数while norm(x-x0)>=tol x0=x;x=B*x0+f; k=k+1;if(k>=max1)disp('迭代超过300次,方程组可能不收敛'); return; end%[k x'] %显示每一步迭代的结果 End2 高斯赛德尔迭代由Jacobi 迭代法中,每一次的迭代只用到前一次的迭代值,若每一次迭代充分利用当前最新的迭代值,即在计算第i 个分量(1)k i x +时,用最新分量11()k x +,12()k x +…(1)1k i x +-代替旧分量)1(k x ', )2(k x …)3(k x 就得到高斯赛德尔迭代格式,其数学表达式为:1(1)(1)()111(1,2,,)i n k k k ii ij j ij j j j i ii xb a x a x i n a -++==+⎛⎫=--= ⎪⎝⎭∑∑具体形式如下:()()()(1)()()()11221331111(1)(1)()()22112332222(1)(1)(1)(1)(1)112233,11111k k k k n n k k k k n n k k k k k n n n n n n n n nnx a x a x a x b a x a x a x a x b a x a x a x a x a x b a ++++++++--=----+=----+⋯⋯⋯⋯⋯⋯=-----+矩阵形式表示为:()(1)1(1)()(0,1,2,,),k k k k n +-+=++=x D Lx Ux b将(1)(1)()(0,1,2,,)k k k k n ++=++=Dx Lx Ux b 移项整理得: (1)1()1()()(0,1,2,,))k k x D L Ux D L b k n +--=-+-=记11(),()--=-=-M D L U g D L b ,则(1)()k k x x +=+M g高斯塞德尔迭代function [x,k]=Fgseid(A,b,x0,tol)%高斯-塞德尔迭代法 计算线性方程组 % tol 为误差容限max1= 300; %默认最高迭代300次D=diag(diag(A)); L=-tril(A,-1); U=-triu(A,1); G=(D-L)\U; f=(D-L)\b; x=G*x0+f;k=1; while norm(x-x0)>=tol x0=x;x=G*x0+f; k=k+1;if(k>=max1)disp('迭代次数太多,可能不收敛'); return; end% [k,x'] %显示每一步迭代结果 End3 超松弛迭代法在工程中最常遇到的问题便是线性代数方程组的求解,而线性代数方程组的求解一般可以分为两类,一类是直接法(精确法),包括克莱姆法则方法、LD 分解法等,另一类是迭代法(近似法),包括雅克比迭代法、高斯迭代法、超松弛迭代法等。
数值计算08-线性方程组数值解法(优选.)
0
(k=1,2,…,n) ,则可通过高斯消元法求出Ax=b 的解。
引理
A的主元素
a(k) kk
0
(k=1,2,…,n) 的充要条件
是矩阵A的各阶顺序主子式不为零,即
a11
a1k
D1 a11 0 Dk
0, k 2, 3, , n
ak1
akk
定理2 Ax=b 可用高 斯消元法求解的充分必要条件是: 系数矩阵 A 的各阶顺序主子式均不为零。
Page 5
线性代数方程组的计算机解法常用方法:
直接法 迭代法
消去法 矩阵三角分解法
Page 6
直接法:经过有限步算术运算,可求得方程组
的精确解的方法(若在计算过程中没有舍入误差)
迭代法:用某种极限过程去逐步逼近线性方程
组精确解的方法 迭代法具有占存储单元少,程序设计简单,原
始系数矩阵在迭代过程中不变等优点,但存在收 敛性及收敛速度等问题
a(k) ik
a(k) kk
aijk
mik
a
k
kj
bik1 bik mikbkk
xn
bnn annn
bii
n
a
i
ij
x
j
,
xi
ji1
aiii
i, j k 1, k 2,, n
i n 1,,2,1
高斯消元法的条件
Page 20
定理1
如果在消元过程中A的主元素
a(k) kk
即:
a111
a112 a222
a11n a22n
x1 x2
bb1212
an22
an2n
xn
bn2
其中:
第2章 线性方程组的数值解法
第2章 线性方程组的数值解法2.1 引言在自然科学研究和工程技术的应用中,许多问题的解决,诸如非线性问题线性化、求微分方程的数值解最终都归结为线性方程组的求解问题. 我们在后面章节中的样条插值、曲线拟合、数值代数等,也需要求解线性方程组。
一般地,设n 阶线性方程组(linear system of equations of order n )为11112211211222221122,,,n n n n n n nn n n a x a x a x b a x a x a x b a x a x a x b +++=⎧⎪+++=⎪⎨⎪⎪+++=⎩ (2.1.1) 表示成矩阵形式=Ax b , (2.1.2)其中()111212122212n n ij n nn n nn a a a a a a a a a a ⨯⎡⎤⎢⎥⎢⎥==⎢⎥⎢⎥⎣⎦ A ,12n x x x ⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎣⎦ x ,12n b b b ⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎣⎦b , (2.1.3) A 为系数矩阵(coefficient matrix).目前在计算机上经常使用的、简单有效的线性方程组的数值解法大致分为两类:直接法(direct method)和迭代法(iterative method). 其中直接法适用于以稠密矩阵为系数矩阵的中低阶线性方程组,而迭代法主要用于求解以稀疏矩阵为系数矩阵的高阶线性方程组。
本章首先介绍解线性方程组的两种常用的直接法:Gauss 消去法与矩阵三角分解法;然后介绍解线性方程组的三种常用的迭代法:Jacobi 迭代法、Gauss-Seidel 迭代法、超松弛法(SOR 法),并讨论它们的收敛性。
最后,讨论了线性方程组的性态。
2.2 Gauss 消去法Gauss 消去法(Gaussian elimination method )的基本思想是使用初等行变换将方程组转化为一个同解的上三角形方程组,再通过回代,求出该三角形方程组的解.2.2.1 Gauss 消去法Gauss 消去法包括消元和回代两个过程. 下面先举例说明Gauss 消去法求解线性方程组的主要过程.例2.2.1 求解线性方程组123123123471,2581,3611 1.x x x x x x x x x ++=⎧⎪++=⎨⎪++=⎩ 解 将该线性方程组写成增广矩阵(augmented matrix)的形式1471258136111⎡⎤⎢⎥⎢⎥⎢⎥⎣⎦用Gauss 消去法求解过程如下:1.消元过程12213323323214711471147125810361036136111061020020r r r r r r r r r -+→-+→-+→⎡⎤⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥−−−−→---−−−−→---⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥---⎣⎦⎣⎦⎣⎦,从而原方程组等价地变为上三角形方程组123233471,361,20.x x x x x x ++=⎧⎪--=-⎨⎪=⎩2.回代过程从第3 个方程解出30x =,将其代入第2 个方程得()2216/31/3x x =--+=,再将30x =及21/3x =回代到第1个方程,解出1231471/3x x x =--=-. 从而得到原方程组的解123113,0.x x x =-==对于一般线性方程组(2.1.1),使用Gauss 消去法求解分为以下两步:1.消元过程为方便起见,记()(0)(0),ijn na ⨯==A A ()T(0)(0)(0)(0)1,12,1,1,,,n n n n a a a +++== b b ,则方程组(2.1.1)为()()()()()()()()()()()()000011112211,1000021122222,100001122,1,,.n n n n n n n n nn n n n a x a x a x a a x a x a x a a x a x a x a +++⎧+++=⎪+++=⎪⎨⎪⎪+++=⎩ (2.2.1) 第1次消元:若()0110a ≠,对方程组(2.2.1) 执行初等行变换11i i i r l r r -→, 2,3,,i n = ,得第1个导出方程组——————————————————————————高斯 (Carl Friedrich Gauss 1777年4月30 日 – 1855年2月23 ) 是德国数学家、天文学家,在许多科学领域都做出了杰出的贡献,他为现代数论、微分几何(曲面论)、误差理论等许多数学分支奠定了基础. 他的数学研究以简明、严谨、完美而著称于世. 他在数学上与阿基米德、牛顿和欧拉齐名,被称为“数学王子”,被公认为有史以来最伟大的数学家之一.()()()()()()()()()()000011112211,111122222,111122,1,,,n nn n n n n nn n n n a x a x a x a a x a x a a x a x a +++⎧+++=⎪⎪++=⎨⎪⎪++=⎩(2.2.2)其中()()1111/i i l a a =,()()()10011,2,3,,;2,3,, 1.ij ij i j a a l a i n j n =-==+第2次消元:若()1220a ≠,对方程组(2.2.2)执行初等行变换22,i i i r l r r -→ 3,4,,i n = ,得第2个导出方程组()()()()()()()()()()()()()()()0000011112213311,1111122223322,122233333,122233,1,,,,n nn n n n n nn n nn nn n a x a x a x a x a a x a x a x a a x a x a a x a x a ++++⎧++++=⎪⎪+++=⎪⎪++=⎨⎪⎪⎪++=⎪⎩(2.2.3)其中()()112222/i i l a a =,()()()21122,3,4,,;3,4,, 1.ij ij i j a a l a i n j n =-==+第k 次消元:若()10k kka -≠,对第1k -个导出方程组执行初等行变换i ik k i r l r r -→,1,2,,i k k n =++ , 得第k 个导出方程组()()()()()()()()()()()()()()()000001111221,1111,110112221,1122,11,111,1,1,11,1,,,,k k n nn k k n n n k k k k k k k n nk n k k k n k k nn n n n a x a x a x a x a a x a x a x a a x a x a a x a x a +++++++++++++++⎧+++++=⎪⎪++++=⎪⎪⎨++=⎪⎪⎪⎪++=⎩(2.2.4)其中()()11k k ik ikkkl a a --=,()()()11,k k k ij ij ik kj a a l a --=- 1,,;1,, 1.i k n j k n =+=++ 重复上述过程1n -次,得到第1n -个导出方程组()()()()()()()()()()()()()()0000011112213311,1111122223322,122233333,111,1,,,.n n n n n n n nn n n nn nn n a x a x a x a x a a x a x a x a a x a x a a x a +++--+⎧++++=⎪⎪+++=⎪⎪++=⎨⎪⎪⎪=⎪⎩(2.2.5)其中()()()()()1111,,1,2,,1;1,,;1,, 1.k k kk k ik ikkkij ijik kjl a a a a l a k n i k n j k n ----==-=-=+=++ (2.2.6)这样,通过消元过程就将方程组(2.1.1)化成了等价的上三角形方程组(2.2.5).2.回代过程回代过程就是求上三角形方程组(2.2.5)的解. 若()10n nna -≠,则从最后一个方程开始,先求出()()11,1,/n n n n n n n x a a --+=,再由第1n -个方程解出1n x -,依此类推可解出221,,,n x x x - . 一般(2.2.7)定义 2.2.1 由式(2.2.2)-(2.2.7)确定的求解线性方程组的算法称为Gauss 消去法(Gaussian elimination method),包括消元(elimination)和回代(backward substitution)两个过程。
数值计算方法第3章解线性方程组的数值解法1
,i
2 ,3 ,...,
n
a
(1 11
)
A( 1) A ( 2 )
a (1) 11
a (2) 22
...... ......
......
a (2) n2
......
a a
(1) 1n
(2) 2n
a
(2 nn
)
b (1)
b (2)
[
b
( 1
1
)
b (2) 2
a(k) kk
...
a(k) kn
... ... ...
...
...
a(n) nn
b1(1) b2(2)
...
bk(k)
...
bn(n)
21
高斯顺序消去法
也就是对于方程组AX=b系数矩阵做:
ai(jkl1i)k
a(k) ik
a(k) ij
/
a(k) kk
3)顺序消元
31
高斯列主元消去法
第k步
从A ( k ) 的第
k
列
a (k) kk
,a (k) k 1k
,...a
(k) nk
中选取绝对值
最大项,记录所在行,即
|a(k) ikk
|m kina|axi(kk)
|
记 lik
若 l k 交换第k行与l行的所有对应元素,再 进行顺序消元。
32
其中, lii 0, i 1,2,..., n
(1)
10
高斯顺序消元法
线性方程组的四种数值解法
线性方程组的四种数值解法(电子科技大学物理电子学院,四川 成都 610054)摘要:本文介绍了四种求解线性方程组的数值解法: 雅克比迭代法、高斯赛德尔迭代法、高斯消去法和改进的平方根法的基本原理和算法流程,通过求解具体方程,对四种求解方法进行了对比。
对于雅克比迭代法和高斯赛德尔迭代法,研究了两种算法对求解同一方程组的迭代效率差异,结果表明高斯赛德尔迭代法达到同样精度所需迭代次数较少。
对于高斯消去法,通过选择列主元的方法提高算法的准确度,计算结果表明高斯消去法计算精确,且运算复杂度也不是很高。
对于改进的平方根法,其运算复杂度低,但对于给定的方程组有着严苛的要求。
关键词:雅克比迭代法;高斯赛德尔迭代法;高斯消去法;改进的平方根法;线性方程组引言线性方程组的求解在日常生活和科研中有着极其重要的应用,但在实际运算中,当矩阵的维数较高时,用初等方法求解的计算复杂度随维数的增长非常快,因此,用数值方法求解线性方程组的重要性便显现出来。
经典的求解线性方程组的方法一般分为两类:直接法和迭代法。
前者例如高斯消去法,改进的平方根法等,后者的例子包括雅克比迭代法,高斯赛德尔迭代法等。
这些方法的计算复杂度在可以接受的范围内,因此被广泛采用。
一般来说,直接法对于阶数比较低的方程组比较有效;而后者对于比较大的方程组更有效。
在实际计算中,几十万甚至几百万个未知数的方程组并不少见。
在这些情况下,迭代法有无可比拟的优势。
另外,使用迭代法可以根据不同的精度要求选择终止时间,因此比较灵活。
在问题特别大的时候,计算机内存可能无法容纳被操作的矩阵,这给直接法带来很大的挑战。
而对于迭代法,则可以将矩阵的某一部分读入内存进行操作,然后再操作另外部分。
本文使用上述四种算法求解对应的方程组,验证各种算法的精确度和计算速度。
1 算法介绍1.1 雅克比迭代法 1.1.1 算法理论设线性方程组(1)b Ax的系数矩阵A 可逆且主对角元素 均不为零,令并将A 分解成(2)从而(1)可写成令其中. (3)以B 1为迭代矩阵的迭代法(公式)(4)称为雅克比(Jacobi)迭代法(公式),用向量的分量来表示,(4)为(5)其中为初始向量.1.1.2 算法描述 1给定迭代初始向量X 0以及误差要求delta 2根据雅克比迭代公式计算出下一组向量3判断X 是否满足误差要求,即||X k+1 – X k || < delta4若误差满足要求,则停止迭代返回结果;若否,则返回第二步进行下一轮迭代1.2 高斯赛德尔迭代法nna ,...,a ,a 2211()nna ,...,a ,a diag D 2211=()D D A A +-=()b x A D Dx +-=11f x B x +=b D f ,A D I B 1111--=-=()()111f x B x k k +=+⎩⎨⎧[],...,,k ,n ,...,i x a ba xnij j )k (j j i iii)k (i21021111==∑-=≠=+()()()()()Tn x ,...x ,x x 002010=1.2.1 算法理论由雅克比迭代公式可知,在迭代的每一步计算过程中是用的全部分量来计算的所有分量,显然在计算第i 个分量时,已经计算出的最新分量没有被利用,从直观上看,最新计算出的分量可能比旧的分量要好些.因此,对这些最新计算出来的第次近似的分量加以利用,就得到所谓解方程组的高斯—塞德尔(Gauss-Seidel )迭代法.把矩阵A 分解成(6)其中,分别为的主对角元除外的下三角和上三角部分,于是,方程组(1)便可以写成即其中(7)以为迭代矩阵构成的迭代法(公式)(8)称为高斯—塞德尔迭代法(公式),用变量表示的形式为(9)1.2.2 算法描述 1给定迭代初始向量X 0以及误差要求delta2根据高斯赛德尔迭代公式计算出下一组向量()k x ()1+k x ()1+k ix ()()1111+-+k i k x ,...,x 1+k()1+k x()1+k jx U L D A --=()nna ,...,a ,a diag D 2211=U ,L --A ()b Ux x L D +=-22f x B x +=()()b L D f ,U L D B 1212---=-=2B ()()221f x B x k k +=+⎩⎨⎧[],...,,k ,n ,,i x a x a b a xi j n i j )k (j ij )k (j ij i ii)k (i21021111111==∑∑--=-=+=++3判断X是否满足误差要求,即||X k+1– X k|| < delta4若误差满足要求,则停止迭代返回结果;若否,则返回第二步进行下一轮迭代1.3 高斯消去法1.3.1 算法理论下面三种变换称为初等行变换:1.对调两行;2.以数k≠0乘某一行中的所有元素;3.把某一行所有元素的k倍加到另一行对应的元素上去。
线性代数方程组的数值解法_百度文库
线性代数方程组的数值解法【实验目的】1. 学会用MATLAB 软件数值求解线性代数方程组,对迭代法的收敛性和解的稳定性作初步分析;2. 通过实例学习用线性代数方程组解决简化的实际问题。
【实验内容】【题目1】通过求解线性方程组A1x=b1和A2x=b2,理解条件数的意义和方程组的性态对解的影响。
其中A1是n阶范德蒙矩阵,即⎡1x0⎢1x1⎢A1=⎢⎢⎢⎣1xn-12x0x12 2xn-1n-1⎤ x0⎥ x1n-1⎥1,...,n-1 ,xk=1+0.1k,k=0,⎥ n-1⎥ xn-1⎥⎦A2是n阶希尔伯特矩阵,b1,b2分别是A1,A2的行和。
(1)编程构造A1(A2可直接用命令产生)和b1,b2;你能预先知道方程组A1x=和A2x=。
b2的解吗?令n=5,用左除命令求解(用预先知道的解可检验程序)b1(2)令n=5,7,9,…,计算A1,A2的条件数。
为观察它们是否病态,做以下试验:b1,b2不变,A1和A2的元素A1(n,n),A2(n,n)分别加扰动ε后求解;A1和A2不变,b1,b2的分量b1(n),分析A和b的微小扰动对解的影响。
b2(n)分别加扰动ε求解。
ε取10-1010,-8,10-6。
(3)经扰动得到的解记做x~,计算误差-x~x,与用条件数估计的误差相比较。
1.1构造A1,A2和b1,b2首先令n=5,构造出A1,A2和b1,b2。
首先运行以下程序,输出A1。
运行以下程序对A1,A2求行和:由于b1,b2分别是A1,A2的行和,所以可以预知x1=运行下列程序,用左除命令对b1,b2进行求解:得到以下结果: T。
x2=(1,1, ,1)1.2 计算条件数并观察是否为病态1.不加扰动,计算条件数。
运行以下程序:由此可知,A1,A2的条件数分别是3.574∗10, 4,766∗10。
2.b1,b2不变,A1(n,n),A2(n,n)分别加扰动(1)n=5时设x11,x12,x13分别为A1添加扰动10−10,10−8,10−6后的解。
线性方程组的数值解法
《大学数学实验》作业线性方程组的数值解法班级:姓名:学号:日期:目录目录 (2)【实验目的】 (3)【实验内容】 (3)【题目1】(课本习题第五章第3题) (3)【第(1)问求解】 (3)【第(2)问求解】 (11)【本题小结】 (12)【题目2】(课本习题第五章第5题) (13)【第(1)问求解】 (14)【第(2)问求解】 (15)【本题小结】 (16)【题目3】(课本习题第五章第7题) (16)【第(1)问求解】 (16)【第(2)问求解】 (18)【本题小结】 (19)【实验心得、体会】 (19)注:本实验作业matlab脚本文件均以ex5_3形式命名,其中ex代表作业,5_3表示第五章第三小题【实验目的】1.学会用MATLAB 软件数值求解线性代数方程组,对迭代法的收敛性和解的稳定性作初步分析;2.通过实例学习用线性代数方程组解决简化的实际问题。
【实验内容】【题目1】(课本习题第五章第3题)已知方程组Ax=b,其中2020A R⨯∈,定义为31/21/41/231/21/41/41/231/21/41/41/231/431/21/41/231/21/41/23A --⎡⎤⎢⎥---⎢⎥⎢⎥----⎢⎥-⎢⎥⎢⎥=-⎢⎥⎢⎥⎢⎥--⎢⎥--⎢⎥⎢⎥--⎣⎦试通过迭代法求解此方程组,认识迭代法收敛的含义以及迭代初值和方程组系数矩阵性质对收敛速度的影响。
实验要求:(1)选取不同初始向量x (0)和不同的方程组右端向量b,给定迭代误差要求,用雅克比和高斯——赛德尔迭代法计算,观测得到的迭代向量序列是否均收敛?若收敛,记录迭代次数,分析计算结果并得出你的结论;(2)取定右端向量b 和初始向量x(0),将A 的主对角元素成倍增长若干次,非主对角元素不变,每次用雅克比迭代法,要求迭代误差满足(1)()5|||10k k x x +--<,比较收敛速度,分析现象并得出你的结论。
【第(1)问求解】【模型分析】对于矩阵A ,将其分解为:A=D-L-U,其中:D=⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡3000030000000300003, L=000010002110042000110042⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦,U=110241000214100020000⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦其中D 、L 、U 均为20×20的方阵。
_第六章_线性方程组的数值解法迭代法
b 1
a 11
b2
f
a 22 bn
a nn
x(k1) B0x(k)f
--------(5)
第四节 解线性方程组的迭代法
令:
0 0 0
L
a 21
0
0 A的下三角部分矩阵
a n1 a n 2 0
0
U
0
a12 0
a1n a2n
A的上三角部分矩阵
第三节 向量范数和矩阵范数
(2)范数的另一个简单例子是二维欧氏空间的长度
0M x2 y2
欧氏范数也满足三个条件:
(勾股定理)
设x = (x1, x2) ① x 0 x >0 ② ax = a x a为常数 ③ x+ y ≤ x + y 前两个条件显然,第三个条件在几何上解释为三角形一边的长度不大于其它 两边长度之和。因此,称之三角不等式。
满足:
① A0,且A0,当且A 仅 0当
,若 A
正定
② A A,为任意实数
奇次
③ ABAB,A和 B为任意 n阶两 方个 三阵 角不等
则称 A 为矩阵A的范数。
第三节 向量范数和矩阵范数
2、矩阵范数与向量范数的相容性 对于任意的n维向量x,都有:
Ax A x
这一性质称为矩阵范数与向量范数的相容性。
n
A
max
1in
j1
aij
A的每行绝对值之和的最大值, 又称A的行范数
第三节 向量范数和矩阵范数
(3)矩阵的2范数
2范数 ||A|2 | : (AT A )
(AAT) ?
矩阵的谱半径:
矩阵B的诸特征值为: i(i1,2, ,n)
线性方程组的数值解法LU分解法市公开课金奖市赛课一等奖课件
推论 2 D 并入 L,则
A (L D)R L U
此时, L 是下三角阵, U 是单位上三角阵,称之为
Crout 分解.
第8页
矩阵分解理论
推论 3 如果 A AT ,则A LDLT
其中,L 是单位下三角阵,D 是对角阵.
由a2 j l21u1 j 1 u2 j 得u2 j a2 j l2iu1 j ( j 2,3,..., n);
再由ai2 li1u12 li2u22
得li 2
ai 2
li1u12 u22
(i 3,4,..., n)。
第14页
Doolittle分解
第k步时:计算ukk , ukk1,n j k
i 1
yi bi lij y j i 1,2,..., n j 1 n
xi ( yi uij x j ) / uii i n, n 1,...1 j i 1
x 可获解 (x1, x2 ,..., xn )T。
第18页
例题
例1.试用Doolittle分解求解方程组.
2 5 6 x1 10
3.5 LU分解法 我们知道对矩阵进行一次初等变换,就相
称于用相应初等矩阵去左乘本来矩阵。因 此我们从这个观点来考察Gauss消元法并 用矩阵乘法来表示,即可得到求解线性方 程组另一个直接法:矩阵三角分解。
第1页
高斯消元过程矩阵表示
第1步等价于
:
a (1) 11
0时,将a(211), a(311),..., a(n11)消零, 令li1
d1
令
U1
d2
d
n
第29页
数值分析中的数值解线性方程组与矩阵计算
数值分析中的数值解线性方程组与矩阵计算数值分析是一门研究利用计算机数值方法解决数学问题的学科。
线性方程组是数值分析领域中常见的问题之一,而矩阵计算则是解决线性方程组的关键。
一、线性方程组的数值解线性方程组指的是由一系列线性方程组成的方程组。
在数值分析中,往往会遇到大规模的线性方程组,解它们的解析解是困难且耗时的,因此需要采用数值方法来求解。
1.1 直接法直接法是一种通过有限次数的运算,得到给定线性方程组的精确解的方法。
其中最常用的方法是高斯消元法和LU分解法。
高斯消元法通过将线性方程组的增广矩阵化为上三角矩阵,再通过回代求解得到解向量。
LU分解法则将系数矩阵分解为一个下三角矩阵L和一个上三角矩阵U,然后通过迭代求解来得到解向量。
1.2 迭代法迭代法是一种通过迭代逼近的方式,不断改进解的近似值,直到满足精度要求为止。
其中最常用的方法是雅可比迭代法和高斯-赛德尔迭代法。
雅可比迭代法通过将线性方程组的每个方程都表示为未知数的显式函数,并通过迭代公式逐步逼近解向量。
高斯-赛德尔迭代法则在雅可比迭代法的基础上,通过使用每次迭代后的更新值来改善近似解的质量。
二、矩阵计算矩阵计算在数值分析中扮演着至关重要的角色,它们是线性方程组求解的基础。
2.1 矩阵乘法矩阵乘法是指将两个矩阵相乘得到一个新的矩阵的运算。
在数值分析中,矩阵乘法常常用于表示线性方程组的系数矩阵与解向量的乘法,以及迭代法中的更新矩阵与解向量的乘法。
2.2 矩阵求逆矩阵求逆是指找到一个矩阵的逆矩阵,使得将该矩阵与其逆矩阵相乘得到单位矩阵。
在数值分析中,矩阵求逆常常用于直接法中的LU分解和迭代法中的雅可比迭代法。
2.3 特征值与特征向量特征值和特征向量是线性代数中的重要概念,也是矩阵计算中的重要内容。
特征值表示矩阵对应的线性变换在某个向量上的缩放因子,而特征向量则表示在该缩放因子下不变的向量。
在数值分析中,特征值和特征向量常常用于求解线性方程组的特殊解,以及判断矩阵的性质和稳定性。
线性方程的数值解法例题及程序
例1 解线性方程组⎪⎪⎩⎪⎪⎨⎧=+--=-+-=+-+-=+-15831110225311621043243214321321x x x x x x x x x x x x x x 为了验证其这些方法的有效性和比较三种方法的迭代速度,分别根据这些方法的迭代步骤,利用MATLAB 软件进行编程求解,具体程序参见附件,初始变量()T x )0,0,0,0(0=,迭代误差限制001.0e =,精确解T x )1,1,2,1(-=*,根据各迭代原理,利用MATLAB 软件编制成M 文件.Jacobi 迭代法为J.m (程序1),Gauss-Seidel 迭代法为GS.m (程序2),SOR 迭代法为SOR.m (程序3).运行程序,得结果如表1所示.表1 线性方程组的数值结果迭代法 初值 迭代解 迭代次数 误差Jacobi 法 T )0,0,0,0( T )9998.0,9998.0,9998.1,0001.1(- 10 -4108.3321⨯ Gauss-Seidel 法 T )0,0,0,0( T )0000.1,0000.1,0000.2,0001.1(- 5 -4108.7436⨯ SOR 法051.=ω T )0,0,0,0( T )0000.1,0000.1,0000.2,0000.1(- 5 -4100465.3⨯ SOR 法1.1=ω T )0,0,0,0( T )0000.1,0000.1,0000.2,0000.1(- 6 -41057771.⨯ SOR 法5.1=ωT )0,0,0,0(T )9998.0,9999.0,0001.2,9998.0(-14-4105628.5⨯程序1function [x,k]=J(A,b,x0,N,emg) % A:线性方程组左端矩阵 % b: 线性方程组右端向量 % x0:迭代初值% N:迭代次数上界,若迭代次数大于n ,则迭代失败 % emg:精度指标 % n:迭代次数% x:用迭代法求得的线性方程组的近似解A=[10 -1 2 0;-1 11 -1 3;2 -1 10 -1;0 3 -1 8]; b=[6;25;-11;15]; x0=[0;0;0;0]; N=100; emg=1e-3;k=length(A);x1=zeros(k,1);x2=zeros(k,1);x1=x0; n=0;r=max(abs(b-A*x1));while r>emgfor i=1:ksum=0;for j=1:kif i~=jsum=sum+A(i,j)*x1(j);endendx2(i)=(b(i)-sum)/A(i,i);endr=max(abs(x2-x1));x1=x2;n=n+1;if n>Ndisp('迭代失败,返回');return;endendx=x1n程序2function X=GS(A,b,X0) %定义迭代函数名A=[10 -1 2 0;-1 11 -1 3;2 -1 10 -1;0 3 -1 8]; b=[6;25;-11;15];X0=[0;0;0;0];D=diag(diag(A)); %对角矩阵L=-tril(A,-1); %下三角矩阵U=-triu(A,1); %上三角矩阵B=(D-L)\U; %迭代的系数矩阵F=(D-L)\b; %常量FX=B*X0+F; %Gauss-Seidel迭代公式n=1; %迭代起始次数while norm(X-X0)>=1e-3;%精度X0=X; %初始赋值X=B*X0+F;n=n+1;if n>100 %迭代次数限制breakendendn程序3clear;clc;A=[10 -1 2 0;-1 11 -1 3;2 -1 10 -1;0 3 -1 8]; b=[6;25;-11;15];N=length(b); %解向量的维数X0=zeros(N,1);% 迭代初始值%-----(A=D-E-F)------D=diag(diag(A));E=-tril(A,-1);%下三角矩阵F=-triu(A,1);%上三角矩阵w=1.1; %松弛因子,一般0<w<2B=inv(D-w*E)*[(1-w)*D+w*F];g=w*inv(D-w*E)*b;eps=1e-3;%精度x=B*x0+g;%--------开始迭代-------while max(abs(x0-x))>1e-3x0=xx=B*x0+g;n=n+1if n>100 %迭代次数限制breakendendxnr=max(abs(x0-x))。
《应用数值分析》课件数值分析5.3线性方程组的数值解法
Step k:设ak(kk) ,0计算因子
mik
a(k) ik
/
a(k kk
)
(i k 1, ..., n)
且计算
a ( k 1) ij
b( k 1) i
a(k) ij
m
ik
a
(k kj
)
b(k ) i
mik bk(k )
(i, j k 1, ..., n)
n
bi (bi
aij * b j ) / aii
j i 1
2024/11/23
线性方程组的直接解法
11
计算量 /* Amount of Computation */
由于计算机中乘除 /* multiplications / divisions */ 运算的时 间远远超过加减 /* additions / subtractions */ 运算的时间,故 估计某种算法的运算量时,往往只估计乘除的次数,而且通 常以乘除次数的最高次幂为运算量的数量级。 (n k) 次
(k)
kk
k ,k1
0
a ( k 1) k 1,k 1
a(1) 1n
a(2) 2n
a(k) kn
a ( k 1) k 1,n
0
a ( k 1) n,k 1
a ( k 1) nn
第 6 章 不动点理论及应用 第 1 页 共 1 页
b(1) 1
b(2) 2
b( k ) k
b( k 1) k 1
b( k 1) n
xn
b(n) n
/
a(n) nn
n
b( i ) i
a
(i ij
计算方法线性方程组数值解法
d
2
a3b3c3
x3
d3
an
1bn1cn
1
xn
1
d
n
1
anbn xn dn
其系数矩阵为三对角形,元素满足以下条件:
|b1|>|c1|>0
|bi|≥|ai|+|ci|,且aici≠0 i=2,3,……n-1; |bn|≥|an|>0。
可以采用追赶法求解
4
线性代数方面的计算方法就是研究求解线 性方程组的一些数值解法与研究计算矩阵 的特征值及特征向量的数值方法。
5
设有线性方程组
a11x1 a12x2 a1nxn b1 a21x1a22x2a2nxnb2 an1x1 an2x2 annxn bn
式中,aij,bi为已知常数,xi为待求的未知量。记
u
2
2
u 2 n
u n 1,n 1u n 1,n
u n n
10
若uii≠0(i=1,2,……n),则由下至上依次回代得
xn yn / unn
xn1 ( yn1 xi yi
un1,n xn ) / un1,n1
n
uij x j ) / uii
0
a
( 2
2 2
)
a
( 2
2) ,k 1
a
( 2
2) ,k
a
( 2
2) ,n
a
( 2
2) ,n 1
0 A(k)
0 0
a
( k
k) ,k
a
( k
k) ,k 1
a
k
k ,n
a
( k
k) 1,n
1
数学建模线性方程组的数值解法
直接法 经过有限次算术运算求出精确解(实际上 由 于 有 舍 入 误 差 只 能 得 到 近 似 解 ) ---- 高 斯 (Gauss)消元法及与它密切相关的矩阵LU分解 迭代法 从初始解出发,根据设计好的步骤用逐次 求出的近似解逼近精确解 ---- 雅可比(Jacobi) 迭代法和高斯—塞德尔(Gauss—Seidel)迭代法
(k )
0.1x1
( k 1)
0.3x2
( k 1)
1.4
Gauss-Seideil迭代公式 Dx ( k 1) Lx ( k 1) Ux ( k ) b
用它作除数会导致舍入误 差的很大增加 解决 办法 选
(k ) aik
(i k , n) 最大的一个(列主元)
将列主元所在行与第k行交换后, 再按上面的 高斯消元法进行下去,称为列主元消元法。
直接法 - 高斯消元法的矩阵表示
高斯消元法的第一次消元
a11 x1 a12 x2 a1n xn b1 a21 x1 a22 x2 a2 n xn b2 an1 x1 an 2 x2 ann xn bn
数值解法(迭代解法)的收敛性
实验5的主要内容
1. 两类数值解法: 直接方法;迭代方法
2. 超定线性方程组的最小二乘解 3. 线性方程组数值解法的MATLAB实现 4. 实际问题中方程组的数值解
线性方程组的一般形式、两类解法
a11 x1 a12 x 2 a1n x n b1 a 21 x1 a 22 x 2 a 2 n x n b2 a n1 x1 a n 2 x 2 a nn x n bn
大学数学实验
Mathematical Experiments 实验5 线性代数方程组的数值解法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
扰动在A
x1
扰动在b
ε=0
ε=10^(-10)
ε=10^(-8)
ε=10^(-6)
ε=0
ε=10^(-10)
ε=10^(-8)
ε=10^(-6)
1
1
1.000007
1.000715
1
1
1.000007
1.000715
1
1
0.999975
0.997488
1
1
0.999975
0.997489
1
1
1.000033
1.032431
1
0.999999
0.999896
0.989569
1
0.999999
0.999896
0.989583
1
1
1.000014
1.001391
1
1
1.000014
1.001389
x2
扰动在A
x2
扰动在b
ε=0
ε=10^(-10)
ε=10^(-8)
ε=10^(-6)
ε=0
ε=10^(-10)
0.999755
0.975512
1
1.000005
1.000497
1.049795
1
1.000005
1.000497
1.049726
1
0.999995
0.999464
0.94628
1
0.999995
0.999464
0.946354
1
1.000003
1.000324
1.032476
1
1.000003
1.000324
1
0.5
0.333333
0.25
0.2
0.5
0.333333
0.25
0.2
0.166667
0.333333
0.25
0.2
0.166667
0.142857
0.25
0.2
0.166667
0.142857
0.125
0.2
0.166667
0.142857
0.125
0.111111
线性方程组的解为:
x1
1
1
1
1.000006
1.000919
1.09263
0.999997
1.000002
1.000923
1.092376
1.000019
0.999953
0.993395
0.3342017
1.000019
0.999984
0.993368
0.336024
0.99994
1.000153
1.021262
3.143168
-5.7739
-5.53565
0.999989
2.839658
184.9669
18397.69
1.000007
-0.56778
5.147285
5.001421
1.000007
-0.12632
-111.633
-11262.3
0.999998
1.391945
-0.03682
-0.00036
0.999998
0.99994
1.000056
1.021347
3.137302
1.000111
1.00E+00
0.959629
-3.07E+00
1.000111
0.999885
0.959471
-3.05759
0.999866
1.000366
1.050068
6.0452903
0.999866
1.000153
1.050258
实验三线性代数方程的数值解法
(化11孙皓2011011779)
【实验要求及目的】
1、学会用MATLAB软件数值求解线性代数方程组,对迭代法的收敛性和解的稳定性作初步分析;
2、通过实例学习用线性代数方程组解决简化的问题。
第一题
【问题描述】
通过求解线性方程组 和 ,理解条件数的意义和方程组的性质对解的影响。其中 是n阶范特蒙矩阵,即
6.03148
1.00011
0.999687
0.95762
-3.270083
1.00011
0.999862
0.957463
-3.25839
0.999938
1.000185
1.024798
3.4982013
0.999938
1.000086
1.024887
3.491362
1.000024
0.999926
1.28158
29.1582
2816.82
通过比较观察,可以看出在n=9时,
此时,之前的结论大部分还是适用的,尤其是在解的变化值不大于1时,没有明显的规律上的变化。与之前的值进行比较,在第一个方程中,解的变化并没有随着n的增大而明显增大(与第二个方程相比)。
但不同的是,此时在第二个方程中,出现了很多变化值大于1的解的点,这些点的变化出现了新的规律:一方面,当扰动在A时,扰动的大小不仅与解的变化没有线性关系,甚至不再有单调关系,扰动的增大不一定会引起解的变化;另一方面,扰动位于b时,扰动的大小与解的变化仍有很好地线性关系,但此时系数已经较大。
1.562442
1
0.999966
0.996625
0.661661
1
0.999966
0.996625
0.6625
1
1.000013
1.001261
1.126355
1
1.000013
1.00126
1.126042
1
0.999997
0.999732
0.973148
1
0.999997
0.999732
0.973214
0.990095
0.0023239
1.000024
0.999964
0.990061
0.005056
0.999994
1.00002
ε=10^(-8)
ε=10^(-6)
1
1.000001
1.000135
0.998811
1
1.000001
1.00012
1.012012
1
0.999949
0.994325
1.049955
1
0.99995
0.994955
0.495496
1
1.000505
1.056749
0.500446
1
1.000505
1.05045
6.04504
1
0.99798
0.773004
2.998216
1
0.997982
0.798198
-19.1802
1
1.003788
1.425618
-2.74666
1
1.003784
1.378378
38.8378
1
0.996667
0.625456
4.297057
1
0.99667
0.667027
1.003297
1
1
1.000033
1.003296
1
1
0.999981
0.998083
1
1
0.999981
0.998083
1
1
1.000004
1.000417
1
1
1.000004
1.000417
x2
扰动在A
x2
扰动在b
ε=0
ε=10^(-10)
ε=10^(-8)
ε=10^(-6)
ε=0
ε=10^(-10)
由此可见, 的病态性不太严重,而 已经十分病态,并且在一些情况下,解的误差已经没有规律。
4、n=11时,不同方程在不同扰动下的解如下表:
x1
扰动在A
x1
扰动在b
ε=0
ε=10^(-10)
ε=10^(-8)
ε=10^(-6)
ε=0
ε=10^(-10)
ε=10^(-8)
ε=10^(-6)
0.999997
是n阶希尔伯特矩阵, , 分别是 , 的行和。
(1)、编程构造 , 和 , 。令n=5,用左除求解线性方程。
(2)、令n=5,7,9,…,计算 和 的条件数。为观察它们是否病态,做以下实验: , 不变, 和 的元素 , 分别加扰动ε后求解; 和 不变, , 的分量 , 分别加扰动ε后求解。分析A和b的微小扰动对解的影响。Ε取10-10,10-8,10-6。
1
1
x2
1
1
1
1
1
(2)、不同n值情况下, , 的条件数如下表:
n
cond(A1,1)
cond(A1,2)
cond(A1,inf)
cond(A2,1)
cond(A2,2)
cond(A2,inf)
5
651203.8
357402.4
627547.7
943656
476607.3
943656
7
1.85E+08
0.998516
0.851567
1
1.00004
1.003948
1.395745
1
1.00004
1.003947
1.394763
1
0.99994