matlab在科学计算中的应用 线性方程组的直接求解-分析方法-文档资料
(完整word版)线性方程组的直接解法及matlab的实现

本科毕业论文(2010 届)题目线性方程组的直接解法及matlab的实现学院数学与信息工程学院专业数学与应用数学班级2006级数学1 班学号0604010127学生姓名胡婷婷指导教师王洁完成日期2010年5月摘要随着科技技术的发展及人类对自然界的不断探索模拟。
在自然科学和工程问题中的很多问题的解决常常归结为线性代数问题!本文的主要内容是对线性方程组求解方法的探讨,主要介绍了四种求解线性方程组的方法,第一种是教科书上常见的消元法,我们称之为基本法。
第二种方法是标准上三角形求解法,即将增广矩阵经过初等变换后化成标准上三角形,然后求解.它改进了一般教科书上的常见方法,与常见方法比较有如下优点:1)规范了自由未知量的选取;2)只用矩阵运算;3)减少了计算量.第三种方法是对特定的方程组(系数矩阵A为n阶对称正定矩阵,且A的顺序主子式均不为零。
)的求解方法进行描述,并且为这种线性方程的求解提供了固定的公式化的方法。
第四种方法是对现在实际问题中常常会遇到的系数矩阵为三对角矩阵的方程组的求解方法。
同时给出这几种方法的数值解法(matlab程序),由于运用电脑软件求解,所以必须考虑计算方法的时间、空间上的效率以及算法的数值稳定性问题,所以针对不同类型的线性方程组有不同的解法.但是,基本的方法可以归结为两大类,即直接法和迭代法.关键词高斯消去法;三角分解法;乔莱斯基分解法;追赶法AbstractSystems of linear equations are associated with many problems in engineering and scinence ,as well as with applications of mathematics to the social sciences and the quantitative study of business and economic problems.The main content of this article is the method for solving linear equations,we introduce four methods for solving linear equations in this paper。
用matlab求解线性方程组

