搜档网
当前位置:搜档网 › 第三章 解线性方程组的直接方法

第三章 解线性方程组的直接方法

第三章 解线性方程组的直接方法
第三章 解线性方程组的直接方法

习题 3.1

1. 求下列方阵的秩:

(1)???

?? ??--340313021201;(2)????? ??----174034301320;(3)???????

?

?---------12433023221453334

311

;(4)???????

??------34732038234202173132. 2. 求下列方阵的逆矩阵:

(1) ??

?

?? ?

?323513123; (2) ?????

??

??-----1210232112201023. 3. 解下列矩阵方程

(1) 设

????

?

??--=????? ??--=1322

31,113122214B A ,求X 使B AX =;

(2) 设

???

?

??-=?

???? ??---=132

321,433312120B A ,求X 使B XA =;

(3)

??

??? ??-=?????

??-=????? ??-=112510324,

123011113,1120111111C B A ,求X 使C AXB =.

4. 求下列行列式

(1)?

?

?

???

??????71

1

0251020214214

;(2)????????????-260523211213

141

2;(3)??

?

???????---ef cf bf de cd bd ae ac ab ; (4)

????????????---d c b a

100110011001. 5. 判断下列线性方程组解的情况,如果有唯一解,则求出解.

???????=+++-=----=+-+=+++;01123,2532,242,5)1(432143214

3214321x x x x x x x x x x x x x x x x ?

?

???????=+=++=++=++=+;15,065,065,065,165)2(545434323212

1x x x x x x x x x x x x x (3) ?

??

??=-++=-+-=-+-;3222,

2353,

132432143214321x x x x x x x x x x x x (4) ?????=---=--+=+++.034,0222,022432143214321x x x x x x x x x x x x

习题 3.2

1. 用回代法解上三角形线性方程组

(1)???

????==+-=-+=++;63,3,6333,8484443432321x x x x x x x x x (2)??

????

?-=-=+--=+--=-+.63,1032,92,9244343242

1x x x x x x x x x 2. 用回代法解下三角形线性方程组

(1)???????=+++=+-=+--=-;2142,10224,632,2464321321211x x x x x x x x x x (2)?

??????=+++=++=+-=-.8224,793,522,4224321321211

x x x x x x x x x x

习题 3.3

1. 用高斯消元法解下列线性方程组

(1)???????-=-++=+++-=-++=++;473,10274,4345,8484432143214321321x x x x x x x x x x x x x x x (2)?

??????=+--=+--=+++=+++.512105,31533,363,1324321432143214321x x x x x x x x x x x x x x x x 2. 用列主元消元法解下列线性方程组

(1)???????=+--=--+=-+-=+-+;01002,0101005,11.03052,0001.0204321432143214321x x x x x x x x x x x x x x x x (2)?

??????

=+---=+--=+++=++.012105,31533,06.031.0,103.02432143214321432x x x x x x x x x x x x x x x

3. 设抛物线2

cx bx a y ++=经过点(1,6),(3,5),(7,2),求此抛物线方程.

习题3.4

1. 判断下列矩阵能否进行LU 分解,如果可以进行LU 分解,则求U L ,

使LU A =,并求矩阵的秩.

(1)????

?

?

?-23135

1642;(2)????

? ?

?--32

192

1611

.

2. 判断下列矩阵能否进行LU 分解,如果可以进行LU 分解,则用两种方法将下列矩阵进行LU 分解, 其中

;98

7

541132111431.014322.0)

