常微分方程的解线性方程组的迭代法
- 格式:doc
- 大小:91.50 KB
- 文档页数:17
计算方法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. 线性方程组的定义与形式线性方程组由多个线性方程组成,其中每个线性方程都是未知函数及其导数的线性组合。
一般形式如下:y^(n) + a_(n-1)(x)y^(n-1) + … + a_1(x)y' + a_0(x)y = f(x)其中,y^(n) 表示未知函数 y 的 n 阶导数,a_i(x)(i = 0, 1, …, n-1)是已知函数,f(x) 是已知函数。
2. 线性齐次方程组的解法线性齐次方程组是指 f(x) = 0 的线性方程组。
对于线性齐次常微分方程组,可以使用特征方程法来求解。
具体步骤如下:(1)设 y = e^(rx) 为方程的解,代入方程得到特征方程,如 y'' + ay' + by = 0,则特征方程为 r^2 + ar + b = 0。
(2)解特征方程得到 r1 和 r2,若r1 ≠ r2,则 y1 = e^(r1x) 和 y2 = e^(r2x) 是方程的两个线性无关解;若 r1 = r2 = r,则 y1 = e^(rx) 和 y2 = xe^(rx) 是方程的两个线性无关解。
(3)根据线性组合的原理,方程的通解为 y = C1y1 + C2y2(或 y = C1y1 + C2y2lnx),其中 C1 和 C2 为任意常数。
3. 非齐次线性方程组的解法非齐次线性方程组是指f(x) ≠ 0 的线性方程组。
求解非齐次线性方程组可以使用常数变易法。
具体步骤如下:(1)令 y = C1(x)y1(x) + C2(x)y2(x) 为方程的解,其中 C1(x) 和C2(x) 为待定函数。
(2)代入原方程,得到待定函数的微分方程组。
线性方程组的迭代式求解方法迭代法解方程的基本原理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 。
常微分方程中的常系数线性方程及其解法常微分方程(Ordinary Differential Equation,ODE)是一种数学模型,用于描述时间或空间上量的变化规律。
常微分方程中的常系数线性方程是ODE中一个重要的类别,其解法具有一定的规律性和普适性。
本文将就常微分方程中的常系数线性方程及其解法做简要介绍。
一、常系数线性方程的定义常系数线性方程是指其系数不随自变量t的变化而改变的线性方程。
一般写为:$$\frac{d^n}{dt^n}y(t)+a_{n-1}\frac{d^{n-1}}{dt^{n-1}}y(t)+...+a_1\frac{d}{dt}y(t)+a_0y(t)=f(t)$$其中a的值为常数,f(t)为已知函数,y(t)为未知函数,方程中最高阶导数的阶数为n。
n阶常系数线性方程也称为n阶齐次线性方程;当f(t)≠0时,称其为n阶非齐次线性方程。
二、常系数线性方程的解法对于一般形式的常系数线性方程,我们常用特征根的方法来求解。
具体来说,先考虑对应的齐次线性方程$$\frac{d^n}{dt^n}y(t)+a_{n-1}\frac{d^{n-1}}{dt^{n-1}}y(t)+...+a_1\frac{d}{dt}y(t)+a_0y(t)=0$$设y(t)=e^{rt},则有$$r^ne^{rt}+a_{n-1}r^{n-1}e^{rt}+...+a_1re^{rt}+a_0e^{rt}=0$$整理得到$$(r^n+a_{n-1}r^{n-1}+...+a_1r+a_0)e^{rt}=0$$根据指数函数的性质得到$$r^n+a_{n-1}r^{n-1}+...+a_1r+a_0=0$$求解方程$$r^n+a_{n-1}r^{n-1}+...+a_1r+a_0=0$$可得到n个特征根,设其为$r_1,r_2,...,r_n$。
则对于齐次线性方程,其通解为$$y(t)=c_1e^{r_1 t}+c_2e^{r_2 t}+...+c_ne^{r_n t}$$其中$c_1,c_2,...,c_n$为待定常数。
实验五 解线性方程组的迭代法【实验容】对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 =将求解结果与给定解比较,而后求出上述四种方法的误差,得出哪种方法比较好。
线性方程组迭代法
线性方程组迭代法,又称坐标下降法,是一种用于解线性方程组的迭代求解方法,常用于线性规划以及单纯形法等技术。
早在上世纪50年代,此方法就在解决
线性规划问题中得到了广泛应用,到目前为止,这种技术仍然广泛使用。
线性方程组迭代法是一种基于不断迭代调整变量,使目标函数达到最优结果的
迭代求解法。
其基本步骤是:
(1) 初始化目标函数变量:首先,初始化线性方程组的目标函数的变量;
(2) 评估梯度:选择合适的算法计算目标函数的梯度;
(3) 根据该梯度更新变量:更新目标函数变量的值,使得在此次更新之后的值
更加有利于满足线性方程组的要求;
(4) 重复上述步骤,直到目标函数足够接近最优值为止;
线性方程组迭代法能够快速地求解出线性规划问题的最优解,因此,它在计算
机上经常被用来优化问题,进而提高系统运行效率。
随着网络技术的发展,线性方程组迭代法在互联网领域得到了广泛应用,这在大大缩短了计算机程序的运行时间,提高了互联网的效率。
同时,线性方程组迭代法也有助于提高系统的性能,改善用户的体验,提升企业的品牌形象。
解线性方程组的迭代法实际应用
现今,互联网行业的发展速度越来越快,数据和信息的传播变得越来越重要,因此,熟练掌握并利用数据和信息变得越来越必要。
迭代法是解决线性方程组最重要的算法之一,在互联网行业中也有广泛的应用。
迭代法能够有效的求出不同的近似解,而且计算速度较快,能够满足互联网行业的快速发展。
比如运行在分布式环境中的搜索引擎,其中有大量的系统参数,如摆放有系统服务器到网络以及运行配置等,这些参数有很多线性方程组,这些线性方程组很难使用传统的数学方法来求解,而使用迭代法可以快速得到这些方程组的答案,为搜索引擎提供良好的运行环境。
另外,现代的宽带技术和视频技术极大的提高了节目的传输效率。
它们的实现依赖于复杂的线性方程,迭代法可以有效的帮助实现技术的快速发展。
此外,依靠迭代法的快速求解,将抗性算法转换为原始算法,也可以有效改进网络的性能,比如入侵检测算法中,使用迭代引入抗性算法来更新原始算法,结合专业技术确定加密规则,从而更有效的防止非法攻击。
总之,迭代法在互联网行业中发挥着重要作用,在搜索引擎、宽带技术和入侵检测算法等方面,迭代法及其所需技术都可以极大地提升网络系统的效率,确保互联网系统的可靠性和安全性,完善互联网的运作环境。
数值解常微分方程的方法和技巧在科学和工程领域,我们经常遇到一些复杂的常微分方程(Ordinary Differential Equations, ODEs),这些方程往往很难用解析方法得到精确解。
而数值解常微分方程的方法和技巧提供了一种有效的途径来近似求解这些方程。
本文将介绍一些常用的数值解ODEs的方法和技巧。
一、欧拉方法(Euler Method)欧拉方法是最简单的数值解ODEs的方法,它利用初始条件和微分方程的导数来计算下一个点的近似值。
具体来说,假设我们要求解的ODE为dy/dx = f(x, y),其中f(x, y)是已知函数,初始条件为x0 = x(0),y0 = y(0)。
欧拉方法的迭代公式为:y[i+1] = y[i] + h * f(x[i], y[i])其中,h是步长,x[i]表示第i个点的x坐标,y[i]表示对应的y坐标。
二、龙格-库塔方法(Runge-Kutta Method)龙格-库塔方法是一族常用的数值解ODEs方法,其基本思想是通过计算不同阶数的导数来提高求解的精度。
最常用的龙格-库塔方法是四阶龙格-库塔方法,也称为RK4方法。
它的迭代公式如下:k1 = h * f(x[i], y[i])k2 = h * f(x[i] + h/2, y[i] + k1/2)k3 = h * f(x[i] + h/2, y[i] + k2/2)k4 = h * f(x[i] + h, y[i] + k3)y[i+1] = y[i] + 1/6 * (k1 + 2*k2 + 2*k3 + k4)其中,k1、k2、k3、k4是中间变量,h是步长。
三、改进的欧拉方法(Improved Euler Method)改进的欧拉方法是对欧拉方法的改进,它通过使用导数的平均值来提高求解的精度。
其迭代公式为:k1 = h * f(x[i], y[i])k2 = h * f(x[i] + h, y[i] + k1)y[i+1] = y[i] + 1/2 * (k1 + k2)其中,k1、k2是中间变量,h是步长。
微分方程中的常微分方程与线性方程组微分方程是数学中重要且广泛应用的一个分支,在科学、工程等领域都有着重要的应用。
微分方程可以用来描述变化过程中的关系,其中常微分方程与线性方程组是其中的两个重要概念。
本文将分别介绍常微分方程和线性方程组的定义、特点和应用。
常微分方程是描述一个未知函数的导数与自变量的关系的方程。
通常常微分方程可以简化为形如:\[ \frac{d^n y}{dx^n} = f(x) \]其中,y是未知函数,x是自变量,n是正整数,f(x)是已知函数。
这种形式的常微分方程被称为n阶常微分方程。
常微分方程的解是确定函数y(x),使得方程两边相等。
常微分方程的解可以通过积分法、特征值法、变量分离法等方法来求解。
通过求解常微分方程,我们可以获得未知函数的变化规律,从而深入理解问题的本质。
常微分方程在物理、生物、经济等领域有着广泛的应用。
例如,在自然科学研究中,常微分方程可以描述物体的运动、传热传质等过程。
在经济学中,常微分方程可以描述经济增长、人口增长等问题。
在生物学中,常微分方程可以描述群体的增长、物种的竞争等现象。
接下来,我们将介绍线性方程组与微分方程的关系。
线性方程组是由一组线性方程组成的方程组。
通常线性方程组可以简化为形如:\[ A \cdot X = B \]其中,A是一个矩阵,X和B是向量。
线性方程组可以通过消元法、矩阵求逆等方法求解。
求解线性方程组可以帮助我们确定未知量的值,从而解决实际问题。
线性方程组与微分方程之间存在紧密的联系。
事实上,在一些复杂的问题中,常微分方程可以通过线性方程组来求解。
例如,在工程学领域,常微分方程可以描述电路中电流和电压的关系,而线性方程组可以通过电流、电压的关系来求解未知量。
简而言之,微分方程中的常微分方程与线性方程组是研究微分方程的两个重要内容。
常微分方程描述了未知函数的导数与自变量的关系,线性方程组描述了一组线性方程的关系。
两者在科学和工程领域都有着广泛的应用,对于深入理解和解决实际问题具有重要价值。
线性方程组求解的迭代算法线性方程组是数学中常见的问题之一,求解线性方程组是很多科学和工程领域中必需的基本任务。
而迭代算法是一种常见的求解线性方程组的方法之一,通过不断逼近线性方程组的解来达到求解的目的。
本文将介绍一些常见的线性方程组迭代算法及其原理。
一、雅可比迭代法雅可比迭代法是最早被提出的线性方程组迭代算法之一。
其思想是通过不断迭代,在每一步都利用先前求得的近似解来逼近方程组的解。
具体算法如下:假设给定的线性方程组为Ax=b,其中A为系数矩阵,b为常数向量,x为未知向量。
1. 首先,将方程组转化为x=D^-1(b-Rx),其中D为一个对角矩阵,R为矩阵A的剩余部分。
2. 设定一个初始解向量x0。
3. 迭代计算:重复执行以下步骤,直到满足终止条件。
a. 计算下一次迭代的解向量:x_k+1 = D^-1(b-Rx_k),其中k为当前迭代的次数。
b. 检查终止条件是否被满足,如果是,则停止迭代;否则,返回步骤a。
雅可比迭代法的收敛性与系数矩阵A的特征值有关。
当A是严格对角占优矩阵时,迭代法收敛。
二、高斯-赛德尔迭代法高斯-赛德尔迭代法是雅可比迭代法的一种改进方法。
在每一次迭代中,新的解向量x_k+1的计算会利用到之前已经计算得到的近似解向量的信息,从而加快迭代的速度。
具体算法如下:1. 设定一个初始解向量x0。
2. 迭代计算:重复执行以下步骤,直到满足终止条件。
a. 对于每个方程i,计算下一次迭代的解向量的每个分量:x_k+1[i] = (1/A[i][i]) * (b[i]-Σ(A[i][j]*x_k[j],其中j为1到i-1之间的所有整数。
b. 检查终止条件是否被满足,如果是,则停止迭代;否则,返回步骤a。
高斯-赛德尔迭代法相比于雅可比迭代法,在每一次迭代中都会利用到之前计算得到的近似解向量的信息,因此收敛速度更快。
三、超松弛迭代法超松弛迭代法是对雅可比迭代法和高斯-赛德尔迭代法的进一步改进。
通过引入松弛因子ω,可以加速迭代的收敛速度。
实验五 解线性方程组的迭代法【实验容】对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 方法计算其解。
实验五 解线性方程组的迭代法【实验容】对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 方法计算其解。
实验五 解线性方程组的迭代法【实验内容】对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 方法计算其解。
【实验方法或步骤】1、体会迭代法求解线性方程组,并能与消去法加以比较;2、分别对不同精度要求,如54310,10,10---=ε由迭代次数体会该迭代法的收敛快慢;3、对方程组2,3使用SOR 方法时,选取松弛因子ω=0.8,0.9,1,1.1,1.2等,试看对算法收敛性的影响,并能找出你所选用的松弛因子的最佳者;4、给出各种算法的设计程序和计算结果。
程序:用雅可比方法求的程序:function [x,n]=jacobi(A,b,x0,eps,varargin) if nargin==3 eps=1.0e-6; M=200;elseif nargin==5M=varargin{1};endD=diag(diag(A));L=-tril(A,-1);U=-triu(A,1);B=D\(L+U);f=D\b;x=B*x0+f;n=1;while norm(x-x0)>=epsx0=x;x=B*x0+f;n=n+1;if(n>=M)diso('不收敛!')return;endend解1的程序为A=[4 2 -3 -1 2 1 0 0 0 0;8 6 -5 -3 6 5 0 1 0 0;4 2 -2 -1 3 2 -1 0 3 1;0 -2 1 5 -1 3 -1 1 9 4;-4 2 6 -1 6 7 -3 3 2 3;8 6 -8 5 7 17 2 6 -3 5;0 2 -1 3 -4 2 5 3 0 1;16 10 -11 -9 17 34 2 -1 2 2;4 6 2 -7 13 9 2 0 12 4;0 0 -1 8 -3 -24 -8 6 3 -1;],b=[5 12 3 2 3 46 13 38 19 -21]'A =Columns 1 through 44 2 -3 -18 6 -5 -34 2 -2 -10 -2 1 5-4 2 6 -18 6 -8 50 2 -1 316 10 -11 -94 6 2 -70 0 -1 8Columns 5 through 82 1 0 06 5 0 13 2 -1 0-1 3 -1 16 7 -3 37 17 2 6-4 2 5 317 34 2 -113 9 2 0-3 -24 -8 6Columns 9 through 100 00 03 19 42 3-3 50 12 212 43 -1b =51232346133819-21>> x0=ones(10,1);>> [x,n]=Jacobi(A,b,x0)得到的结果为Warning: Function call Jacobi invokes inexact match d:\MATLAB7\work\jacobi.m.不收敛!x =1.0e+124 *-0.1794-0.3275-0.70941.59901.03110.32910.24644.39050.4927-2.6574n =200即迭代了200次而且可能不收敛A =4 2 -4 0 4 2 0 0 2 2 -1 2 1 3 2 0 -4 -1 14 1 -8 -356 0 -2 1 6 -1 -4 -3 3 2 1 -8 -1 22 4 -10 -3 4 3 -3 -4 4 11 1 -4 0 2 5 -3 -10 1 14 2 0 0 6 3 -3 -4 2 19b = 0-620239-22-1545>> x0=ones(8,1);>> [x,n]=Jacobi(A,b,x0)不收敛!x =1.0e+047 *0.96271.0084-0.4954-0.59790.30970.6872-0.0666-0.2629n =200此方程可能不收敛A=[4 -1 0 0 0 0 0 0 0 0;-1 4 -1 0 0 0 0 0 0 0;0 -1 4 -1 0 0 0 0 0 0;0 0 -1 4 -1 0 0 0 0 0;0 0 0 -1 4 -1 0 0 0 0;0 0 0 0 -1 4 -1 0 0 0;0 0 0 0 0 -1 4 -1 0 0;0 0 0 0 0 0 -1 4 -1 0;0 0 0 0 0 0 0 -1 4 -1;0 0 0 0 0 0 0 0 -1 4;],b=[7 5 -13 2 6 -12 14 -4 5 -5]'A =Columns 1 through 54 -1 0 0 0-1 4 -1 0 00 -1 4 -1 00 0 -1 4 -10 0 0 -1 40 0 0 0 -10 0 0 0 00 0 0 0 00 0 0 0 00 0 0 0 0Columns 6 through 100 0 0 0 00 0 0 0 00 0 0 0 00 0 0 0 0-1 0 0 0 04 -1 0 0 0-1 4 -1 0 00 -1 4 -1 00 0 -1 4 -10 0 0 -1 4b =75-1326-1214-45-5>> x0=ones(10,1);>> [x,n]=Jacobi(A,b,x0)x =2.00001.0000-3.00000.00001.0000-2.00003.00000.00001.0000-1.0000n =22得到结果为迭代了22次得到近似解为x =2.0000 1.0000 -3.0000 0.0000 1.0000 -2.0000 3.0000 0.0000 1.0000 -1.0000 用高斯赛德尔源程序function [x,n]=gauseidel(A,b,x0,eps,M)if nargin==3eps=1.0e-6;M=200;elseif nargin==4M=200;elseif nargin<3errorreturn;endD=diag(diag(A));L=-tril(A,-1);U=-triu(A,1);G=(D-L)\U;f=(D-L)\b;x=G*x0+f;n=1;while norm(x-x0)>=epsx0=x;x=G*x0+f;n=n+1;if(n>=M)disp('Warning:不收敛!');return;endend解上面3个方程组的程序分别为第一个方程A=[4 2 -3 -1 2 1 0 0 0 0;8 6 -5 -3 6 5 0 1 0 0;4 2 -2 -1 3 2 -1 0 3 1;0 -2 1 5 -1 3 -1 1 9 4;-4 2 6 -1 6 7 -3 3 2 3;8 6 -8 5 7 17 2 6 -3 5;0 2 -1 3 -4 2 5 3 0 1;16 10 -11 -9 17 34 2 -1 2 2;4 6 2 -7 13 9 2 0 12 4;0 0 -1 8 -3 -24 -8 6 3 -1;],b=[5 12 3 2 3 46 13 38 19 -21]'A =4 2 -3 -1 2 1 0 0 0 08 6 -5 -3 6 5 0 1 0 04 2 -2 -1 3 2 -1 0 3 10 -2 1 5 -1 3 -1 1 9 4-4 2 6 -1 6 7 -3 3 2 38 6 -8 5 7 17 2 6 -3 50 2 -1 3 -4 2 5 3 0 116 10 -11 -9 17 34 2 -1 2 24 6 2 -7 13 9 2 0 12 40 0 -1 8 -3 -24 -8 6 3 -1b =51232346133819-21x0=zeros(10,1);>> [x,n]=gauseidel(A,b,x0)Warning:不收敛!x =1.0e+247 *0.0165-0.02710.2202-0.4576-0.59510.3138-0.43812.24500.04137.4716n =200即迭代200次后此方程可能不收敛方程2的程序为A=[4 2 -4 0 4 2 0 0;2 2 -1 2 1 3 2 0;-4 -1 14 1 -8 -3 5 6;0 -2 1 6 -1 -4 -3 3;2 1 -8 -1 22 4 -10 -3;4 3 -3 -4 4 11 1 -4;0 2 5 -3 -10 1 14 2;0 0 6 3 -3 -4 2 19;],b=[0 -6 20 23 9 -22 -15 45]'A =4 2 -4 0 4 2 0 02 2 -1 2 13 2 0-4 -1 14 1 -8 -3 5 60 -2 1 6 -1 -4 -3 32 1 -8 -1 22 4 -10 -34 3 -3 -4 4 11 1 -40 2 5 -3 -10 1 14 20 0 6 3 -3 -4 2 19b =-620239-22-1545>> x0=zeros(8,1);>> [x,n]=gauseidel(A,b,x0)x =3.5441-4.88771.94820.45251.4283-1.1606-0.10811.6743n =44即在迭代44次后可求的方程的近似解第3个的程序为>> A=[4 -1 0 0 0 0 0 0 0 0;-1 4 -1 0 0 0 0 0 0 0;0 -1 4 -1 0 0 0 0 0 0;0 0 -1 4 -1 0 0 0 0 0;0 0 0 -1 4 -1 0 0 0 0;0 0 0 0 -1 4 -1 0 0 0;0 0 0 0 0 -1 4 -1 0 0;0 0 0 0 0 0 -1 4 -1 0;0 0 0 0 0 0 0 -1 4 -1;0 0 0 0 0 0 0 0 -1 4;],b=[7 5 -13 2 6 -12 14 -4 5 -5]'A =4 -1 0 0 0 0 0 0 0 0-1 4 -1 0 0 0 0 0 0 00 -1 4 -1 0 0 0 0 0 00 0 -1 4 -1 0 0 0 0 0 0 0 0 -1 4 -1 0 0 0 0 0 0 0 0 -1 4 -1 0 0 0 0 0 0 0 0 -1 4 -1 0 0 0 0 0 0 0 0 -1 4 -1 0 0 0 0 0 0 0 0 -1 4 -1 0 0 0 0 0 0 0 0 -1 4b =75-1326-1214-45-5>> x0=zeros(10,1);>> [x,n]=gauseidel(A,b,x0)x =2.00001.0000-3.0000-0.00001.0000-2.00003.0000-0.00001.0000-1.0000n =12 在迭代12次后得到方程的近似解用超松弛迭代的源程序为function [x,n]=SOR(A,b,x0,w,eps,M)if nargin==4eps=1.0e-6;M=200;elseif nargin<4errorreturnelseif nargin==5M=200;endif(w<=0||w>=2)error;return;endD=diag(diag(A));L=-tril(A,-1);U=-triu(A,1);B=inv(D-L*w)*((1-w)*D+w*U);f=w*inv((D-L*w))*b;x=B*x0+f;n=1;while norm(x-x0)>=epsx0=x;x=B*x0+f;n=n+1;if(n>=M)disp('Warning:不收敛!');return;endend解第一个方程组选取抄松弛因子为1程序为:A=[4 2 -3 -1 2 1 0 0 0 0;8 6 -5 -3 6 5 0 1 0 0;4 2 -2 -1 3 2 -1 0 3 1;0 -2 1 5 -1 3 -1 1 9 4;-4 2 6 -1 6 7 -3 3 2 3;8 6 -8 5 7 17 2 6 -3 5;0 2 -1 3 -4 2 5 3 0 1;16 10 -11 -9 17 34 2 -1 2 2;4 6 2 -7 13 9 2 0 12 4;0 0 -1 8 -3 -24 -8 6 3 -1;],b=[5 12 3 2 3 46 13 38 19 -21]'A =4 2 -3 -1 2 1 0 0 0 08 6 -5 -3 6 5 0 1 0 04 2 -2 -1 3 2 -1 0 3 10 -2 1 5 -1 3 -1 1 9 4-4 2 6 -1 6 7 -3 3 2 38 6 -8 5 7 17 2 6 -3 50 2 -1 3 -4 2 5 3 0 116 10 -11 -9 17 34 2 -1 2 24 6 2 -7 13 9 2 0 12 40 0 -1 8 -3 -24 -8 6 3 -1b =51232346133819-21x0=[0 0 0 0 0 0 0 0 0 0]';[x,n]=SOR(A,b,x0,1)Warning:不收敛!x =1.0e+247 *0.0165-0.02710.2202-0.4576-0.59510.3138-0.43812.24500.04137.4716n =200迭代次数太多可能不收敛解第2个的程序为A=[4 2 -4 0 4 2 0 0;2 2 -1 2 1 3 2 0;-4 -1 14 1 -8 -3 5 6;0 -2 1 6 -1 -4 -3 3;2 1 -8 -1 22 4 -10 -3;4 3 -3 -4 4 11 1 -4;0 2 5 -3 -10 1 14 2;0 0 6 3 -3 -4 2 19;],b=[0 -6 20 23 9 -22 -15 45]'A =4 2 -4 0 4 2 0 02 2 -1 2 13 2 0-4 -1 14 1 -8 -3 5 60 -2 1 6 -1 -4 -3 32 1 -8 -1 22 4 -10 -34 3 -3 -4 4 11 1 -40 2 5 -3 -10 1 14 20 0 6 3 -3 -4 2 19b =-620239-22-1545>> x0=[0 0 0 0 0 0 0 0]';[x,n]=SOR(A,b,x0,0.8)x =3.5441-4.88771.94820.45251.4283-1.1606-0.10811.6743n =52得到结果为迭代了52次得到近似解松弛因子为0.8 [x,n]=SOR(A,b,x0,0.9)x =3.5441-4.88771.94820.45251.4283-1.1606-0.10811.6743n =47得到结果为迭代了47次得到近似解松弛因子为0.9> [x,n]=SOR(A,b,x0,1)x =3.5441-4.88771.94820.45251.4283-1.1606-0.10811.6743n =44得到结果为迭代了44次得到近似解松弛因子为1.0解第3个的程序为>> A=[4 -1 0 0 0 0 0 0 0 0;-1 4 -1 0 0 0 0 0 0 0;0 -1 4 -1 0 0 0 0 0 0;0 0 -1 4 -1 0 0 0 0 0;0 0 0 -1 4 -1 0 0 0 0;0 0 0 0 -1 4 -1 0 0 0;0 0 0 0 0 -1 4 -1 0 0;0 0 0 0 0 0 -1 4 -1 0;0 0 0 0 0 0 0 -1 4 -1;0 0 0 0 0 0 0 0 -1 4;],b=[7 5 -13 2 6 -12 14 -4 5 -5]'A =4 -1 0 0 0 0 0 0 0 0-1 4 -1 0 0 0 0 0 0 00 -1 4 -1 0 0 0 0 0 00 0 -1 4 -1 0 0 0 0 00 0 0 -1 4 -1 0 0 0 00 0 0 0 -1 4 -1 0 0 00 0 0 0 0 -1 4 -1 0 00 0 0 0 0 0 -1 4 -1 0 0 0 0 0 0 0 0 -1 4 -1 0 0 0 0 0 0 0 0 -1 4b =75-1326-1214-45-5>> x0=[0 0 0 0 0 0 0 0 0 0]';>> [x,n]=SOR(A,b,x0,0.8)x =2.00001.0000-3.0000-0.00001.0000-2.00003.0000-0.00001.0000-1.0000n =19即迭代了19次得到方程的近似解松弛因子为0.8>> [x,n]=SOR(A,b,x0,0.9)x =2.00001.0000-3.0000-0.00001.0000-2.00003.0000-0.00001.0000-1.0000n =16即迭代了16次得到方程的近似解松弛因子为0.9 [x,n]=SOR(A,b,x0,1)x =2.00001.0000-3.0000-0.00001.0000-2.00003.0000-0.00001.0000-1.0000n =12即迭代了12次得到方程的近似解松弛因子为1。