解线性方程组直法Matlab实现Word文档格式.docx
- 文档编号:4436829
- 上传时间:2023-05-03
- 格式:DOCX
- 页数:9
- 大小:19.15KB
解线性方程组直法Matlab实现Word文档格式.docx
《解线性方程组直法Matlab实现Word文档格式.docx》由会员分享,可在线阅读,更多相关《解线性方程组直法Matlab实现Word文档格式.docx(9页珍藏版)》请在冰点文库上搜索。
(2)构造的迭代法序列是否收敛?
在什么情况下收敛?
(3)如果收敛,收敛的速度如何?
我们应该给予量的刻划,用以比较各种迭代法收敛的快慢。
2相关知识
线性方程组的概念及分类线性方程组的一般形式为a11x1+a12x2+…+a1nxn=b1a21x1+a22x2+…+a2nxn=b2am1x1+am2x2+…+amnxn=b{n
(1)若记X=x1x2(…xn)T,b=b1b2(…bn)TA=a11a12…a1na21a22…a2n…am1am2…amn则线性方程组
(1)记为AX=b.
(2)若b的元素不全为零,则称方程组
(1)为非齐次线性方程组;
若b的元素全为零,即b1=b2=…=bn=0,则AX=0.(3)并称方程组(3)为齐次线性方程组,也称作方程组
(2)的导出方程组,称(Ab)=a11a12…a1n…b1a21a22…a2n…b2…am1am2…amn…bn为线性方程组
(1)的增广矩阵,记作A.若在方程组
(1)中,当mn,即方程的个数多于未知数的个数时,方程组称为超定方程组.
3、算法
用高斯消元法解线性方程组bAX的MATLAB程序
输入的量:
系数矩阵A和常系数向量b;
输出的量:
系数矩阵A和增广矩阵B的秩RA,RB,方程组中未知量的个数n和有关方程组解X及其解的信息.function[RA,RB,n,X]=gaus(A,b)B=[Ab];
n=length(b);
RA=rank(A);
RB=rank(B);
zhica=RB-RA;
ifzhica>
0,disp('
请注意:
因为RA~=RB,所以此方程组无解.'
)returnendifRA==RBifRA==ndisp('
因为RA=RB=n,所以此方程组有唯一解.'
)X=zeros(n,1);
C=zeros(1,n+1);
forp=1:
n-1
(1)LU分解法
lu分解法解线性方程组
functionx=luxiaoyuan(A,b)
[m,n]=size(A);
[lu]=lu(A);
s=inv(l)*[A,b];
x=ones(m,1);
fori=m:
-1:
1
h=s(i,m+1);
forj=m:
1;
ifj~=i
h=h-x(j)*s(i,j);
end
x(i)=h/s(i,i)
end
(2)高斯消元法
高斯消元法的基本思想:
Ax=b
其对应的增广矩阵为为
(A,b)
对线性方程组的增广矩阵进行以下一系列初等变换
(1)对换(A,b)某两行的顺序
(2)(A,b)中的某行乘以一个不为零的数。
(3)把(A,b)某一行乘以一个常数后加到另一行
其增广矩阵变为(A‘,b’)
变换后的方程组为
A‘x=b’
与原方程组等价(同解)
因此,高斯消去法实际上就是通过上述三种变换,把(A,b)化为等价的上三角形式。
例:
用高斯消去法找出下列方程組的解
原方程组增广矩阵
跟著以上的方法來運算,這個矩陣可以轉變為以下的樣子:
如果增广矩阵第一行第一列不为零,将第二,三行第一列化为零。
然后第三行的第二列化为零,
则其解便可求得
Gauss消元法的matlab程序:
%%%%--------------------------------------------
functionx=gaussElim(A,b)
%ThissubroutinewillperformGaussianelmination
%onthematrixthatyoupasstoit.
%i.e.,givenAandbitcanbeusedtofindx,
%Ax=b
%Amustbeasqurematrix
N=length(b);
%PerformGaussianElimination
ifA(1,1)==0
n_temp=find(A(:
1)~=0);
c=A(n_temp
(1),:
);
A(n_temp
(1),:
)=A(1,:
A(1,:
)=c;
forj=2:
N%thejthrow
m=A(j:
N,j-1)/A(j-1,j-1);
%columnvector
A(j:
N,:
)=A(j:
)-m*A(j-1,:
b(j:
N)=b(j:
N)-m*b(j-1);
ifA(j,j)==0&
j~=N
n_temp=find(A(j:
end,j)~=0);
c=A(j-1+n_temp
(1),:
A(j-1+n_temp
(1),:
)=A(j,:
A(j,:
End
%Performbacksubstitution
ifA(N,N)==0
error('
thecoefficientmatrixofthelinearequationsissigular'
x=zeros(N,1);
x(N)=b(N)/A(N,N);
forj=N-1:
1,
x(j)=(b(j)-A(j,j+1:
N)*x(j+1:
N))/A(j,j);
在消元法中,舍入误差的增长是十分重要的。
如果abs(A(k,k))很小,在运算中用它作为分母会导致舍入误差的扩散。
如果调换方程组的次序,使得运算中做分母的绝对值尽量大,以减少舍入误差的影响。
如果在高斯消元法的每一步中,选取绝对值最大的元素,将其调到主对角线位置再做消元,则称为列主元消元法。
例如第k步,则将第k列绝对值最大的元素调到A(k,k)的位置,再消元。
列主元消元法MATLAB程序:
%%%%--------------------------------------------functionx=gaussElim_pivot_column(A,b)
%ThissubroutinewillperformGaussianelminationwithpartialpivoting
max_Aj=max(abs(A(:
1)));
n_temp=find(abs(A(:
1))==max_Aj);
c=A(n_temp
(1),:
A(n_temp
(1),:
A(1,:
d=b(n_temp
(1));
b(n_temp
(1))=b
(1)
b
(1)=d;
ifj~=N
max_Aj=max(abs(A(j:
end,j)));
n_temp=find(abs(A(j:
end,j))==max_Aj);
)=c
d=b(j-1+n_temp
(1));
b(j-1+n_temp
(1))=b(j)
b(j)=d;
forj=N-1:
如果进一步地对增广矩阵进行初等变换,使上三角阵变换为对角矩阵,则称为Gauss-Jordan消元法。
Gauss-Jordan消元法:
用初等变换化系数矩阵为对角矩阵的方法称为Gauss-Jordan消元法。
由于将上三角阵化为对角矩阵的工作量比直接从上三角阵回待求解的工作量。
因此,用回待求解方程组比Gauss-Jordan继续消元更适用。
故本文不对Gauss-Jordan消元做进一步考虑。
(3)直接分解法
(4)高斯消元法对系数矩阵A消元的过程相当于将A分解为一个上三角阵和一个下三角阵的过程。
如果直接分解A得到L和U,A=LU。
这时方程Ax=b化为LUx=b。
令Ux=y,则Ly=b解出来y,再由Ux=y解出来x。
这就是
直接分解法。
LUdecompositionisamatrixdecompositionwhichwritesamatrixastheproductofalowertriangularmatrixandanuppertriangularmatrix.
如果直接分解A为A=LU。
,当A为单位下三角阵(对角线元素全部为1),U是上三角阵时,称为Dolittle分解;
当L是下三角阵,U是单位上三角阵时,称为Courant分解。
LetAbeasquarematrix.AnLUdecompositionisadecompositionoftheform
whereLandUareloweranduppertriangularmatrices(ofthesamesize),respectively.ThismeansthatLhasonlyzerosabovethediagonalandUhasonlyzerosbelowthediagonal.Fora3*3matrix,thisbecomes:
AnLDUdecompositionisadecompositionoftheform
whereDisadiagonalmatrixandLandUareunittriangularmatrices,meaningthatalltheentriesonthediagonalsofLandUareone.
Matlab中的lu函数可直接进行矩阵的LU分解。
LULUfactorization.
[L,U]=LU(A)storesanuppertriangularmatrixinUanda
"
psychologicallylowertriangularmatrix"
(i.e.aproductoflower
triangularandpermutationmatrices)inL,sothatA=L*U.Acanbe
rectangular.
注意:
用Matlab中的[L,U]=lu(A)命令时,分解出来的U是上对角矩阵没错,可是L却不是下对角矩阵。
其原因在于:
定理:
当一个方阵A的1~(n-1)阶顺序主子式都不为0时,A存在唯一的doolittle分解。
对于满足条件的这个方阵,采用直接三角分解法可以得到这个唯一的L、U矩阵。
但事实上,matlab的lu函数并不是采用直接三角分解法,因为直接三角分解法存在着引入很大舍入误差的可能(直接分解法过程中,当对角元为零或很小时)。
matlab的lu函数采用的是列主元三角分解法,又称为PLU分解,实现LU=PA。
该分解法要求的前提条件是A为非奇异矩阵。
4结果
高斯的计算步骤很多要进行一系列矩阵的计算,而且必须满足矩阵A的行、列相等才有唯一解,不然就会有不同的结果,而且计算时间很长,速度很慢,而追赶法计算比较快,不用进行矩阵的计算就可以得出结果。
致谢
在论文完成之际,我要特别感谢我的指导老师***老师的热情关怀和悉心指导.本论文在xxx导师的悉心指导下完成的。
导师渊博的专业知识、严谨的治学态度,精益求精的工作作风,诲人不倦的高尚师德,严于律己、宽以待人的崇高风范,朴实无法、平易近人的人格魅力对本人影响深远。
不仅使本人树立了远大的学习目标、掌握了基本的研究方法,还使本人明白了许多为人处事的道理。
本次论文从选题到完成,每一步都是在导师的悉心指导下完成的,倾注了导师大量的心血。
在此,谨向导师表示崇高的敬意和衷心的感谢!
在写论文的过程中,遇到了很多的问题,在老师的耐心指导下,问题都得以解决。
所以在此,再次对老师道一声:
老师,谢谢您!
时光匆匆如流水,转眼便是大学毕业时节,春梦秋云,聚散真容易。
离校日期已日趋渐进,毕业论文的完成也随之进入了尾声。
从开始进入课题到论文的顺利完成,一直都离不开老师、同学、朋友给我热情的帮助,在这里请接受我诚挚的谢意!
在此我向xxxx学校xxxxxxx专业的所有老师表示衷心的感谢,谢谢你们三年的辛勤栽培,谢谢你们在教学的同时更多的是传授我们做人的道理,谢谢三年里面你们孜孜不倦的教诲!
声明人(签名):
指导教师(签名):
年月日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 线性方程组 Matlab 实现