线性方程组迭代解法
- 格式:doc
- 大小:80.00 KB
- 文档页数:12
计算方法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 。
线性方程组迭代法
线性方程组迭代法,又称坐标下降法,是一种用于解线性方程组的迭代求解方法,常用于线性规划以及单纯形法等技术。
早在上世纪50年代,此方法就在解决
线性规划问题中得到了广泛应用,到目前为止,这种技术仍然广泛使用。
线性方程组迭代法是一种基于不断迭代调整变量,使目标函数达到最优结果的
迭代求解法。
其基本步骤是:
(1) 初始化目标函数变量:首先,初始化线性方程组的目标函数的变量;
(2) 评估梯度:选择合适的算法计算目标函数的梯度;
(3) 根据该梯度更新变量:更新目标函数变量的值,使得在此次更新之后的值
更加有利于满足线性方程组的要求;
(4) 重复上述步骤,直到目标函数足够接近最优值为止;
线性方程组迭代法能够快速地求解出线性规划问题的最优解,因此,它在计算
机上经常被用来优化问题,进而提高系统运行效率。
随着网络技术的发展,线性方程组迭代法在互联网领域得到了广泛应用,这在大大缩短了计算机程序的运行时间,提高了互联网的效率。
同时,线性方程组迭代法也有助于提高系统的性能,改善用户的体验,提升企业的品牌形象。
实验六:线性方程组迭代解法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迭代法三种迭代法,并且了解三种迭代法的性质以及迭代精度等。