1(????

???

?

?--=A

.610

12

4881034681214260

)2(???????

?

?=B

3. 判断下列矩阵是否是正定对称矩阵,如果是正定对称矩阵,将矩阵进行楚列斯基分解.

(1)??

?

??

?? ??------196316902303112

11

; (2)

?????

??--502040202; (3)

?????

??

???? ??----210

2

12

1021212121021210212121;(4)??

?

??

??

??----1101

1110011110

11.

习题 3.5

1. 先将矩阵B 进行楚列斯基分解,然后解矩阵方程Bx =b .

(1)

??????? ??=???????

??------=7531,196

31690230311211b B ;(2)

??

?

?

???

??-=??????? ??--------=71636,196

3

16997237233

12312

b B .

2. 先将矩阵A 进行LU 分解,然后解矩阵方程b AX =

(1)

????

?

??

??--=98

7

5411321114312.0143702.0A ,???????

??-=512.15.0b ;

(2)

??

?

??

?

????

??----=8162

51

76

2315876521133105689703

13543

76231

A ,

?

???

??????

??-=715513252b . 3. 解线性方程组

(1)???????=+-+=+++-=--+-=++-.23,6,15318,15433124321432143214321x x x x x x x x x x x x x x x x ;(2)??????

?=+-=+--=-+=+.252,10473,332,324343232121x x x x x x x x x x

习 题 3.6

1.设??

?

?

?

?? ??=1095791068565778710A ,当=b ??????? ??31332332有微小误差=

b δ???????

??--1.01.01.01.0时,估计方程

组b Ax =解的变化.

2. 解下列矩阵方程b AX =,并比较方程(1)和(2)有何区别,它们的解有何变化.

其中(1)???? ??=001.1111A ,???? ??=33b ;(2)???? ??=001.1111A ,

?

???

??=01.33b . 3. 根据定理3.10讨论第2题的线性方程组b AX =解的性态,并利用(3.39)式讨

论当b 的绝对误差为01.00(=b δT

)时,其解的相对误差.

4. 根据定理3.10,用∞范数讨论线性方程组b AX =(其中A 为4阶希尔伯特矩阵)解的性态,并利用(3.40)式讨论A 中每个元都取4位有效数字时 (见下面的矩阵),其解的相对误差.其中

???

???? ??≈0.1429 0.1667 0.2000 0.2500 0.1667 0.2000 0.2500 0.3333 0.2000 0.2500 0.3333 0.5000 0.2500 0.3333 0.5000 1.0000A , ????

?

??

??=21.281.012.193.1b .

5. 通过试验观察、分析下列问题是否病态,结果的计算误差与理论分析是否相符.

(1) ????? ??=9.155 5.832- 5.084 1.121 4.273- 1.031 6.913 2.7143.021A ,

??

??? ??=8.4072.121-12.648b ,求解矩阵方程b AX =;将A (2,2)改为 -4.275,再解b AX =.

(2)

?

?

?

?

?

?

?

=

9.34

4.81

-

0.99

1.23

-

4.16

1.27

1.99

6.03

3.01

A

,

?

?

?

?

?

?

?

=

1

1

1

b

,求解矩阵方程b

AX=;分别将A(1,1)

改为3.00,A(3,1)改为0.99,再解b

AX=.

(3)A为n阶希尔伯特矩阵, 令x为全1向量,算出b;令b变化1%,求解x,分析误差(n=30~50).

MATLAB代码 解线性方程组的迭代法

解线性方程组的迭代法 1.rs里查森迭代法求线性方程组Ax=b的解 function[x,n]=rs(A,b,x0,eps,M) if(nargin==3) eps=1.0e-6;%eps表示迭代精度 M=10000;%M表示迭代步数的限制值elseif(nargin==4) M=10000; end I=eye(size(A)); n=0; x=x0; tol=1; %迭代过程 while(tol>eps) x=(I-A)*x0+b; n=n+1;%n为最终求出解时的迭代步数tol=norm(x-x0); x0=x; if(n>=M) disp('Warning:迭代次数太多,可能不收敛!'); return; end end 2.crs里查森参数迭代法求线性方程组Ax=b的解 function[x,n]=crs(A,b,x0,w,eps,M) if(nargin==4) eps=1.0e-6;%eps表示迭代精度 M=10000;%M表示迭代步数的限制值 elseif(nargin==5) M=10000; end I=eye(size(A)); n=0; x=x0; tol=1; %迭代过程 while(tol>eps) x=(I-w*A)*x0+w*b; n=n+1;%n为最终求出解时的迭代步数tol=norm(x-x0); x0=x;

if(n>=M) disp('Warning:迭代次数太多,可能不收敛!'); return; end end 3.grs里查森迭代法求线性方程组Ax=b的解 function[x,n]=grs(A,b,x0,W,eps,M) if(nargin==4) eps=1.0e-6;%eps表示迭代精度 M=10000;%M表示迭代步数的限制值 elseif(nargin==5) M=10000; end I=eye(size(A)); n=0; x=x0; tol=1;%前后两次迭代结果误差 %迭代过程 while(tol>eps) x=(I-W*A)*x0+W*b;%迭代公式 n=n+1;%n为最终求出解时的迭代步数tol=norm(x-x0); x0=x; if(n>=M) disp('Warning:迭代次数太多,可能不收敛!'); return; end end 4.jacobi雅可比迭代法求线性方程组Ax=b的解 function[x,n]=jacobi(A,b,x0,eps,varargin) if nargin==3 eps=1.0e-6; M=200; elseif nargin<3 error return elseif nargin==5 M=varargin{1}; end D=diag(diag(A));%求A的对角矩阵 L=-tril(A,-1);%求A的下三角阵

c 解线性方程组的几种方法

//解线性方程组 #include #include #include //----------------------------------------------全局变量定义区 const int Number=15; //方程最大个数 double a[Number][Number],b[Number],copy_a[Number][Number],copy_b[Number]; //系数行列式 int A_y[Number]; //a[][]中随着横坐标增加列坐标的排列顺序,如a[0][0],a[1][2],a[2][1]...则A_y[]={0,2,1...}; int lenth,copy_lenth; //方程的个数 double a_sum; //计算行列式的值 char * x; //未知量a,b,c的载体 //----------------------------------------------函数声明区 void input(); //输入方程组 void print_menu(); //打印主菜单 int choose (); //输入选择 void cramer(); //Cramer算法解方程组 void gauss_row(); //Gauss列主元解方程组 void guass_all(); //Gauss全主元解方程组 void Doolittle(); //用Doolittle算法解方程组 int Doolittle_check(double a[][Number],double b[Number]); //判断是否行列式>0,若是,调整为顺序主子式全>0 void xiaoqu_u_l(); //将行列式Doolittle分解 void calculate_u_l(); //计算Doolittle结果 double & calculate_A(int n,int m); //计算行列式 double quanpailie_A(); //根据列坐标的排列计算的值,如A_y[]={0,2,1},得sum=a[0][ A_y[0] ] * a[1][ A_y[1] ] * a[2][ A_y[2] ]=a[0][0]*a[1][2]*a[2][1]; void exchange(int m,int i); //交换A_y[m],A_y[i] void exchange_lie(int j); //交换a[][j]和b[]; void exchange_hang(int m,int n); //分别交换a[][]和b[]中的m和n 两行 void gauss_row_xiaoqu(); //Gauss列主元消去法 void gauss_all_xiaoqu(); //Gauss全主元消去法 void gauss_calculate(); //根据Gauss消去法结果计算未知量的值 void exchange_a_lie(int m,int n); //交换a[][]中的m和n列 void exchange_x(int m,int n); //交换x[]中的x[m]和x[n] void recovery(); //恢复数据 //主函数 void main() { int flag=1;

常微分方程的解线性方程组的迭代法

实验五 解线性方程组的迭代法 【实验内容】 对1、设线性方程组 ?? ? ? ?? ? ? ?? ? ? ?? ? ? ??-=???????????????? ?????????????????? ? ?--------------------------211938134632312513682438100412029137264 2212341791110161035243120 536217758683233761624491131512 013012312240010563568 0000121324 10987654321x x x x x x x x x x ()T x 2,1,1,3,0,2,1,0,1,1*--= 2、设对称正定系数阵线性方程组 ?? ? ????? ??? ? ? ??---=????????????? ??????????????? ??---------------------4515229 23206019243360021411035204111443343104221812334161 2065381141402312122 00240424 87654321x x x x x x x x ()T x 2,0,1,1,2,0,1,1*--= 3、三对角形线性方程组

?? ? ?? ? ????? ??? ? ? ??----=???????????????? ?????????????????? ??------------------5541412621357410000000014100000000141000000001410000000014100000000141000000001410000000014100000000 14100000000 1410987654321x x x x x x x x x x ()T x 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;

线性方程组的迭代法及程序实现

线性方程组的迭代法及程序实现 学校代码:11517 学号:200810111217 HENAN INSTITUTE OF ENGINEERING 毕业论文 题目线性方程组的迭代法及程序实现 学生姓名 专业班级 学号 系 (部)数理科学系 指导教师职称 完成时间 2012年5月20日河南工程学院 毕业设计(论文)任务书 题目:线性方程组的迭代法及程序实现专业:信息与计算科学学号 : 姓名一、主要内容: 通过本课题的研究,学会如何运用有限元方法来解决线性代数方程组问题,特别是Gaussie-Seidel迭代法和Jacobi迭代法来求解线性方程组。进一步学会迭代方法的数学思想,并对程序代码进行解析与改进,这对于我们以后学习和研究实际问题具有重要的意义。本课题运用所学的数学专业知识来研究,有助于我们进一步掌握大学数学方面的知识,特别是迭代方法。通过这个课题的研究,我进一步掌握了迭代方法的思想,以及程序的解析与改进,对于今后类似实际问题的解决具有重要的意义。

二、基本要求: 学会编写规范论文,独立自主完成。 运用所学知识发现问题并分析、解决。 3.通过对相关资料的收集、整理,最终形成一篇具有自己观点的学术论文,以期能对线性方程组迭代法的研究发展有一定的实践指导意义。 4.在毕业论文工作中强化英语、计算机应用能力。 完成期限: 2012年月指导教师签名:专业负责人签名: 年月日 目录 中文摘要....................................................................................Ⅰ英文摘要 (Ⅱ) 1 综述 1 2 经典迭代法概述 3 2.1 Jacobi迭代法 3 2.2 Gauss?Seidel迭代法 4 2.3 SOR(successive over relaxation)迭代法 4 2.4 SSOR迭代法 5 2.5 收敛性分析5 2. 6 数值试验 6 3 matlab实现的两个例题8 3.1 例1 迭代法的收敛速度8 3.2 例 2 SOR迭代法松弛因子的选取 12致谢16参考文献17附录19

数值分析5-用Jacobi迭代法和Gauss-Seidel迭代法求解线性方程组

作业六:分别编写用Jacobi迭代法和Gauss-Seidel迭代法求解线性方程组Ax=B的标准程序,并求下列方程组的解。 可取初始向量 X(0) =(0,0,0)’; 迭代终止条件||x(k+1)-x(k)||<=10e-6 (1) = (2) = Jacobi迭代法: 流程图 开 始 判断b中的最大值 有没有比误差大 给x赋初值 进行迭代 求出x,弱到100次还没到,警告不收 结束

程序 clear;clc; A=[8,-1,1;2,10,01;1,1,-5]; b=[1;4;3]; e=1e-6; x0=[0;0;0]'; n=length(A); x=zeros(n,1); k=0; r=max(abs(b)); while r>e for i=1:n d=A(i,i); if abs(d)100 warning('不收敛'); end end x=x0;

程序结果(1)

(2)

Gauss-Seidel迭代法: 程序 clear;clc; %A=[8,-1,1;2,10,01;1,1,-5]; %b=[1;4;3]; A=[5,2,1;-1,4,2;2,-3,10]; b=[-12;20;3]; m=size(A); if m(1)~=m(2) error('矩阵A不是方阵'); end n=length(b); %初始化 N=0;%迭代次数 L=zeros(n);%分解A=D+L+U,D是对角阵,L是下三角阵,U是上三角阵U=zeros(n); D=zeros(n); G=zeros(n);%G=-inv(D+L)*U d=zeros(n,1);%d=inv(D+L)*b x=zeros(n,1); for i=1:n%初始化L和U for j=1:n if ij U(i,j)=A(i,j); end end end for i=1:n%初始化D D(i,i)=A(i,i); end G=-inv(D+L)*U;%初始化G d=(D+L)\b;%初始化d %迭代开始 x1=x; x2=G*x+d; while norm(x2-x1,inf)>10^(-6)

直接法解线性方程组

直接法解线性方程组 实习题目: 仿照三对角方程组的追赶法解五对角方程组,其中系数矩阵为A,右端向量为:r。将A分解为LU。其中L为下三角,U为单位上三角。A为7*7阶的矩阵,其中对角元为4 5 6 7 8 9 10。上下次三角对角线元素为1 2 3 4 5 6 ;上下第二条对角线元素为1 2 3 4 5;右端项为:1 2 3 4 5 6 7. 要求:输出系数矩阵A,右端向量r,下三角矩阵L,单位上三角矩阵U,下三角矩阵Ly=b 的解向量y,单位上三角方程组Ux=y的解(即最终的解向量。保留七位小数。 实现方法:通过MATLAB编程实现。建立MATLAB脚本文件。 首先通仿照三对角方程组的追赶法得到五对角矩阵的实现算法。 然后又MATLAB编程实现。 实验结果(MATLAB截图):

结果分析: 通过提供的计算数据得到最终的解向量x及中间过程产生的下三角矩阵L,单位上三角矩阵U,下三角矩阵Ly=b 的解向量y。 同时为了确保算法的正确性,我还通过MATLAB的左除运算检验得使用此算法的计算结果正确。 这里由于是用MATLAB,最终结果为分数形式,考虑到精确解一般比近似解更好,因此未化成七位小数形式。 算法实现分析: 首先计算L和U的元素。由于已知L和U的特定形式(及除了对角线和上下次对角线和上下第二条对角线外,其余为0。故通过矩阵的乘法即可得到LU中元素的计算公式。(具体算法见MATLAB程序) 算法优劣点:

1.解此题时看上去要用较多的存储单元,但实际上只需存储系数矩阵A的不为0的元素。 2.A分解为LU计算完成后,后续计算x和y的“追赶过程”运算量一般来说计算量比较小。 3.此题也可用之前的LU算法求解。但此处算法与一般的LU分解的解线性方程组的算法,相比计算量小了不少。 4.对于此处特定的对称的系数矩阵A,算法还可以进一步优化。 5.由于我在此算法中A.L U的各对角值均用一个列向量表示,一个缺点在于输出A,L,U时要重新组成矩阵形式。不过优点在于减少了存储单元。 6.另一缺点是,未能将结果封装成一个文件。 后附MATLAB代码: c=[4,5,6,7,8,9,10];d=[1,2,3,4,5,6,0];b=[0,1,2,3,4,5,6];e=[1,2,3,4,5,0,0];a=[0,0,1,2,3,4,5]; r=[1 2 3 4 5 6 7]; w=zeros(7,1);x=zeros(7,1);y=zeros(7,1);m=zeros(7,1);n=zeros(7,1);h=zeros(7,1); w(1)=c(1);m(1)=d(1)/c(1);n(1)=e(1)/c(1); h(2)=b(2);w(2)=c(2)-h(2)*m(1);m(2)=(d(2)-b(2)*n(1))/w(2);n(2)=e(2)/w(2); for k=3:5 h(k)=b(k)-a(k)*m(k-2); w(k)=c(k)-a(k)*n(k-2)-h(k)*m(k-1); m(k)=(d(k)-h(k)*n(k-1))/w(k); n(k)=e(k)/w(k); end h(6)=b(6)-a(6)*m(4); w(6)=c(6)-a(6)*n(4)-h(6)*m(5); m(6)=(d(6)-h(6)*n(5))/w(6); h(7)=b(7)-a(7)*m(5); w(7)=c(7)-a(7)*n(5)-h(7)*m(6); y(1)=r(1)/w(1);y(2)=(r(2)-h(2)*y(1))/w(2); for k=3:7 y(k)=(r(k)-a(k)*y(k-2)-h(k)*y(k-1))/w(k); end x(7)=y(7); x(6)=y(6)-x(7)*m(6);

Matlab线性方程组求解(Gauss消去法)

Matlab线性方程组求解 1. Gauss消元法: function x=DelGauss(a,b) % Gauss消去法 [n,m]=size(a); nb=length(b); det=1; %存储行列式值 x=zeros(n,1); for k=1:n-1 for i=k+1:n if a(k,k)==0 return end m=a(i,k)/a(k,k); for j=k+1:n a(i,j)=a(i,j)-m*a(k,j); end b(i)=b(i)-m*b(k); end det=det*a(k,k); %计算行列式 end det=det*a(n,n); for k=n:-1:1 %回代求解 for j=k+1:n b(k)=b(k)-a(k,j)*x(j); end x(k)=b(k)/a(k,k);

end Example: >> A=[1.0170 -0.0092 0.0095;-0.0092 0.9903 0.0136;0.0095 0.0136 0.9898]; >> b=[1 0 1]'; >> x=DelGauss(A,b) x = 0.9739 -0.0047 1.0010 2. 列主元Gauss消去法: function x=detGauss(a,b) % Gauss列主元消去法 [n,m]=size(a); nb=length(b); det=1; %存储行列式值 x=zeros(n,1); for k=1:n-1 amax=0; %选主元 for i=k:n if abs(a(i,k))>amax amax=abs(a(i,k));r=i; end end if amax<1e-10 return; end if r>k %交换两行 for j=k:n

求解线性方程组——超松弛迭代法(c)

求解线性方程组——超松弛迭代法 #include #include using namespace std; float *one_array_malloc(int n); //一维数组分配float **two_array_malloc(int m,int n); //二维数组分配float matrix_category(float* x,int n); int main() { const int MAX=100;//最大迭代次数 int n,i,j,k; float** a; float* x_0; //初始向量 float* x_k; //迭代向量 float precision; //精度 float w; //松弛因子 cout<<"输入精度e:"; cin>>precision; cout<>n; a=two_array_malloc(n,n+1); cout<>a[i][j]; } } x_0=one_array_malloc(n); cout<>x_0[i]; } x_k=one_array_malloc(n);

cout<<"输入松弛因子w (1>w; float temp; //迭代过程 for(k=0;k

总结求线性方程组的方法

总结求线性方程组的方法-标准化文件发布号:(9556-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII

华北水利水电大学 总结求线性方程组的方法 课程名称:线性代数 专业班级: 成员组成: 联系方式: 2014年12月31日

摘要:线性方程组的求解是当代代数学中的一个重要组成部分。它广泛应用在数学以及其他领域。它与矩阵、线性变换、行列式、向量组的线性相关性,二次型,这些型之间有着相当密切的联系。线性方程组是线性代数中一个相当基础的内容必须要学会以及熟悉内容。本文章主要说明和讨论线性方程组的基本结构,然后应用克拉莫法则,高斯消元法来来求解。 关键词:线性方程组、高斯消元法、克拉莫法则; Summary for the method of liner equations Abstract: Solution of the system of linear equations is an important component part of algebra. It is widely used in mathematics and other areas. It and determinant, matrix, linear transformation, linear correlation vector group, quadratic form, has the close relation. System of linear equations is a very basic content in linear algebra must grasp and familiar with the content. This article mainly explain and discuss the basic structure of system of linear equations, then apply law of kramer, gauss elimination method to solve.

线性方程组的解法

线性方程组的解法 1 引言 在科学研究和大型工程设计中出现了越来越多的数学问题,而这些问题往往需要求数值解。在进行数值求解时,经离散后,常常归结为求解形如Ax= b的大型线性方程组。而如插值公式,拟合公式等的建立,微分方程差分格式的构造等,均可归结为求解线性方程组的问题.在工程技术的科学计算中,线性方程组的求解也是最基本的工作之一.因此,线性方程组的解法一直是科学和工程计算中研究最为普遍的问题,它在数值分析中占有极其重要的地位。20世纪50年代至70年代,由于电子计算机的发展,人们开始考虑和研究在计算机上用迭代法求线性方程组Ax =b的近似解,用某种极限过程去逐渐逼近精确解,并发展了许多非常有效的迭代方法,迭代法具有需要计算机存储单元少、程序设计简单、原始系数矩阵在计算过程中始终不变等优点。例如Jacobi方法、Gauss—Seidel 方法、SOR方法、SSOR 方法,这几种迭代方法是最常用的一阶线性定常迭代法。 2 主要算法 20世纪50年代至70年代,人们开始考虑和研究用迭代法求解线性方程组。 Ax = b (1) 的近似解,发展了许多有效的方法,其中有Jacobi方法、Gauss—Seidel方法,SOR方法、SSOR方法,这几种迭代方法均属一阶线性定常迭代法,即若系数矩阵A的一个分裂:A =M-N ;M 为可逆矩阵,线性方程组(1)化为: (M-N)X =b; →M X = NX + b; →X= M -1NX+ M-1b 得到迭代方法的一般公式: X(k+1)=HX(k)+d (2) 其中:H =MN-1,d=M-1b,对任意初始向量X(0) 一阶定常迭代法收敛的充分必要条件是: 迭代矩H的谱半径小于1,即ρ(H) < 1;又因为对于任何矩阵范数恒有ρ(H)≤‖H‖,故又可得到收敛的一个充分条件为:‖H‖< 1。 2.1 Jacobi迭代法 若D为A的对角素构成的对角矩阵,且对角线元素全不为零。系数矩阵A的一个分解:A =

Gauss-Seidel迭代法求解线性方程组

Gauss-Seidel迭代法求解线性方程组

一. 问题描述 用Gauss-Seidel 迭代法求解线性方程组 由Jacobi 迭代法中,每一次的迭代只用到前一次的迭代值。使用了两倍的存储空间,浪费了存储空间。若每一次迭代充分利用当前最新的迭代值,即在计算第i 个分量 ) 1(+k i x 时,用最新分量 ) 1(1 +k x , ???+) 1(2 k x ) 1(1 -+k i x 代替旧分量 ) (1 k x , ???) (2 k x ) (1 -k i x ,可以起 到节省存储空间的作用。这样就得到所谓解方程组的Gauss-Seidel 迭代法。 二. 算法设计 将A 分解成U D L A --=,则b x =A 等价于b x =--U)D (L 则Gauss-Seidel 迭代过程 ) ()1()1(k k k Ux Lx b Dx ++=++ 故 ) ()1()(k k Ux b x L D +=-+ 若设1 )(--L D 存在,则 b L D Ux L D x k k 1)(1)1()()(--+-+-= 令 b L D f U L D G 11)()(---=-=,

则Gauss-Seidel 迭代公式的矩阵形式为 f Gx x k k +=+) () 1( 其迭代格式为 T n x x x x ) ()0()0(2)0(1)0(,,,???= (初始向量), ) (1 1 1 1 1 )()1()1(∑∑-=-+=++--=i j i i j k j ij k j ij i ii i i x a x a b a x )210i 210(n k ???=???=,,,;,,, 或者 ?? ???--=???=???==?+=∑∑-=-+=+++) (1)210i 210(111 1)()1()1()()1(i j i i j k j ij k j ij i ii i i i k i k i x a x a b a x n k k x x x ,,,;,,, 三. 程序框图

第三章 解线性方程组的直接方法

习题 3.1 1. 求下列方阵的秩: (1)??? ?? ??--340313021201;(2)????? ??----174034301320;(3)??????? ? ?---------12433023221453334 311 ;(4)??????? ??------34732038234202173132. 2. 求下列方阵的逆矩阵: (1) ?? ? ?? ? ?323513123; (2) ????? ?? ??-----1210232112201023. 3. 解下列矩阵方程 (1) 设 ???? ? ??--=????? ??--=1322 31,113122214B A ,求X 使B AX =; (2) 设 ??? ? ??-=? ???? ??---=132 321,433312120B A ,求X 使B XA =; (3) ?? ??? ??-=????? ??-=????? ??-=112510324, 123011113,1120111111C B A ,求X 使C AXB =. 4. 求下列行列式 (1)? ? ? ??? ??????71 1 0251020214214 ;(2)????????????-260523211213 141 2;(3)?? ? ???????---ef cf bf de cd bd ae ac ab ; (4) ????????????---d c b a 100110011001. 5. 判断下列线性方程组解的情况,如果有唯一解,则求出解. ???????=+++-=----=+-+=+++;01123,2532,242,5)1(432143214 3214321x x x x x x x x x x x x x x x x ? ? ???????=+=++=++=++=+;15,065,065,065,165)2(545434323212 1x x x x x x x x x x x x x (3) ? ?? ??=-++=-+-=-+-;3222, 2353, 132432143214321x x x x x x x x x x x x (4) ?????=---=--+=+++.034,0222,022432143214321x x x x x x x x x x x x 习题 3.2 1. 用回代法解上三角形线性方程组 (1)??? ????==+-=-+=++;63,3,6333,8484443432321x x x x x x x x x (2)?? ???? ?-=-=+--=+--=-+.63,1032,92,9244343242 1x x x x x x x x x 2. 用回代法解下三角形线性方程组

数值计算_第4章 解线性方程组的迭代法

第4章解线性方程组的迭代法 用迭代法求解线性方程组与第4章非线性方程求根的方法相似,对方程组进行等价变换,构造同解方程组(对可构造各种等价方程组, 如分解,可逆,则由得到),以此构造迭代关系式 (4.1) 任取初始向量,代入迭代式中,经计算得到迭代序列。 若迭代序列收敛,设的极限为,对迭代式两边取极限 即是方程组的解,此时称迭代法收敛,否则称迭代法发散。我们将看到,不同于非线性方程的迭代方法,解线性方程组的迭代收敛与否完全决定于迭代矩阵的性质,与迭代初始值的选取无关。迭代法的优点是占有存储空间少,程序实现简单,尤其适用于大型稀疏矩阵;不尽人意之处是要面对判断迭代是否收敛和收敛速度的问题。 可以证明迭代矩阵的与谱半径是迭代收敛的充分必要条件,其中是矩阵的特征根。事实上,若为方程组的解,则有 再由迭代式可得到

由线性代数定理,的充分必要条件。 因此对迭代法(4.1)的收敛性有以下两个定理成立。 定理4.1迭代法收敛的充要条件是。 定理4.2迭代法收敛的充要条件是迭代矩阵的谱半径 因此,称谱半径小于1的矩阵为收敛矩阵。计算矩阵的谱半径,需要求解矩阵的特征值才能得到,通常这是较为繁重的工作。但是可以通过计算矩阵的范数等方法简化判断收敛的 工作。前面已经提到过,若||A||p矩阵的范数,则总有。因此,若,则必为收敛矩阵。计算矩阵的1范数和范数的方法比较简单,其中 于是,只要迭代矩阵满足或,就可以判断迭代序列 是收敛的。 要注意的是,当或时,可以有,因此不能判断迭代序列发散。

在计算中当相邻两次的向量误差的某种范数小于给定精度时,则停止迭代计算,视为方程组的近似解(有关范数的详细定义请看3.3节。) 4.1雅可比(Jacobi)迭代法 4.1.1 雅可比迭代格式 雅可比迭代计算 元线性方程组 (4.2) 写成矩阵形式为。若将式(4.2)中每个方程的留在方程左边,其余各项移到方程右边;方程两边除以则得到下列同解方程组: 记,构造迭代形式

迭代法解线性方程组

迭代法解线性方程组作业 沈欢00986096 北京大学工学院,北京100871 2011年10月12日 摘要 由所给矩阵生成系数矩阵A和右端项b,分析系数矩阵A,并用Jacobi迭代法、GS迭代法、SOR(逐步松弛迭代法)解方程组Ax=b 1生成系数矩阵A、右端项b,并分析矩阵A 由文件”gr900900c rg.mm”得到了以.mm格式描述的系数矩阵A。A矩阵是900?900的大型稀 疏对称矩阵。于是,在matlaB中,使用”A=zeros(900,900)”语句生成900?900的零矩阵。再 按照.mm文件中的描述,分别对第i行、第j列的元素赋对应的值,就生成了系数矩阵A,并 将A存为.mat文件以便之后应用。 由于右端项是全为1的列向量,所以由语句”b=ones(900,1)”生成。 得到了矩阵A后,求其行列式,使用函数”det(A)”,求得结果为”Inf”,证明行列式太大,matlaB无法显示。由此证明,矩阵A可逆,线性方程组 Ax=b 有唯一解。 接着,判断A矩阵是否是对称矩阵(其实,这步是没有必要的,因为A矩阵本身是对称矩阵,是.mm格式中的矩阵按对称阵生成的)。如果A是对称矩阵,那么 A?A T=0 。于是,令B=A?A T,并对B求∞范数。结果显示: B ∞=0,所以,B是零矩阵,也就是:A是对称矩阵。 然后,求A的三个条件数: Cond(A)= A ? A?1 所求结果是,对应于1范数的条件数为:377.2334;对应于2范数的条件数为:194.5739;对应 于3范数的条件数为:377.2334; 1

从以上结果我们看出,A是可逆矩阵,但是A的条件数很大,所以,Ax=b有唯一解并且矩阵A相对不稳定。所以,我们可以用迭代方法来求解该线性方程组,但是由于A的条件数太大迭代次数一般而言会比较多。 2Jacobi迭代法 Jacobi迭代方法的程序流程图如图所示: 图1:Jacobi迭代方法程序流程图 在上述流程中,取x0=[1,1,...,1]T将精度设为accuracy=10?3,需要误差满足: error= x k+1?x k x k+1

高斯-赛德尔迭代法解线性方程组精选.

数值分析实验五 班级: 10信计二班 学号:59 姓名:王志桃 分数: 一.实验名称 高斯-赛德尔迭代法解线性方程组 二.实验目的 1. 学会利用高斯赛德尔方法解线性方程组 2. 明白迭代法的原理 3. 对于大型稀疏矩阵方程组适用于迭代法比较简单 三.实验内容 利用Gauss-Seidel 迭代法求解下列方程组 ?????=++=-+=+-36123633111420238321 321321x x x x x x x x x , 其中取→=0)0(x 。 四、算法描述 由Jacobi 迭代法中,每一次的迭代只用到前一次的迭代值,若每一次迭代充分利用当前最新的迭代值,即在计算第i 个分量)1(+k i x 时,用最新分量)1(1+k x ,???+)1(2k x )1(1-+k i x 代替旧分量)(1k x ,???)(2k x )(1-k i x ,就得到所谓解方程组的Gauss-Seidel 迭代法。 其迭代格式为 T n x x x x )()0()0(2)0(1)0(,,,???= (初始向量), )(11111)()1( ) 1(∑∑-=-+=++--=i j i i j k j ij k j ij i ii i i x a x a b a x )210i 210(n k ???=???=,,,;,,, 或者写为 ?? ???--=???=???==?+=∑∑-=-+=+++)(1)210i 210(1111)( )1()1()()1(i j i i j k j ij k j ij i ii i i i k i k i x a x a b a x n k k x x x ,,,;,,, 五、 编码 #include #include

解线性方程组的直接解法

解线性方程组的直接解法 一、实验目的及要求 关于线性方程组的数值解法一般分为两大类:直接法与迭代法。直接法是在没有舍入误差的情况下,通过有限步运算来求方程组解的方法。通过本次试验的学习,应该掌握各种直接法,如:高斯列主元消去法,LU分解法和平方根法等算法的基本思想和原理,了解它们各自的优缺点及适用范围。 二、相关理论知识 求解线性方程组的直接方法有以下几种: 1、利用左除运算符直接求解 线性方程组为b x\ =即可。 A Ax=,则输入b 2、列主元的高斯消元法 程序流程图: 输入系数矩阵A,向量b,输出线性方程组的解x。 根据矩阵的秩判断是否有解,若无解停止;否则,顺序进行; 对于1 p :1- =n 选择第p列中最大元,并且交换行; 消元计算; 回代求解。(此部分可以参看课本第150页相关算法) 3、利用矩阵的分解求解线性方程组 (1)LU分解 调用matlab中的函数lu即可,调用格式如下: [L,U]=lu(A) 注意:L往往不是一个下三角,但是可以经过行的变换化为单位下三角。 (2)平方根法

调用matlab 中的函数chol 即可,调用格式如下: R=chol (A ) 输出的是一个上三角矩阵R ,使得R R A T =。 三、研究、解答以下问题 问题1、先将矩阵A 进行楚列斯基分解,然后解方程组b Ax =(即利用平方根法求解线性方程组,直接调用函数): ??????? ??--------=19631699723723312312A ,?????? ? ??-=71636b 解答: 程序: A=[12 -3 2 1;-3 23 -7 -3;2 -7 99 -6;1 -3 -6 19]; R=chol(A) b=[6 3 -16 7]'; y=inv(R')*b %y=R'\b x=inv(R)*y %x=R\y 结果: R =3.4641 -0.8660 0.5774 0.2887 0 4.7170 -1.3780 -0.5830 0 0 9.8371 -0.7085 0 0 0 4.2514 y =1.7321 0.9540 -1.5945 1.3940 x =0.5463 0.2023 -0.1385 0.3279 问题 2、先将矩阵A 进行LU 分解,然后解方程组b Ax =(直接调用函数): ?????????? ??----=8162517623158765211331056897031354376231A ,????????? ? ??-=715513252b

实验解线性方程组的基本迭代法实验

数值分析实验报告

0 a 12 K a 1,n 1 K a 2,n 1 U O M 则有: 第一步: Jacobi 迭代法 a 1n a 2n M , 则有: A D L U a n 1,n Ax b A A x D b L U (D L U)x b Dx (L U)x b x D (L U)x D b 令 J D (L U) 则称 J 为雅克比迭代矩阵 f D b 由此可得雅克比迭代的迭代格式如下: x (0) , 初始向量 x (k 1) Jx (k) f ,k 0,1,2,L 第二步 Gauss-Seidel 迭代法 Ax b (D L U )x b (D L)x Ux b x (D L) Ux (D L) b A D L U a 11 a 12 L a 1n a 11 A a 21 a 22 L a 2n a 22 M MM MO a n1 a n2 L a nn a 11 得到 D a 22 O a nn 由 a 21 0 M M O a n 1,1 a n 1,2 L 0 a nn a n1 a n2 L a n,n a 21 L M M O a n 1,1 a n 1,2 L a n1 a n2 L a n,n 1 a 12 K a 1,n 1 a 1n 0 K a 2,n 1 a 2n O M M a n 1,n 10

令 G (D L) U ,则称G 为Gauss-Seidel 迭代矩阵 f (D L) b 由此可得 Gauss-Seidel 迭代的迭代格式如下: x (0) , 初始向量 第三步 SOR 迭代法 w0 AD L U 1 ( D 1 wL ((1 w)D wU )) (D 1 wL) ((1 w)D wU ) w w w 令M w 1 (D wL), N 1 ((1 w)D wU )则有:A MN w w Ax b AM L W N M (M N )x b Mx Nx b x M Nx M b N M, 令W f Mb 带入 N 的值可有 L W ((1 w)D wU) (D wL) 1((1 w)D wU) (D wL) f 1 b w 1(D wL) 1b 1 (D wL) w 称 L W 为 SOR 迭代矩阵,由此可得 SOR 迭代的迭代格式如下: x (0) ,初始向量 二、算法程序 Jacobi 迭代法的 M 文件: function [y,n]=Jacobi(A,b,x0,eps) %************************************************* %函数名称 Jacobi 雅克比迭代函数 %参数解释 A 系数矩阵 % b 常数项 % x0 估计解向量 x (k 1) Gx (k) f ,k 0,1,2,L (k 1) f,k 0,1,2,L

相关主题