求线性方程组
得近似解。精确解为x*=[3,2,1]’。
解:对方程进行移项就得
记为Ax=b,或写为x=B0x+f,其中
取初始值,代入原方程组可得再将把它代入可得.反复利用这个计算过程,得到一向量序列和一般的计算公式(迭代公式)
简写为迭代到第10次有
从此例看出,由迭代法产生的向量序列x(k)逐步逼近方程组的精确解x*.
6.1常用迭代法
定义1 (ⅰ)对于给定的方程组x=Bx+f ,用公式逐步代入
求近似解的方法称为迭代法(或称为一阶定常迭代法,这里B
与k无关).
(ⅱ)如果 存在(记为x*),称此迭代法收敛,显然x*就是方
程组的解,否则称此迭代法发散.
迭代法的流程图为:
①为初始向量,
②是判断条件, 即时停止运行
③k 是循环次数。
④中带入初始值,然后赋给
① Jacobi迭代法
对一般方程组
从第一个方程解出x1,第二个方程解出x2,…,记成
用矩阵写法即x=Bx+g,B的对角元皆零,可拆成
B=L+UL是B下三角部分,U是B上三角部分Jacobi迭代法如下述.
任取初始近似x(0),对k=1,2,…计算
直至║x(k+1)-x(k)║≤ε,预定的精度.用矩阵记号,即任取初始近似x(0),对k=1,2,…计算
x(k+1)=Bx(k)+g,
直至║x(k+1)-x(k)║≤ε(通常对迭代法限定最大迭代次数也是必要的).Jacobi迭代法的流程图为:
在以上的流程图中,先读入数据,即先输入系数矩阵A,常数向量b, 初始值,停止条件和最大循环次数。图中是,在我们迭代公式中的。k 是循环次数,N 是最大循环次数。
例2.?????????????利用Jacobi方法求方程组
的近似解。
解 把原方程改为
任取初始近似x(0),对k=1,2,…计算
直至║x(k+1)-x(k)║≤ε,预定的精度.
此即Jacobi迭代法.计算结果如下表.
kx1(k)x2(k)x3(k)000010.7200000000000.8300000000000.84000000000020.9710000000001.0700000000001.15000000000031.0570000000001.1571000000001.24820000000041.0853500000001.1853400000001.28282000000051.0950980000001.1950990000001.29413800000061.0983375000001.1983374000001.29803940000071.0994416200001.1994416300001.29933498000081.0998111590001.1998111580001.29977665000091.0999364458001.1999364459001.299924463400101.0999785372701.1999785372601.299974578340111.0999927693941.1999927693951.299991414906
二 实验部分
本章实验内容:
实验题目:Jacobi迭代法,Gauss-Saidel迭代法,SOR迭代法。
实验内容:利用MATLAB ,编制求Ax=b的各迭代计算方法的程序。
实验目的:了解迭代法的运用性,进行各迭代法数值结果的比较,并找出一个计算量小的,使迭代法加速收敛的迭代方法。
编程要求:①利用迭代法,初始向量为x(0)
②同时利用Jacobi法和Gauss-Seidel法来进行对比。
③利用SOR迭代法来进行对比。
计算算法:①Jacobi迭代法的算法为:
②Gauss-Saidel迭代法的算法为:
③SOR迭代法的算法为:
实验例题⑴:
条件:取
实验例题⑵:
条件:取选择适当的松弛因子。
程序①:
function [X,Y]=JacobiGS(A,b,p,p1,del,max)
% A为线性方程组的系数矩阵,b为自由项,p和p1为两种迭代法的初始解,del为限制数,max为循环的限制次数。
n=length(b);
for k1=1:max
for j=1:n
Y(j)=(b(j)-A(j,[1:j-1])*p1(1:j-1)-A(j,[j+1:n])*p1(j+1:n