用matlab 解线性方程组电子科技大学摘要:利用matlab 软件编写程序,分别利用雅克比迭代法和高斯赛德尔迭代法、列主元高斯消去法,改进平方根法求解不同方程组,其中对于雅克比迭代法和高斯赛德尔迭代法在收敛条件相同的情况下,比较两者的迭代次数,对于,列主元高斯消去法和改进平方根法,要求解出方程组的根。
关键词:雅克比迭代法;高斯赛德尔迭代法;列主元高斯消去法;改进平方根法引言:众所周知,在数学物理方程中,当涉及到解方程组的时候,按照常规的计算方法计算量很大,这样,就涉及到了计算方法的问题,算法里面,很多涉及到矩阵转换,经过处理,可以让我们简便的计算根,而matlab 是一个处理矩阵方程组很便利的软件,下面就是用几种不同的方法解方程组。
正文:一、雅克比迭代法和高斯赛德尔迭代法 1雅可比迭代法原理: 设线性方程组b Ax =的系数矩阵A 可逆且主对角元素nn a ,...,a ,a 2211均不为零,令()nn a ,...,a ,a diag D 2211=并将A 分解成()D D A A +-= 从而(1)可写成 ()b x A D Dx +-= 令 11f x B x +=其中b D f ,A D I B 1111--=-=. 以1B 为迭代矩阵的迭代法(公式)()()111f x B x k k +=+称为雅可比(Jacobi)迭代法(公式),用向量的分量来表示,则为⎩⎨⎧[],...,,k ,n ,...,i x a ba xnij j )k (j j i iii)k (i21021111==∑-=≠=+其中()()()()()Tn x ,...x ,x x 002010=为初始向量.由此看出,雅可比迭代法公式简单,每迭代一次只需计算一次矩阵和向量的乘法.在电算时需要两组存储单元,以存放()k x 及()1+k x . 2高斯赛德尔迭代法原理由雅可比迭代公式可知,在迭代的每一步计算过程中是用的全部分量来计算的所有分量,显然在计算第i 个分量时,已经算出最新的分量,但没被利用。
matlab在科学计算中的应用 线性方程组的直接求解-分析方法-文档资料

>> jacobi(a,b,[0;0;0])
n= 11
ans =
0.9958
0.9579 0.7916
4.3.2Байду номын сангаасGauss-Seidel迭代法
Jacobi迭代:x(k1) Bx(k) f
x(k+1)
1
x(k+1) 2
b21x1(k )
b12 x2(k )
b1n xn(k ) f1 b2n xn(k ) f2 ,
16 4 8
例:进行Cholesky分解。
A
4
5
4
8 4 22
>> A=[16 4 8; 4 5 -4; 8 -4 22];
>> D=chol(A)
D=
412
0 2 -3
003
●利用矩阵的LU、QR和cholesy分解求方程组的解
(1)LU分解:
A*X=b
变成 L*U*X=b
a1n xn b1 a2n xn b2
ann xn bn
其中det( A) det(aij ) 0,不妨设aii 0(i 1, 2,..., n)
x1
x2
b21x1
b12 x2
b1n xn f1 b2n xn f2 ,
迭代公式为: X(k+1)= (D-wL)-1((1-w)D+wU)x(k) + w(D-wL)-1 b 其中:w最佳值在[1, 2)之间,不易计
算得到,因此 w通常有经验给出。
function y=sor(a,b,w,x0) D=diag(diag(a));U=-triu(a,1);L=-tril(a,-1); M=(D-w*L)\((1-w)*D+w*U); f=(D-w*L)\b*w; y=M*x0+f; n=1; while norm(y-x0)>=1.0e-6
MATLAB实验一 解线性方程组的直接法

没有了?
将每种情形的两个结果进行表格对比,如: n=6 时: GAUSS 列主消去法求得的 x
x 的有效数字
四、实验结果
五、讨论分析 (对上述算例的计算结果进行比较分析, 主要说清 matlab 的算符与消去法的适 用范围不同,自己补充)
A(index,:) = A(k,:); A(k,:) = temp; temp = b(index);b(index) = b(k); b(k) = temp; %消元过程 for i=k+1:n m=A(i,k)/A(k,k); %消除列元素 A(i,k+1:n)=A(i,k+1:n)-m*A(k,k+1:n); b(i)=b(i)-m*b(k); end end %回代过程 x(n)=b(n)/A(n,n); for k=n-1:-1:1; x(k)=(b(k)-A(k,k+1:n)*x(k+1:n)')/A(k,k); end x=x'; end 然后调用 gaussMethod 函数,来实现列主元的高斯消去法。在命令框中输入 下列命令:
输出结果如下:
利用 LU 分解法及 matlab 程序源代码: function [L,U]=myLU(A) %实现对矩阵 A 的 LU 分解,L 为下三角矩阵 A[n,n]=size(A);
L=zeros(n,n); U=zeros(n,n); for i=1:n L(i,i)=1; end for k=1:n for j=k:n U(k,j)=A(k,j)-sum(L(k,1:k-1).*U(1:k-1,j)'); end for i=k+1:n L(i,k)=(A(i,k)-sum(L(i,1:k-1).*U(1:k-1,k)'))/U(k,k); end end 在命令框中输入下列命令:
实验一用matlab求解线性方程组

实验1.1 用matlab 求解线性方程组第一节 线性方程组的求解 一、齐次方程组的求解rref (A ) %将矩阵A 化为阶梯形的最简式null (A ) %求满足AX =0的解空间的一组基,即齐次线性方程组的基础解系【例1】 求下列齐次线性方程组的一个基础解系,并写出通解:我们可以通过两种方法来解: 解法1:>> A=[1 -1 1 -1;1 -1 -1 1;1 -1 -2 2]; >> rref(A) 执行后可得结果: ans=1 -1 0 0 0 0 -1 1 0 0 0 0 由最简行阶梯型矩阵,得化简后的方程⎪⎩⎪⎨⎧=+--=+--=-+-02200432143214321x x x x x x x x x x x x取x2,x4为自由未知量,扩充方程组为即提取自由未知量系数形成的列向量为基础解系,记所以齐次方程组的通解为解法2: clearA=[1 -1 1 -1;1 -1 -1 1;1 -1 -2 2];B=null(A, 'r') % help null 看看加个‘r ’是什么作用,若去掉r ,是什么结果?执行后可得结果: B=1 0 1 0 0 1 0 1⎩⎨⎧=-=-004321x x x x ⎪⎪⎩⎪⎪⎨⎧====44432221x x x x x x x x ⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡+⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡11000011424321x x x x x x ,00111⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=ε,11002⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=ε2211εεk k x +=易见,可直接得基础解系所以齐次方程组的通解为二、非齐次线性方程组的求解 Matlab 命令的基本格式:X =A\b %系数阵A 满秩时,用左除法求线性方程组AX =b 的解注意:A/B 即为AB -1, 而A\B 即为A -1B.C =[A,b];D =rref(C) % 求线性方程组AX =b 的特解,即D 的最后一列元素【例2】 求下列非齐次线性方程组的解:,00111⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=ε,11002⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=ε⎪⎪⎪⎩⎪⎪⎪⎨⎧=+=++=++=++=+150650650651655454354332121x x x x x x x x x x x x x 2211εεk k x +=解: clearA=[5 6 0 0 0;1 5 6 0 0;0 1 5 6 0;0 0 1 5 6;0 0 0 1 5]; b=[1;0;0;0;1];format rational %采用有理数近似输出格式,比较format short 看看x=A\b执行后可得所求方程组的解. 作业:【第一题】 求下列非齐次线性方程组的通解.A=[1 2 3 1;1 4 6 2;2 9 8 3;3 7 7 2] B=[3;2;7;12] format rational x=A\B x =⎪⎪⎩⎪⎪⎨⎧=+++=+++=+++=+++1227737389222643324321432143214321x x x x x x x x x x x x x x x x42/31/2684838239393950-7/3【第二题】计算工资问题一个木工,一个电工,一个油漆工,三个人相互同意彼此装修他们自己的房子。
线性方程组的直接解法及matlab的实现

本科毕业论文( 2010 届)题目线性方程组的直接解法及matlab的实现学院数学与信息工程学院专业数学与应用数学班级2006级数学1 班学号**********学生姓名胡婷婷指导教师王洁完成日期2010年5月摘要随着科技技术的发展及人类对自然界的不断探索模拟.在自然科学和工程问题中的很多问题的解决常常归结为线性代数问题!本文的主要内容是对线性方程组求解方法的探讨,主要介绍了四种求解线性方程组的方法,第一种是教科书上常见的消元法,我们称之为基本法.第二种方法是标准上三角形求解法,即将增广矩阵经过初等变换后化成标准上三角形,然后求解.它改进了一般教科书上的常见方法,与常见方法比较有如下优点:1)规范了自由未知量的选取;2)只用矩阵运算;3)减少了计算量.第三种方法是对特定的方程组(系数矩阵A为n阶对称正定矩阵,且A的顺序主子式均不为零.)的求解方法进行描述,并且为这种线性方程的求解提供了固定的公式化的方法.第四种方法是对现在实际问题中常常会遇到的系数矩阵为三对角矩阵的方程组的求解方法.同时给出这几种方法的数值解法(matlab程序),由于运用电脑软件求解,所以必须考虑计算方法的时间、空间上的效率以及算法的数值稳定性问题,所以针对不同类型的线性方程组有不同的解法.但是,基本的方法可以归结为两大类,即直接法和迭代法.关键词高斯消去法;三角分解法;乔莱斯基分解法;追赶法AbstractSystems of linear equations are associated with many problems in engineering and scinence ,as well as with applications of mathematics to the social sciences and the quantitative study of business and economic problems.The main content of this article is the method for solving linear equations, we introduce four methods for solving linear equations in this paper. The first is the elimination method which is commonly found in textbooks, and we call the Basic Law. The second method is Standard on the triangle Solution, that first change Augmented matrix into standards in primary triangle, and then solving. It improves the general textbook on common methods, compared with the common method has the following advantages:1) Specification of the free choice of unknowns; 2)Only matrix operations;3) Reduce the computation. The third method describes a way to solve a Specific equations(N coefficient matrix A is symmetric positive definite matrix, and A are not zero-order principal minor), And for this linear equation provides a fixed formulaic approach. The fourth method is to present practical problems often encountered in the coefficient matrix is tridiagonal matrix method for solving the equations. These methods are given numerical solution of (matlab program), As the use of computer software to solve, it is necessary to consider ways of computing time and space efficiency and numerical stability of algorithms, Therefore, different types of linear equations have a different solution. However, the basic method can be classified into two categories, namely direct methods and iterative methods.Key wordsGaussian elimination; Triangular decomposition; Cholesky decomposition method;Thomas algorithm目录1. 引言 (1)2.相关知识 (2)2.1 向量和矩阵 (2)2.2 特殊矩阵 (3)3.问题叙述 (3)4.问题分析 (4)4.1高斯分解法 (4)4.2三角分解法 (6)4.3乔莱斯基分解法 (6)4.4追赶法 (7)5. 举例说明与总结 (9)5.1举例说明 (9)5.1.1高斯分解的matlab程序方法 (9)5.1.2三角分解法的matlab程序方法 (10)5.1.3乔莱斯基分解法的matlab程序方法 (11)5.1.4追赶法的matlab程序方法 (13)5.2总结 (14)参考文献 (16)谢辞 (17)线性方程组的直接解法及matlab的实现Direct solution of linear equations and matlab implementation数学与信息工程学院数学与应用数学专业胡婷婷指导教师:王洁1.引言随着科技技术的发展及人类对自然界的不断探索模拟.在自然科学和工程问题中的很多问题的解决常常归结为线性代数问题!例如电学中的网络问题,用最小二乘法求实验数据拟合问题(如大地测量数据处理),解非线性方程组问题,用差分法或有限元法解常微分方程、偏微分方程边值问题等最终都归结于解线性代数方程组.从实际数据来看,这些方程组的系数矩阵大致分为两种,一种是低阶稠密矩阵(阶数不超过150).另一种是大型稀疏矩阵(矩阵阶数高且零元素较多).所以,现在我们需要对求线性方程组的方法进行探究,以便能够找到一些简便的方法来加以应用!本文主要就线性方程组的直接解法予以讨论.线性方程组是线性代数的主要内容,包括线性方程组有解性的判定、消元法解线性方程组和线性方程组解的结构. 它与矩阵、向量的内容密切相关,与矩阵、向量组相关的许多重要结论都是线性方程组有关结论的应用和推广. 如:一个向量是否可以由一个向量组线性表示、表示形式是否唯一往往与非齐次线性方程组是否有解、有唯一解还是无穷多解是等价的;一个向量组是否线性相关与齐次线性方程组是否有非零解是等价的等等.而且随着现代工业的发展,线性方程组的应用出现在各个领域,伴随着大量方程和多未知数的出现, 例如电学中的网络问题,用最小二乘法求实验数据拟合问题(如大地测量数据处理),解非线性方程组问题,用差分法或有限元法解常微分方程、偏微分方程边值问题等最终都归结于解线性代数方程组。
MatLab解线性方程组

