追赶法解三对角方程组
matlab追赶法求解方程组
![matlab追赶法求解方程组](https://img.taocdn.com/s3/m/8a9d241ecdbff121dd36a32d7375a417866fc127.png)
matlab追赶法求解方程组方程组是数学中常见的问题之一,解决方程组可以帮助我们理解和解决实际问题。
在数值计算中,matlab是一种常用的工具,它提供了许多求解方程组的方法。
其中,追赶法是一种常用的方法之一,它可以高效地求解三对角线方程组。
三对角线方程组是指方程组中只有主对角线和两个相邻的次对角线上有非零元素,其余元素均为零。
这种方程组在实际问题中经常出现,例如求解热传导方程、电路分析等。
追赶法是一种特殊的高斯消元法,它通过对方程组进行变换,将其转化为一个上三角形方程组和一个下三角形方程组,从而简化求解过程。
追赶法的基本思想是通过迭代的方式,逐步消去次对角线上的元素,最终得到方程组的解。
具体步骤如下:1. 将原方程组表示为矩阵形式,设为A*X=B,其中A是一个n×n的矩阵,X和B是n维列向量。
2. 对A进行LU分解,得到一个上三角矩阵U和一个下三角矩阵L,使得A=L*U。
3. 将方程组A*X=B转化为L*U*X=B。
4. 令Y=U*X,将方程组转化为L*Y=B。
5. 通过迭代的方式,逐步求解Y和X。
首先求解L*Y=B,然后求解U*X=Y。
6. 求解L*Y=B时,从第一行开始,逐行求解Y的每个分量。
设第i 行的元素为y(i),则有y(i)=B(i)-L(i,i-1)*y(i-1),其中L(i,i-1)是L矩阵中第i行第i-1列的元素。
7. 求解U*X=Y时,从最后一行开始,逐行求解X的每个分量。
设第i行的元素为x(i),则有x(i)=(Y(i)-U(i,i+1)*x(i+1))/U(i,i),其中U(i,i+1)是U矩阵中第i行第i+1列的元素。
通过以上步骤,我们可以得到方程组的解X。
追赶法是一种高效的求解三对角线方程组的方法,它的时间复杂度为O(n),其中n是方程组的维数。
相比于其他求解方法,追赶法具有计算量小、速度快的优势。
在matlab中,我们可以使用tridiag函数来实现追赶法求解方程组。
追赶法
![追赶法](https://img.taocdn.com/s3/m/1a865f6b561252d380eb6e74.png)
追赶法/平方根法 例2.4.1 设4阶方程组AX=B 为⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡-=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡------121653342231124321x x x x这就是一个三对角方程组,既系数矩阵除了对角线的“三斜线”以外的元素均为0。
用追赶法求解三对角方程组的一种做法是把系数矩阵A 写成下列形式的LU 分解(这里采用Doolittle 分解,类似地也可以采用Crout 分解):()1.4.2321111153342231124321432⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡---⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡------u u u u l l l 即L 为单位上三角阵,两斜行,主对角线元素为1,其下方的斜行元素特定;U 为上三角阵,也是两斜行,主对角线元素特定,其上方斜行的元素与A 对应的斜行元素相同(直接验算可知道)。
利用矩阵乘法规则,按顺序依次考虑A 的11a ->21a ->22a ->32a ->33a ->43a ->44a ,并对比(2.4.1)式两端可得2=1u → 1u =2 -1=12u l → 2l =-1/1u =-1/23=-2l +2u →2u =3+2l =5/2-2=23u l → 3l =-2/2u =-4/5 4=-23l +3u → 3u =4+23l =12/5-3=34u l →4l =-3/3u =-5/45=-34l +4u 4u =5+3⨯(-5/4)=5/4即得分解⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡---⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡---=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡------4/535/1222/51214/515/412/115334223112于是用前推过程求解下三角方程组⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡-=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡---121614/515/412/114321y y y y 得⎪⎪⎩⎪⎪⎨⎧=+==+-==+==2/54/515/65/4242/1163423121y y y y y y y再用回代过程求解上三角方程组⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡---2/55/6464/535/1222/5124321x x x x 得⎪⎪⎩⎪⎪⎨⎧=+==+==+===52/)6(4)2/5/()24(3)5/12/()35/6(2)4/5/()2/5(2132434x x x x x x x 即的方程组的解()T x 2,3,4,5=.从实例看到,三对角方程组的追赶法是三角分解发的一种特殊应用,因此,一般地,如果对三角矩阵n n R A ⨯∈非奇异,其顺序主子式)1,...,2,1(0-=≠∆n i i ,则解三对角方程组Ax=d:()2.4.2...............12112111122211⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡-----n n n n n nn n n d d d d x x x x b a c b a c b a c b 的追赶法可描述如下:令A=LU ,则⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡-----n n n nn nn n n u c u c u c u l l l b a c b a c b a c b 1122113211122211......1 (1)11.........利用矩阵乘法规则,可求L 和U 的计算公式:⎩⎨⎧=-===--)),...3,2((/1111n i c l b u u a l b u i i i i i i i (2.4.3)于是,求解LY=D 得⎩⎨⎧=-==-)),...3,2(111n i y l d y d y i i i i (2.4.4)再求解UX=Y ,得三对方程组的解⎩⎨⎧=-==+)),...3,2(/)(/1n i u x c y x u y x i i i i i n n n (2.4.5)上述3个公式便组成解三角方程组的追赶法,国外称Thomas 算法。
三对角方程组的追赶法
![三对角方程组的追赶法](https://img.taocdn.com/s3/m/ede2587ea417866fb84a8edf.png)
2013-2014(1)专业课程实践论文题目:三对角方程组的追赶法一、算法理论在一些实际问题中,例如解常微分方程边值问题,解热传导方程以及船体数学放样中建立三次样条函数等,都会要求解系数矩阵为对角占优的三对角线方程组11112222211111n n n n n n n n n b c x f a b c x f a b c x f a b x f -----⎛⎫⎛⎫⎛⎫⎪⎪ ⎪ ⎪⎪ ⎪ ⎪⎪ ⎪= ⎪⎪⎪ ⎪⎪⎪ ⎪⎪ ⎪⎝⎭⎝⎭⎝⎭, 简记为Ax f =。
求解Ax f =:等价于解两个三角形方程组,Ly f y =求;,Ux y x =求.从而得到解三对角线方程组的追赶法公式:(1)计算{}i β的递推公式()111/,/,2,3,,1;i i i i i c b c b a i n βββ==-=- (2) 解Ly f =()()11111/,/,2,3,,;i i i i i i i y f b y f a y b a i n β--==--=(3)解Ux y =1,,1,2,2,1.n n i i i i x y x y x i n n β+==-=--我们将计算系数12112n n y y y βββ-→→→→→→ 及的过程称为追的过程, 将计算方程组的解11n n x x x -→→→ 的过程称为赶的过程。
#include <stdio.h>#include <math.h>#include<stdlib.h>#define N 20double a[N], b[N], c[N-1], f[N], r[N];int n;int i;void LUDecompose(); // LU分解void backSubs(); // 回代void main(){printf("请输入方程的维数n=");scanf("%d",&n);getchar();if(n>N||n<=0){printf("由于该维数过于犀利, 导致程序退出!");return;}printf("\n输入下三角元素\n");printf("输入%d个a值: ", n-1);for (i=1; i<n; i++)scanf("%lf", &a[i]);getchar();printf("\n输入主对角线元素\n");printf("输入%d个b值: ", n);for (i=0; i<n; i++)scanf("%lf", &b[i]);getchar();printf("\n输入上三角元素\n");printf("输入%d个c值: ", n-1);for (i=0; i<n-1; i++)scanf("%lf", &c[i]);getchar();printf("\n输入%d个方程组右端项: \n", n);for (i=0; i<n; i++)scanf("%lf", &f[i]);getchar();LUDecompose();backSubs();printf("\n线性方程组的解为: \n");for (i=0; i<n; i++)printf("x%d=%lf\n", i+1, f[i]);}void LUDecompose(){ //α被b取代, β被c取代, 以节省存储空间c[0]=c[0]/b[0];for(i=1;i<n-1;i++){r[i]=a[i];b[i]=b[i]-r[i]*c[i-1];c[i]=c[i]/b[i];}r[i]=a[i];b[i]=b[i]-r[i]*c[i-1];}void backSubs(){ // y被f取代, x也被f取代, 以节省存储空间f[0]=f[0]/b[0];for(i=1; i<n; i++)f[i]=(f[i]-r[i]*f[i-1])/b[i];f[n-1]=f[n-1];for(i=n-2;i>=0;i--)f[i]=f[i]-c[i]*f[i+1];}四、 算法实现例1.用该程序计算三对角线方程组2100012100A 012100012100012⎛⎫ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪⎝⎭---=-----, 10000b ⎛⎫⎪ ⎪⎪= ⎪ ⎪ ⎪⎝⎭计算其方程组的解。
matlab追赶法解101阶三对角方程组
![matlab追赶法解101阶三对角方程组](https://img.taocdn.com/s3/m/21e07d995122aaea998fcc22bcd126fff7055dc4.png)
在探讨MATLAB追赶法解101阶三对角方程组之前,我们首先需要了解什么是追赶法和什么是三对角方程组。
追赶法又称托马斯算法,是一种用于求解带状矩阵(即只有主对角线和两条相邻的对角线上有非零元素的矩阵)的线性方程组的方法。
而三对角矩阵就是只有主对角线和两条相邻的对角线上有非零元素的矩阵。
在实际应用中,求解带状矩阵的线性方程组是非常常见的,特别是在数值计算和科学工程领域。
现在,让我们深入探讨MATLAB追赶法解101阶三对角方程组的方法和具体步骤。
一、MATLAB追赶法解101阶三对角方程组1. 概念介绍101阶三对角方程组是一个非常大的线性方程组,通常使用传统的高斯消元法来求解会耗费大量的时间和计算资源。
而MATLAB追赶法通过利用三对角矩阵的特殊性质,可以有效地简化计算过程,并且节省大量的内存和计算资源。
2. 追赶法步骤(1)将原方程组化为追赶法所需的形式;(2)利用追赶法求解三对角线性方程组。
二、追赶法求解101阶三对角方程组的实现过程1. 将原方程组化为追赶法所需的形式对于101阶三对角方程组,我们首先需要将其化为追赶法所需的形式。
这个过程涉及到选取合适的追赶元和追赶子以及对原方程组的变形,将其化为追赶法能够直接处理的形式。
2. 利用追赶法求解线性方程组一旦将原方程组化为追赶法所需的形式,我们就可以利用追赶法对其进行求解。
追赶法的核心是通过追赶子的迭代计算,逐步求得线性方程组的解。
在MATLAB中,可以使用内置的追赶法求解函数,也可以编写自定义的追赶法算法来实现对101阶三对角方程组的求解。
三、个人观点和理解在实际工程和科学计算中,追赶法是一种非常有效的求解带状矩阵线性方程组的方法。
对于大规模的三对角方程组,特别是高阶的情况,传统的直接求解方法往往会遇到内存和计算资源的限制,而追赶法能够通过精巧的迭代计算,在保证解的精度的显著提高计算效率。
在MATLAB中,通过调用内置的追赶法函数,可以快速地求解大规模的三对角方程组,极大地方便了工程实践中的数值计算工作。
【良心出品】MATLAB 追赶法求解三对角方程组的算法原理例题与程序
![【良心出品】MATLAB 追赶法求解三对角方程组的算法原理例题与程序](https://img.taocdn.com/s3/m/f4b3d5293b3567ec112d8a6b.png)
3)三对角形线性方程组123456789104100000000141000000001410000000014100000000141000000001410000000014100000000141000000001410000000014x x x x x x x x x x -⎡⎤⎡⎤⎢⎥⎢⎥--⎢⎥⎢⎥⎢⎥⎢⎥--⎢⎥⎢⎥--⎢⎥⎢⎥⎢⎥⎢⎥--⎢⎥⎢⎥--⎢⎥⎢⎥⎢⎥⎢⎥--⎢⎥⎢⎥--⎢⎥⎢⎥⎢⎢⎥--⎢⎢⎥⎢⎢⎥-⎣⎦⎣⎦7513261214455⎡⎤⎢⎥⎢⎥⎢⎥-⎢⎥⎢⎥⎢⎥=⎢⎥-⎢⎥⎢⎥⎢⎥-⎢⎥⎥⎢⎥⎥⎢⎥⎥⎢⎥-⎣⎦*(2,1,3,0,1,2,3,0,1,1)T x =--- 二、数学原理设系数矩阵为三对角矩阵1122233111000000000000000n n n nn b c a b c a b A a b c a b ---⎛⎫ ⎪ ⎪ ⎪=⎪ ⎪ ⎪⎪ ⎪⎝⎭则方程组Ax=f 称为三对角方程组。
设矩阵A 非奇异,A 有Crout 分解A=LU ,其中L 为下三角矩阵,U 为单位上三角矩阵,记1122233110000100000001000000100,00000000000001n n nn b L U γαβγββγβ--⎛⎫⎛⎫ ⎪⎪ ⎪ ⎪ ⎪ ⎪∂==⎪⎪ ⎪⎪ ⎪ ⎪⎪ ⎪ ⎪ ⎪∂⎝⎭⎝⎭可先依次求出L ,U 中的元素后,令Ux=y ,先求解下三角方程组Ly=f 得出y ,再求解上三角方程组Ux=y 。
事实上,求解三对角方程组的2追赶法将矩阵三角分解的计算与求解两个三角方程组的计算放在一起,使算法更为紧凑。
其计算公式为:1111,1111,111,2,3,,,1,2,,1ii i i i i i i ii i i i i n ni i i i c f b y i n c a b a f y y x y i n n x y x βγββαβγγβαβγ--+⎧===⎪⎪=⎪⎪⎪==-=⎪⎪⎨-⎪=⎪⎪=⎪⎪=--⎪=-⎪⎩对对(*)三、程序设计function x=chase(a,b,c,f)%求解线性方程组Ax=f,其中A 是三对角阵 %a 是矩阵A 的下对角线元素a(1)=0 %b 是矩阵A 的对角线元素%c 是矩阵A 的上对角线元素c(n)=0 %f 是方程组的右端向量 n=length(f);x=zeros(1,n);y=zeros(1,n); d=zeros(1,n);u= zeros(1,n); %预处理 d(1)=b(1); for i=1:n-1 u(i)=c(i)/d(i);d(i+1)=b(i+1)-a(i+1)*u(i); end%追的过程y(1)=f(1)/d(1); for i=2:ny(i)=(f(i)-a(i)*y(i-1))/d(i); end%赶的过程 x(n)=y(n); for i=n-1:-1:1x(i)=y(i)-u(i)*x(i+1); end>> a=[0,-1,-1,-1,-1,-1,-1,-1,-1,-1];>> b=[4,4,4,4,4,4,4,4,4,4];>> c=[-1,-1,-1,-1,-1,-1,-1,-1,-1,0];>> f=[7,5,-13,2,6,-12,14,-4,5,-5];>> x=chase(a,b,c,f)x =2.00001.0000-3.00000.00001.0000-2.00003.0000-0.00001.0000-1.0000四、结果分析和讨论追赶法求解的结果为x=(2,1,-3,0,1,-2,3,0,1,-1)T。
追赶法求解三对角线性方程组
![追赶法求解三对角线性方程组](https://img.taocdn.com/s3/m/d43ccd8102020740be1e9b9a.png)
追赶法求解三对角线性方程组一 实验目的利用编程方法实现追赶法求解三对角线性方程组。
二 实验内容1、 学习和理解追赶法求解三对角线性方程组的原理及方法;2、 利用MATLAB 编程实现追赶法;3、 举例进行求解,并对结果进行分。
三 实验原理设n 元线性方程组Ax=d 的系数矩阵A 为非奇异的三对角矩阵11222=(1)(n 1)()()a c b a c A a n c b n a n ⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥--⎢⎥⎢⎥⎣⎦………… 这种方程组称为三对角线性方程组。
显然,A 是上下半宽带都是1的带状矩阵。
设A 的前n-1个顺序主子式都不为零,根据定理2.5的推论,A 有唯一的Crout 分解,并且是保留带宽的。
其中L 是下三角矩阵,U 是单位上三角矩阵。
利用矩阵相乘法,可以1112212(1)1u(n 1)()()1l u m l u A LU l n m n l n ⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥==⨯⎢⎥⎢⎥--⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦……………得到:由上列各式可以得到L 和U 。
引入中间量y ,令yUx =,则有:已知L 和d ,可求得y 。
则可得到y 的求解表达式:11/12,3,,()(1)*y()=()[()(1)]/y d l i nm i y i li i di y i di m i y i li==-+=--…1111111/1(2)(1)(1)u (1)(11)/(1)(1)(1)l a l u c u c l mi bi i n a i m i i l i i n ci li ui ui ci li l i a i b i ui=*===≤≤+=+++≤≤-=•=+=+-+Ax LUx Ly d Ly d ====1112222(1)(n 1)(n 1)()()(n)(n)l y d m l y d l n y d m n l n y d ⎡⎤⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⨯=⎢⎥⎢⎥⎢⎥---⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎣⎦……………由y Ux =得:111112221u(n 1)(n 1)(n 1)1(n)(n)u x y u x y x y x y ⎡⎤⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⨯=⎢⎥⎢⎥⎢⎥---⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎣⎦………… 可得到X 的求解表达式:()()1,2,,1()()u()(1)x n y n i n n x i y i i x i ==--=-+… 从而得到Ax=d 的解x 。
追赶法求解三对角方程组
![追赶法求解三对角方程组](https://img.taocdn.com/s3/m/043a568bb8f3f90f76c66137ee06eff9aef849c8.png)
追赶法求解三对角方程组追赶法,这个名字听起来就像是一种竞赛,其实它是一种解决三对角方程组的好办法,简单得让人想笑。
想象一下,你在一个热闹的市场,身边是熙熙攘攘的人群,突然你的朋友向你喊:“嘿,快来帮我算这个方程组!”你心里想,什么方程组啊,我可不想被这复杂的数学问题给吓倒。
别担心,追赶法就像你身边的超级英雄,轻松搞定这些棘手的问题。
三对角方程组的形状其实就像个台阶,每一层都有自己的高度。
我们通常会遇到的就是那种对角线上的元素大于零,旁边的元素都比较小,这样一来,整个方程组就像是在给你发出信号:“来吧,来解决我!”在这个市场里,你得学会怎么“追赶”那些神秘的数。
追赶法的核心就是把复杂的问题变得简单,想想如果你能把一个巨大的蛋糕切成小块,那你就能轻松吃掉它。
咳咳,数学也是这样!你得确定你的三对角矩阵。
这个矩阵就像是你的地图,告诉你哪里有高地,哪里有低洼。
然后,你需要开始你的追赶之旅,逐步解决每一个未知数。
听上去是不是有点像探险?这就对了!在这个过程中,你需要运用一些聪明的小技巧,比如把当前的未知数用前一个已知数来表达,仿佛在追赶一个流动的目标。
哇,数学原来可以这么有趣,仿佛在和未知数玩捉迷藏。
我们就来谈谈如何进行具体的计算。
假设你有一个三对角矩阵,分为主对角线和两条副对角线。
你得把这个矩阵转化成一个更易处理的形式。
就像你把一堆衣服整理成一个个小堆,清晰明了。
通过一些简单的运算,你可以得到一个新的方程组。
这个时候,你会发现,原本复杂的问题似乎在慢慢迎刃而解,简直就像是阳光透过云层。
然后,进入最终的“追赶”阶段。
你得逐步代入已知的值,像是在追逐那只一直跑的兔子,直到抓到为止。
这一步可能需要一些耐心,但你可以想象自己正在追逐一场美妙的冒险,哪怕有点小曲折也没关系。
在这个过程中,你会体会到一种成就感,仿佛自己是数学界的超级英雄,成功解出了一个又一个的未知数。
好啦,最后我们来总结一下追赶法的魅力。
它不仅让复杂的三对角方程组变得简单,还让整个过程充满乐趣。
追赶法(源自#3-4)
![追赶法(源自#3-4)](https://img.taocdn.com/s3/m/7c5dd214a21614791711286c.png)
【附注】 解三对角方程组的追赶法设已知方程组AX D =是三对角方程组,其 矩阵形式为b c a b c a b c a b x x x x d d d d n n n n n n n n n 1122211112112100 -----⎡⎣⎢⎢⎢⎢⎢⎢⎤⎦⎥⎥⎥⎥⎥⎥⎡⎣⎢⎢⎢⎢⎢⎢⎤⎦⎥⎥⎥⎥⎥⎥=⎡⎣⎢⎢⎢⎢⎢⎢⎤⎦⎥⎥⎥⎥⎥⎥ (3-40) 可以证明,若系数矩阵A 满足如下条件:(1) b i ≠0(2) b a c i i i ≥++-11 ()0≤≤i n(3) b a c i i i ≥+ ()0≤≤i n则三对角方程组(3-40)用追赶法可以稳定求解。
这里的条件(2)、(3)称为“对角占优”。
考察三对角方程组具有如下特点:首尾两个 方程各只含两个未知数,其余方程各含三个未知 数,而且后一个方程包含前一个方程的两个未知 数。
追赶法的基本思想是采用依次消元的方法, 依次从前一个方程“解”出一个未知数代入到下 一个方程,谓之“追”;代到最末一个方程时, 只剩下一个未知数,于是该方程可解。
然后将所 得到的解依次回代到前面的方程,解出全部未知 数,谓之“赶”。
前后合一,故称追赶法。
为了导出追赶法的计算公式,将式(3-40)写 成方程组形式b xc xd a x b x c x d a x b x c x d a x b x c x d a x b x d i i i i i i i n n n n n n n n n n n n 111212122232111211111+=++=++=++=+=⎧⎨⎪⎪⎪⎪⎩⎪⎪⎪⎪-+------- (3-41) 由方程组(3-41)第一式解出x 1211111x b c b d x -= 令:u c b 111= ,v d b 111= (3-42)x v u x 1112=- (3-43) 将式(3-43)和(3-42)代入到方程组(3-41)第二式解 出x 2x v u x 2223=- (3-44) 其中:u c b a u 22221=- v d a v b a u 2221221=-- (3-45) 依次做下去,由方程组(3-41)第i 式解出x i x v u x i i i i =-+1 (3-46) 其中:u c b a u i i i i i =--1v d a v b a u i i i i i i i =----11 (3-47) 最后,由方程组(3-41)第n 式解出x nx d a v b a u v n n n n n n n n =--=--11(3-48) 因为最后一个方程只剩一个未知数x n ,所以只有 v n ,没有u n 。
解三对角方程组的追赶法
![解三对角方程组的追赶法](https://img.taocdn.com/s3/m/b5ab14856529647d272852b5.png)
~ A LU
~ 角矩阵,且 A L DP
, unn ), P D1U , 则 P 为单位上三
A
对称,故有
A P DL A LDP
T T T
15
第二章 解线性方程组的直接方法
AT PT DLT A LDP
由Doolitle分解的唯一性,得
P L, 即
T
A P DP
T
对任意非零向量 是正定的
T
x,
T
y P1x ,
T 1 1
于是由 A
x Dx x ( P ) AP x T 1 T 1 ( P x) AP x y Ay 0
即 D 正定,所以 D 的对角元素均为正数。令
~ D diag( u11 ,, u nn )
16
第二章 解线性方程组的直接方法
(li )
(ui )
di ai di 1 di
( yi )
12
第二章 解线性方程组的直接方法
3. dn bn dn
4. 对
( xn )
i n 1, n 2,,1 (d i ci d i 1 ) bi d i
5.输出
dx
( xi )
,停机.
追赶法的基本思想与Gauss消去法及三角分解法相同, 只是由于系数中出现了大量的零,计算中可将它们撇开, 从而使得计算公式简化,也大大地减少计算量.其乘除运 算量为 5n 4
ck bk 1 c k 1
0 c n 1 a n bn
8
第二章 解线性方程组的直接方法
其中 uk bk ck 1 ak uk 1
(k 2,, n)
MATLAB-追赶法求解三对角方程组的算法原理例题与程序
![MATLAB-追赶法求解三对角方程组的算法原理例题与程序](https://img.taocdn.com/s3/m/d094a7975022aaea998f0f6a.png)
3)三对角形线性方程组123456789104100000000141000000001410000000014100000000141000000001410000000014100000000141000000001410000000014x x x x x x x x x x -⎡⎤⎡⎤⎢⎥⎢⎥--⎢⎥⎢⎥⎢⎥⎢⎥--⎢⎥⎢⎥--⎢⎥⎢⎥⎢⎥⎢⎥--⎢⎥⎢⎥--⎢⎥⎢⎥⎢⎥⎢⎥--⎢⎥⎢⎥--⎢⎥⎢⎥⎢⎢⎥--⎢⎢⎥⎢⎢⎥-⎣⎦⎣⎦7513261214455⎡⎤⎢⎥⎢⎥⎢⎥-⎢⎥⎢⎥⎢⎥=⎢⎥-⎢⎥⎢⎥⎢⎥-⎢⎥⎥⎢⎥⎥⎢⎥⎥⎢⎥-⎣⎦*(2,1,3,0,1,2,3,0,1,1)T x =--- 二、数学原理设系数矩阵为三对角矩阵112223311100000000000000000n n n n n b c a b c a b A a b c a b ---⎛⎫ ⎪⎪ ⎪=⎪ ⎪ ⎪⎪⎪⎝⎭L L L M M MM M M L L则方程组Ax=f 称为三对角方程组。
设矩阵A 非奇异,A 有Crout 分解A=LU ,其中L 为下三角矩阵,U 为单位上三角矩阵,记11222331100001000000010000000100,00000000000001n n nn b L U γαβγββγβ--⎛⎫⎛⎫⎪ ⎪⎪ ⎪ ⎪ ⎪∂==⎪⎪ ⎪ ⎪ ⎪ ⎪⎪ ⎪⎪ ⎪∂⎝⎭⎝⎭L L L LL L M M M MM M M MM M L L LLL可先依次求出L ,U 中的元素后,令Ux=y ,先求解下三角方程组Ly=f 得出y ,再求解上三角方程组Ux=y 。
事实上,求解三对角方程组的2追赶法将矩阵三角分解的计算与求解两个三角方程组的计算放在一起,使算法更为紧凑。
其计算公式为:1111,1111,111,2,3,,,1,2,,1ii i i i i i i ii i i i i n ni i i i c f b y i n c a b a f y y x y i n n x y x βγββαβγγβαβγ--+⎧===⎪⎪=⎪⎪⎪==-=⎪⎪⎨-⎪=⎪⎪=⎪⎪=--⎪=-⎪⎩L L 对对(*)三、程序设计function x=chase(a,b,c,f)%求解线性方程组Ax=f,其中A 是三对角阵 %a 是矩阵A 的下对角线元素a(1)=0 %b 是矩阵A 的对角线元素%c 是矩阵A 的上对角线元素c(n)=0 %f 是方程组的右端向量 n=length(f);x=zeros(1,n);y=zeros(1,n); d=zeros(1,n);u= zeros(1,n); %预处理 d(1)=b(1); for i=1:n-1 u(i)=c(i)/d(i);d(i+1)=b(i+1)-a(i+1)*u(i); end%追的过程y(1)=f(1)/d(1); for i=2:ny(i)=(f(i)-a(i)*y(i-1))/d(i); end%赶的过程 x(n)=y(n); for i=n-1:-1:1x(i)=y(i)-u(i)*x(i+1); end>> a=[0,-1,-1,-1,-1,-1,-1,-1,-1,-1];>> b=[4,4,4,4,4,4,4,4,4,4];>> c=[-1,-1,-1,-1,-1,-1,-1,-1,-1,0];>> f=[7,5,-13,2,6,-12,14,-4,5,-5];>> x=chase(a,b,c,f)x =2.00001.0000-3.00000.00001.0000-2.00003.0000-0.00001.0000-1.0000四、结果分析和讨论追赶法求解的结果为x=(2,1,-3,0,1,-2,3,0,1,-1)T。
用追赶法解方程组步骤
![用追赶法解方程组步骤](https://img.taocdn.com/s3/m/4a98adf6a0c7aa00b52acfc789eb172dec639970.png)
用追赶法解方程组步骤用追赶法解方程组的步骤追赶法是一种常用于解线性方程组的方法,也被称为托马斯算法。
它适用于系数矩阵为三对角矩阵的方程组,即只有主对角线和两个相邻的副对角线上有非零元素的方程组。
下面将介绍用追赶法解方程组的具体步骤。
1. 确定方程组的形式我们需要将线性方程组转化为矩阵形式,即AX=B,其中A是系数矩阵,X是未知数向量,B是常数向量。
在追赶法中,系数矩阵A 应为三对角矩阵。
2. 分解系数矩阵接下来,我们需要对系数矩阵A进行分解。
将系数矩阵A分解为L、D、U三个矩阵的乘积,即A=LDU分解。
其中L是下三角矩阵,D 是对角矩阵,U是上三角矩阵。
分解的目的是简化方程组的求解过程。
3. 前向追赶在前向追赶过程中,我们需要解决方程组LY=B,其中Y是辅助向量。
首先,我们可以从第一个方程开始,直接求解出Y的第一个分量。
然后,利用递推关系式,依次求解出Y的其他分量。
这个过程类似于追逐,从前往后一步步追赶。
4. 消元接下来,我们需要进行消元操作,将方程组转化为DUX=Y。
这个过程中,我们需要利用到前面分解得到的L、D和U矩阵。
通过将L矩阵与方程组相乘,可以消去X的前面分量。
然后,通过将D矩阵与方程组相乘,可以将X的分量消为1。
最后,通过将U矩阵与方程组相乘,可以将X的后面分量消去。
5. 后向追赶在后向追赶过程中,我们需要解决方程组UX=Y,即通过追逐的方式从后往前求解X的分量。
首先,我们可以从最后一个方程开始,直接求解出X的最后一个分量。
然后,利用递推关系式,依次求解出X的其他分量。
6. 检验解的正确性在求解完成后,我们需要检验解的正确性。
将求得的X代入原方程组中,验证方程组是否成立。
如果方程组成立,那么我们得到的解就是正确的。
总结:追赶法是一种有效解线性方程组的方法,它通过将系数矩阵分解为L、D、U三个矩阵,并利用前向追赶和后向追赶的方式求解未知数。
追赶法的优点是求解过程简单快速,适用于特定类型的方程组。
解三对交线方程组追赶法
![解三对交线方程组追赶法](https://img.taocdn.com/s3/m/b49bf213e45c3b3566ec8b48.png)
算量小,但增加了计算机的内存,则两者各有利弊。这实际上也是 一种计算方法好坏的衡量标准:两者兼顾。
稳定性可由定理17反映:
定理17 设有三对角线方程组 Ax,f其中A满足(7.2)式,则
有 i1 ,因此用归纳法证明。(2)、(3)只要用三角不等式即可证 得。
于是,解 Ax 化f 为解两个方程组:
b3 a4
c3 b4
x3 x4
f4 f4
b1 a2
c1 b2
x1 x2
f1 f2
LU
(7.3)
rn
a n
1
n1
1
由矩阵乘法, 得:
(1)b 1 a 1 ,c 111 ,1 c 1 /b 1
(2)a i r i,b i i r i i 1 a i i 1 ,( i 2 , ,n )
b1
c1
0
0
A
0
b2
c1 b1
a2
a3
c2 b3
c3
b1
0
c1
0 0
A(2)
B
0
0
an bn
显然,deA t) (b1deBt)(
C追赶法解三对角方程组
![C追赶法解三对角方程组](https://img.taocdn.com/s3/m/77c5713e43323968011c9246.png)
int n;
char ch;
printf("-------本程序为追赶法解三对角方程组计算程序-------\n");
do
{
printf("请输入您要计算的三对角方程组是几阶方阵(默认最大100阶方阵):\n");
scanf("%d",&n);
l[i] = b[i] - a[i-1]*u[i-1];
}
}
for(int j=0; j<n; j++)
{
if(j==0)
{
y[j] = f[j]/(float)l[j];
}
else
{
y[j] = (f[j]-a[j-1]*y[j-1])/(float)l[j];
return 0;
}
printf("请依次输入主对角线元素,中间以空格或回车隔开:\n");
for(int i=0; i<n; i++)
{
scanf("%lf",&b[i]);
}
printf("请依次输入上次对角线元素,中间以空格或回车隔开:\n");
for(i=0; i<n-1; i++)
{
printf("x%d的值为",j+1);
printf("%lf\n",x[j]);
}
printf("是否继续下一个三对角方程组的计算? 输入‘Y’继续\n");
}
解三对交线方程组的追赶法
![解三对交线方程组的追赶法](https://img.taocdn.com/s3/m/7d6352edf424ccbff121dd36a32d7375a417c697.png)
VS
矩阵元素的微小变化
在三对交线方程组中,矩阵元素的微小变 化可能会导致解的巨大变化。这种敏感性 使得追赶法在面对某些问题时表现出数值 不稳定性。
提高数值稳定性和减小误差方法
选择合适的算法参数
在追赶法中,可以通过选择合适的算法参数来提高数值稳定性。例如,可以采用部分选主元策略来避免矩阵元素的微 小变化对解的影响。
优缺点分析
优点
追赶法具有计算量小、存储量低、易于编程实现等优点。对于大规模的三对角 线性方程组,追赶法通常比其他方法更加高效。
缺点
追赶法的适用范围有限,仅适用于系数矩阵为三对角矩阵的线性方程组。此外, 当系数矩阵不满足对角占优等条件时,追赶法可能无法收敛或收敛速度较慢。
Part
02
三对交线方程组数学模型建立
问题描述与定义
三对交线方程组
在二维平面上,给定三对直线,每对直线相交于一个点,这三对交线构成的方程组称为三对交线方程 组。
求解目标
通过给定的三对交线信息,求解出这三对直线的交点坐标。
数学模型构建方法
直线方程表示
在二维平面上,一条直线可以用一般式方程 $Ax + By + C = 0$ 表示,其中 $A, B$ 不同时为0。
THANKS
感谢您的观看
回代过程
从最后一个方程开始,依次将已知量代入方程求 解,得到未知量的值。此过程称为回代过程。
关键算法实现技巧
存储优化
追赶法中的系数矩阵是三对角 的,因此可以采用一维数组进 行存储,节省存储空间。
消元技巧
在消元过程中,需要注意消元 顺序和消元系数的选择,以确 保消元过程的稳定性和效率。
回代技巧
在回代过程中,需要按照正 确的顺序将已知量代入方程 求解,避免计算错误。
追赶法解三对角方程组
![追赶法解三对角方程组](https://img.taocdn.com/s3/m/aa140c7cbdd126fff705cc1755270722192e59a8.png)
追赶法解三对角方程组追赶法解三对角方程组,这个话题听起来可能有点复杂,但其实就像我们生活中的许多事情一样,慢慢来就好。
想象一下你在追一个小兔子,兔子在草地上跳来跳去,你得不断调整自己的步伐来追上它。
三对角方程组就是在数学世界里,跟兔子玩追逐游戏。
咱们一般能看到这种方程组,它们的特点就是在主对角线上有一堆数字,旁边的对角线上也有一些数值,但其它地方几乎是空空如也,就像你打麻将时,只留下了几张关键牌,剩下的都是一些废牌。
现在,追赶法就像是一个巧妙的游戏规则,帮助我们一步一步地找到答案。
想象一下,你正在和朋友们进行一场比赛,谁先找到那个隐秘的宝藏。
你得从第一个数开始,就像你起跑一样,注意,别一开始就猛冲。
我们得保持节奏,先一步一步来,找到第一个关键点,然后再往下走。
这个过程里,你可以把每一步都记下来,像是在记录比赛中的每个进展。
你想想,咱们在生活中也常常得这样做,设定目标,逐步达成,每一步都得仔细琢磨。
咱们得来点技巧。
追赶法的核心就是,把大问题分解成小问题,就像吃西瓜时,先切成小块再慢慢享受。
你可以设定一个起始值,这样在解决下一个未知数时,就能依赖上一个已知数,就像你依靠老朋友的支持一样。
不得不提,咱们在追逐的过程中,千万别心急,急了可就容易出错。
就像考试前的复习,细水长流,耐心点,结果自会水到渠成。
这个追赶法就像是打游戏,越玩越熟练。
一开始可能有些不知所措,后来你就会发现,哎呀,其实这没什么大不了的。
你可以通过逐步替换这些值,把复杂的方程组慢慢简化,就像逐步解锁一个个关卡,最终达到终点。
当你完成的时候,心里那种成就感,就像打通了所有关卡,获得了最终大奖,爽得不得了。
在实际应用中,三对角方程组其实也常常出现在工程、物理等等领域。
这就像是大厨在厨房里,调配各种材料做出一道美味佳肴,关键是每种材料的比例得掌握好。
若是调配失误,那可就大功告成后,变成了一锅糊糊。
所以,在应用追赶法时,要时刻保持清晰的思路,别让小问题影响大局。
基于高斯消去法的追赶法
![基于高斯消去法的追赶法](https://img.taocdn.com/s3/m/8c48906b4a73f242336c1eb91a37f111f1850d28.png)
基于高斯消去法的追赶法
基于高斯消去法的追赶法是一种求解三对角矩阵线性方程组的方法。
三对角矩阵的特点是除了主对角线上的元素外,只有两个相邻的副对角线上有非零元素。
追赶法的思想是通过对三对角矩阵进行分解,将其转化为两个上、下三角矩阵的乘积形式,从而简化方程组的求解过程。
具体步骤如下:
1. 首先,对于三对角矩阵A的第一行进行变换,使得A的第一个元素为1。
2. 然后,对于i = 2, 3, ..., n,进行追赶过程,将A的第i 行的第i-1个元素(副对角线上)消去,将A的第i-1行的第i个元素(副对角线上)消去,并更新A的第i行的第i个元素(主对角线上)。
3. 最后,通过回代法求解得到方程组的解。
追赶法的优点是简单、高效,适用于解决大规模的三对角线性方程组。
它在科学计算和工程领域中有广泛的应用,例如求解抛物型偏微分方程、求解材料传输过程等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数值分析》课程设计追赶法解三对角方程组院(系)名称信息工程学院专业班级10普本信计学号*********学生姓名刘银朋指导教师张荣艳2013 年05 月31日数值分析课程设计评阅书课程设计任务书2012—2013学年第二学期专业班级:10普本信息与计算科学学号:100111014 姓名:刘银朋课程设计名称:数值分析Ⅰ、Ⅱ设计题目:追赶法解三对角方程组完成期限:自2013 年05月21 日至2013年05 月31日共10天设计依据、要求及主要内容:一、设计目的理解追赶法,掌握追赶法的算法设计以及关于追赶法的分析和综合应用,能够较熟练的应用Matlab软件编写求解追赶法的程序和应用Matlab软件数据库软件.二、设计内容(1)认真挑选有代表性的三对角方程组.(2)认真梳理解三对角方程组的解题思路.(3)比较追赶法和高斯消去法的计算精度.三、设计要求1.先用Matlab数据库中的相应的函数对选定的方程,求出具有一定精度的解. 2.然后使用所用的方法编写Matlab程序求解.3.对于使用多个方程解同意问题的,在界面上要设计成菜单的形式.计划答辩时间:2013年06 月 5 日工作任务鱼工作量要求:查阅文献资料不少于3篇,课程设计报告1篇不少于3000字.指导教师(签字):教研室主任(签字):批准日期:2013 年05 月20 日追赶法解三对角方程组摘要本文主要通过运用追赶法来求解三对角方程组的问题.追赶法是用来求解三对角方程组的专用方法,对于三对角方程组,追赶法比Gauss消去法的计算量要小的多,本文主要介绍了追赶法的原理,并用Matlab编写求解程序,以实现对三对角方程组的求解,进一步解决实际中的问题.并且根据所得出的结果分析追赶法算法和高斯消去的法的计算精度.关键词:追赶法,三对角方程组,追赶法的Matlab程序目录1.前言 (1)2.解题思想和方法 (1)2.1 追赶法解题思想 (1)2.2追赶法解题原理 (4)3.对追赶法的MATLAB求解 (4)3.1实验程序 (4)3.2 应用举例 (5)4.与高斯消去法的精度比较 (5)课程设计总结 (8)参考文献 (8)1.前言当今很多科学与工程计算问题大都可以化为线性方程组的形式,所以有效的求解线性方程组在科学和工程计算中是非常重要的.虽然线性代数方程的求解方法和数值计算软件包均很成熟,但随着并行计算机的发展,问题的求解速度和解题规模都大大提高,因而使数值计算方法和响应的数学软件包都产生了变化,相应的线性方程组的有效并行求解也引起了人们的普遍关注.追赶法是用来求解三对角方程组的专用方法,生活中很多实际问题,都归结为求解线性方程组.例如解常微分方程边值问题,解热传导方程以及船体数学放样中建立三次样条函数等,都会要求就解系数矩阵成三对角线性的方程组.而解三对角方程组的最简单方法是追赶法,公式简单,计算量小,所占用的存储单元少,所以在小机器上也能求解.追赶大事用来求解三对角方程组的专用方法,对于三对角方程组,追赶法比Gauss消去法的计算量要小得多.应用追赶法求解三对角线性方程,追赶法仍然保持LU分解特性,它是一种特殊的LU分解.充分利用了系数矩阵的特点,而且使之分解更简单,得到对三对角线性方程组的快速解法. 本文讨论使用追赶法解线性方程组.介绍追赶法的理论,求解线性方程组的追赶法的实现以及追赶法的应用.2.解题思想和方法三对角矩阵是一种具有特殊意义的带状矩阵.用差分法求解二阶常微分方程边值问题时,最后常规解为求解具有三对角系数矩阵的线性方程组.对三对角矩阵实行Doolittle(或Crout)分解,便得到求解三对角方程组的最有效方法---追赶法.设矩阵A非奇异,A有Crout分解A=LU,其中L为下三角矩阵,U为单位上三角矩阵,可先依次求出L,U中的元素后,令Ux=y,先求解下三角方程组Ly=f得出y,再求解上三角方程组Ux=y,事实上求解三对角方程组的2追赶法将矩阵三角分解的计算与求解两个三角方程组的计算放在一起,使算法更为紧凑.本文主要介绍追赶法的原理,以及编写Matlab程序实现在计算机上的应用并分析他们的计算精度,比较解三对角方程组的最优解的问题.2.1 追赶法解题思想在实际问题中,经常遇到以下形式的方程组⎪⎪⎪⎪⎩⎪⎪⎪⎪⎨⎧=+=++=++=++=+-------+-n n n n n n n n n n n n k k k k k k k d x b x a d x c x b x a d x c x b x a d x c x b x a d x c x b111112111232221212111 (2.11)这种方程组的系数矩阵A 为三对角矩阵,即⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫⎝⎛=---n nn n n k k k b a c b a c b a c b a c b A 11122211 以下针对这种方程组的特点提供一种简便有效的算法—追赶法.追赶法实际上是高斯消去法的一种简化形式,它同样分消元与回代两个过程.先将(2.11)第一个方程中x 1的系数化为1112111b dx b c x =+111111b d y b c r ==(2.12)有1211y x r x =+注意到剩下的方程中,实际上只有第二个方程中含有变量x 1,因此消元手续可以简化.利用(2.12)可将第二个方程化为2312y x r x =+,这样一步一步地顺序加工(2.11)的每个方程,设第k – 1个方程已经变成111---=+k k k k y x r x(2.13)再利用(2.13)从第k 个方程中消去x k -1,得:k k k k k k k k k a y d x c x a r b 111)(-+--=+-同除()k k k a r b 1--,得n k a r b a y d x a r b c x kk k kk kk k k k k k ,,3,21111 =--=-+--+-记kk k kk k k kk k kk a r b a y d y a r b c r 111-----=-=则有 k k k k y x r x =++1 这样做n – 1步以后,便得到:111---=+n n n n y x r x将上式与(2.11)中第11个方程联立,即可解出x n = y n ,这里nn n nn n n a r b a y d y 11----=于是,通过消元过程,所给方程组(2.11)可归结为以下更为简单的形式:⎪⎪⎪⎩⎪⎪⎪⎨⎧==+=++nn k k k k y x y x r x y x r x 11211 (2.14) 这种方程组称作二对角型方程组,其系数矩阵中的非零元素集中分步在主对角线和一条次主对角线上⎪⎪⎪⎪⎪⎪⎭⎫⎝⎛-11111121n k r r r r 对加工得到的方程组(2.14)自下而上逐步回代,即可依次求出x n ,x n -1,…,x 1,计算公式为:⎩⎨⎧--=-==+1,,2,11n n k x r y x y x k k k k n n (2.15)上述算法就是追赶法,它的消元过程与回代过程分别称作“追”过程与“赶”过程.综合追与赶的过程,得如下计算公式:⎪⎪⎪⎩⎪⎪⎪⎨⎧=--=-===---nk a r b a y d y a r b c r b d y b c r k k k k k k kkk k k k,,3,2111111111(2.16)⎩⎨⎧--=-==+1,,2,11n n k x r y x y x k k k k n n (2.17)2.2追赶法解题原理 (1) 计算{}i β的递推公式111/c b β=,/(),2,3,,1i i i i i c b a i n ββ=-=-.(2) 解Ly=f111/y f b =, 1()/(),2,3,,;i i i i i i i y f a y b a i n β-=--=(3) 解Ux=y11,,1,2,2,1n n i i i i x y x y x i n n β-+==-=--.我们将计算系数121n βββ-→→→及12n y y y →→→的过程称为追的过程.将计算方程组的解11n n x x x -→→→的过程称为追赶的过程.3.对追赶法的MATLAB 求解3.1实验程序function x=chase(a,b,c,f) %定义函数chase n=length(b); if n-1==length(a) for i=n-1:-1:1 a(i+1)=a(i); end end%将a 设置为n 维向量 c(1)=c(1)/b(1);f(1)=f(1)/b(1); for i=2:n-1b(i)=b(i)-a(i)*f(i-1)/b(i); c(i)=c(i)/b(i);f(i)=(f(i)-a(i)*f(i-1))/b(i);endf(n)=(f(n)-a(n)*f(n-1))/(b(n)-a(n)*c(n-1));for i=n-1:-1:1f(i)=f(i)-c(i)*f(i+1);endx=f;3.2 应用举例例1用追赶法解三对角方程组设270329045A⎛⎫⎪= ⎪⎪⎝⎭567f⎛⎫⎪= ⎪⎪⎝⎭求解线性方程组Ax=F解:(1)在Matlab中编写一个名为chase.m的M文件,依次输入数据如下;>> A=[2 7 0;3 2 9;0 4 5];>> a=[3 4];>> b=[2 2 5];>>c=[7 9];>> f=[5 6 7];>> x=chase (a,b,c,f)x= -3.0140 1.5754 0.1397得到输出结果x= -3.0140 1.5754 0.1397即为原线性方程组的解.结果验证:>>A*x’ans=5.00006.00007.0000得到ans=f即结果正确4. 与高斯消去法的精度比较事实上,追赶法的求解过程就是将系数矩阵分解两个简单的二对角线矩阵,从而归结为求解两个简单三角形方程组的过程. 高斯消去法是求解线性方程组的最基本方法之一.Gauss 消去法是针对一般的线性方程组,与线性代数中的初等变换解线性方程组方法类似.追赶法只是针对系数矩阵为三对角阵的方程组,因此是一种特殊的方程组.此方法效率较高,不过不适用于一般的线性方程组.下面对追赶法与高斯消去法计算量进行比较.例2 编写高斯消去法解线性方程组的Matlab 程序,并求解下面的线性方程组1231231235282821361x x x x x x x x x ++=⎧⎪+-=⎨⎪--=⎩解:编程如下f unction [RA,RB,n,X]=gaus(A,b)B=[A b];n=length(b);RA=rank(A);RB=rank(B);zhica=RB-RA;if zhica>0,disp('请注意:因为RA~=RB,所以此方程组无解.')returnendif RA==RBif RA==ndisp('请注意:因为RA=RB=n,所以此方程组有唯一解.')X=zeros(n,1); C=zeros(1,n+1);for p= 1:n-1for k=p+1:nm= B(k,p)/ B(p,p); B(k,p:n+1)= B(k,p:n+1)-m* B(p,p:n+1);endendb=B(1:n,n+1);A=B(1:n,1:n); X(n)=b(n)/A(n,n);for q=n-1:-1:1X(q)=(b(q)-sum(A(q,q+1:n)*X(q+1:n)))/A(q,q);endelse disp('请注意:因为RA=RB<n,所以此方程组有无穷多解.')endend用Matlab调用程序:在Matlab中编写一个名为gauss.m的M文件,依次输入数据如下:A=[5,2,1;2,8,-3;1,-3,-6];b=[8;21;1]; [RA,RB,n,X]=gauss(A,b)运行结果RA =3RB =3n = 3X =1 2 -1ans = 1.00002.0000-1.0000综上所述,追赶法的原理和高斯消去法相同,但考虑到方程组的特点,计算时会把大量零元素撇开,从而大大节省计算量.追赶法实际上就是把高斯消去法用到求解三对角方程组上的结果.这时由于A特别简单,因此使得求解的计算公式非常简单,而且计算量仅为2(n-1)+(n-1)+[1+2(n-1)]=5n-4次乘除法,而另外解一个方程组Ax=f仅增加3n-2次乘除运算,易见追赶法的计算量是比较小的.课程设计总结首先,这次的课程设计让我把以前学习到的非线性方程的求解知识得到巩固和进一步的提高,对已有知识有了更进一步的理解和认识.同时也发现了自身有许多的不足之处.再者,在这次课程设计中碰到了很多的问题,自己通过上网,查阅了相关的书籍以及和我组其他的成员讨论的方式来解决的.另外编写程序是我的一大弱项,在以前做实验时总是按照老师给出的程序不加思考的敲进去,得出来结果就行,但在做这次课程设计时,需要自己真正的去理解和编程.通过这次课程设计,我从中学会了很多,也发现自己真的还有很多不足以及很多东西需要去学习.所以在以后的生活学习中要不断的扩大自己的视野,多学习一些与专业有关的知识,不能只满足于课本上的知识.所以在完成本专业的基础上,要不断涉猎,完善自我,希望自己在以后的课程中会得到更好的锻练.总的来说这次课程设计还是有很多的收获的,并且特别感谢我们组的成员在做课程设计的过程中对我的帮助.参考文献[1] 冯国忱,黄明游.数值分析(上册)[M].北京:高等教育出版社,2007.[2] 宋叶志,贾东志.MATLAB数值分析与应用[M].北京:机械工业出版社,2009.[3] 张德丰.MATLAB数值分析与应用[M].北京:国防工业出版社,2007.[4] 周煦,计算机数值方法及程序设计,机械工业出版社,2004.10.01.[5] 张静,杨文平,石傅强等,MATLAB程序设计与实例应用,中国铁道出版社,2003.。