MatLab解线性方程组MatLab解线性方程组当齐次线性方程AX=0,rank(A)=r<n时,该方程有无穷多个解,怎样用matlab求它的一个基本解呢?< p="">用matlab 中的命令 x=null(A, r )即可.其中:r=rank(A)A=[ 1 1 1 1 -3 -1 11 0 0 0 1 1 0-2 0 0 -1 0 -1 -2]用matlab 求解程序为:A=[1 1 1 1 -3 -1 1;1 0 0 0 1 1 0;-2 0 0 -1 0 -1 -2];r=rank(A);y=null(A, r )得到解为:y=[ 0 -1 -1 0-1 2 1 11 0 0 00 2 1 -20 1 0 00 0 1 00 0 0 1]其列向量为Ay=0的一个基本解一:基本概念1.N级行列式A:|A|等于所有取自不同行不同列的n个元素的积的代数和。
2.矩阵B:矩阵的概念是很直观的,可以说是一张表。
3.线性无关:一向量组(a ,a ,…. a )不线性相关,即没有不全为零的数k ,k ,……kn 使得:k1* a +k2* a +…..+kn*an=04. 秩:向量组的极在线性无关组所含向量的个数称为这个向量组的秩。
5.矩阵B的秩:行秩,指矩阵的行向量组的秩;列秩类似。
记:R(B)6.一般线性方程组是指形式: (1)其中x1,x2,…….xn为n个未知数,s为方程个数。
记:A*X=b7.性方程组的增广矩阵: =8. A*X=0 (2)二:基本理论三种基本变换:1,用一非零的数乘某一方程;2,把一个方程的倍数加到另一个方程;3互换两个方程的位置。
以上称初等变换。
消元法(理论上分析解的情况,一切矩阵计算的基础)首先用初等变换化线性方程组为阶梯形方程组,把最后的一些恒等式”0=0”(如果出现的话)去掉,1:如果剩下的方程当中最后的一个等式是零等于一非零数,那么方程组无解;否则有解,在有解的情况下,2:如果阶梯形方程组中方程的个数r等于未知量的个数,那么方程组有唯一的解,3:如果阶梯形方程组中方程的个数r小于是未知量的个数,那么方程组就有无穷个解。
解线性方程组直法Matlab实现

解线性方程组的直接法的Matlab实现姓名**********摘要:给出用MATLAB解线性方程组的各种方法,用MATLAB直接操作,不用编程,便可立即求出线性方程组的解.方法直观、简便、速度快,具有较强的实用性,另外提供了Jacobi迭代法程序.关键字:线性方程组数值解程序设计MATLAB Jacobi迭代法数据结构1 引言线性方程组Ax=b是我们在科学和工程计算中经常出现的数学模型,大量的科技与工程实际问题,常常归结为解线性代数方程组,有关线性方程组解的存在性和唯一性在“线性代数”理论中已经作过详细介绍,本章的主要任务是讨论系数行列式不为零的n阶非齐次线性方程组Ax=b的两类主要求方法:直接法(精确法)和迭代法。
对它的解法我们最熟悉的就是主元消去法,但它只是适用于A是低价稠密的矩阵,对于由工程技术中产生的大型稀疏矩阵方程组(即A的阶数n很大,但零元素较多,例如求某些偏微分方程数值解所产生的线性方程组,n≥104),还需利用迭代法求解。
如在计算机内存和运算两方面,都可以根据A中有大量零元素的特点采用迭代法。
本文将介绍两种常见的迭代:Jacobi 迭代法和Gauss-Seidel迭代,并用迭代法在数学软件Matlab上实现线性方程组的解。
1迭代法的基本思想迭代法是按照某种规则构造一个向量序列{x(k)},使其极限向量x*是Ax=b的精确解。
因此,对迭代法来说一般有下面几个问题:(1)如何构造迭代序列?(2)构造的迭代法序列是否收敛?在什么情况下收敛?(3)如果收敛,收敛的速度如何?我们应该给予量的刻划,用以比较各种迭代法收敛的快慢。
2 相关知识线性方程组的概念及分类线性方程组的一般形式为a11x1+a12x2+…+a1nxn=b1a21x1+a22x2+…+a2nxn=b2am1x1+am2x2+…+amnxn=b{n(1)若记X=x1x2(…x n)T,b=b1 b2(…bn)TA=a11 a12…a1na21 a22…a2n…am1 am2…a mn则线性方程组(1)记为AX=b.(2)若b的元素不全为零,则称方程组(1)为非齐次线性方程组;若b的元素全为零,即b1=b2=…=bn=0,则AX=0.(3)并称方程组(3)为齐次线性方程组,也称作方程组(2)的导出方程组,称(A b)=a11 a12…a1n…b1a21 a22…a2n…b2…am1 am2…amn…b n为线性方程组(1)的增广矩阵,记作A.若在方程组(1)中,当mn,即方程的个数多于未知数的个数时,方程组称为超定方程组.3、算法用高斯消元法解线性方程组bAX的MATLAB程序输入的量:系数矩阵A和常系数向量b;输出的量:系数矩阵A和增广矩阵B的秩RA,RB, 方程组中未知量的个数n和有关方程组解X及其解的信息.function [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,所以此方程组无解.') returnend if RA==RB if RA==n disp('请注意:因为RA=RB=n,所以此方程组有唯一解.') X=zeros(n,1); C=zeros(1,n+1); for p= 1:n-1(1)LU分解法lu 分解法解线性方程组function x=luxiaoyuan(A,b)[m,n]=size(A);[l u]=lu(A);s=inv(l)*[A,b];x=ones(m,1);for i=m:-1:1h=s(i,m+1);for j=m:-1:1;if j~=ih=h-x(j)*s(i,j);endendx(i)=h/s(i,i)end(2)高斯消元法高斯消元法的基本思想:Ax=b其对应的增广矩阵为为(A,b)对线性方程组的增广矩阵进行以下一系列初等变换(1)对换(A,b)某两行的顺序(2)(A,b)中的某行乘以一个不为零的数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
格式:
[Q,R] = qr(A)
求得正交矩阵Q和上三角阵R,Q和R满足 A=QR。
• 例:
>> A =[ 1 2 3;4 5 6; 7 8 9; 10 11 12];
>> [Q,R] = qr(A)
Q=
-0.0776 -0.8331 0.5456 -0.0478
-0.3105 -0.4512 -0.6919 0.4704
所以
X=R\(Q\b)
这三种分解,在求解大型方程组时很有用。其优点 是运算速度快、可以节省磁盘空间、节省内存。
• 三个变换
在线性方程组的迭代求解中,要用到系数
矩阵A的上三角矩阵、对角阵和下三角矩阵。 此三个变换在MATLAB中可由以下函数实现。
– 上三角变换:
格式 triu(A,1)
– 对角变换:
A
2
4
1
4 6 7
>> A=[1 2 3; 2 4 1; 4 6 7];
>> [l,u]=lu(A) % l=P-1 L
l=
0.2500 0.5000 1.0000
0.5000 1.0000 0
1.0000 0
0
u=
4.0000 6.0000 7.0000
0 1.0000 -2.5000
所以 X=U\(L\b) 这样可以大大提高运算速度。
例:求方程组
34xx11x22x2
x3 2x3
2 10
解:
11x1 3x2 x3 8
的一个特解。
>> A=[4 2 -1;3 -1 2;11 3 -1];
>> B=[2 10 8]';
>> D=det(A)
D=
aii1 l ik uki1 u ii1
i 1
aii l u ik ki u ii
k 1
k 1
i 1
ai1i l ik uki u i1i
k 1
•格式
L是一个单位下三角矩阵,u是一个上三角矩阵
1 2 3
例:用两种方法对A进行LU分解
-0.5433 -0.0694 -0.2531 -0.7975
-0.7762 0.3124 0.3994 0.3748
R=
-12.8841 -14.5916 -16.2992
0 -1.0413 -2.0826
0
0 -0.0000
0
0
0
• Cholesky(乔里斯基 )分解
格式: D=chol(A)
0
0 2.5000
>> [l,u,p]=lu(A)
l=
1.0000 0 0
0.5000 1.0000 0
0.2500 0.5000 1.0000
u=
4.0000 6.0000 7.0000
0 1.0000 -2.5000
00
2.5000
p=
001
010
100
-QR分解
将矩阵A分解成一个正交矩阵与一个上三角 矩阵的乘积。
格式 diag(A)
– 下三角变换:
格式 tril(A,-1)
1 2 2
例:对此矩阵做三种变换。
A
1
1
1
2 2 1
>> A=[1 2 -2;1 1 1;2 2 1]; %
1 2 2
>> triu(A,1) ans =
0 2 -2
A
1 2
1 2
10
>>[L,U]=lu(A) L=
0.3636 -0.5000 1.0000 0.2727 1.0000 0 1.0000 0 0 U= 11.0000 3.0000 -1.0000
0 -1.8182 2.2727 0 0 0.5000
>> X=U\(L\B) X=
0.4000 3.2000 6.0000 >> A*X ans = 2.0000 10.0000 8.0000
x Mx g 由此得迭代公式:
x(k1) Mx(k) g, k 0,1, 2,...... 其中x(0) n为任取的初始向量.
当k充分大时,x( k )即为原方程的近似解.
4.3.1 Jacobi迭代法
方程组:
a11x1 a12 x2 a21x1 a22 x2 an1x1 an2 x2
4.2.3 线性方程组的直接求解-分析方法
• 矩阵的三角分解: -LU分
u11 u12
AF
L U
I
l21
u22
ln1 ln2
u1n
u2
n
unn
a2ni2 ai1i l i1k uki u i1i
k 1
i2
1 1
001
000
>> tril(A,-1)
ans =
000
100
220
>> b=diag(A); b'
ans =
111
4.3 线性方程组的迭代解法
• 迭代法的一般形式 线性方程组:
Ax b 其中A (aij )为n阶非奇异方阵,b (b1,b2, ,bn )T . 构造同解方程组:
xn bn1x1 bn2 x2 bnn1xn1 fn
bij
aij aii
(i
j)
fi
bi aii
• 方程组
Ax=b
可写成
x=Bx+f
由此可构造迭代法:
x(k+1)=Bx(k)+f
16 4 8
例:进行Cholesky分解。
A
4
5
4
8 4 22
>> A=[16 4 8; 4 5 -4; 8 -4 22];
>> D=chol(A)
D=
412
0 2 -3
003
●利用矩阵的LU、QR和cholesy分解求方程组的解
(1)LU分解:
A*X=b
变成 L*U*X=b
(2)Cholesky分解
若A为对称正定矩阵,则Cholesky分解可将矩阵A 分解成上三角矩阵和其转置的乘积,
方程 A*X=b 变成 R’*R*X=b
所以 X=R\(R’\b)
(3)QR分解
对于任何长方矩阵A,都可以进行QR分解,其中Q 为正交矩阵,R为上三角矩阵的初等变换形式,即:
A=QR
方程 A*X=b 变形成 QRX=b
a1n xn b1 a2n xn b2
ann xn bn
其中det( A) det(aij ) 0,不妨设aii 0(i 1, 2,..., n)
x1
x2
b21x1
b12 x2
b1n xn f1 b2n xn f2 ,