文档详情

数值分析线性方程组的实验报告包含代码详解.doc

发布:2017-05-22约6.96千字共14页下载文档
文本预览下载声明
线性代数方程组的直接解法 实验目的: 线性方程组求解的直接法编程实现 线性方程组求解的主元素消去法算法实现 线性方程组求解的LU分解得方法算法实现 线性方程组求解追赶法算法实现 实验比较:高斯消去、主元素消去、LU分解都用实例 这个进行比较。 知识理论 解线性方程组的方法大致分为直接法和迭代法。直接法是指假设计算过程中不产生舍入误差,经过有限次的运算可求的方程组精确解的方法。 方程(2-1) 记为:AX=b; 一、高斯(Gauss)消元法 (1).Gauss消元法是最基本的一种方法。先逐次消去变量,将方程组化成同解的上三角方程组。 消元过程:先逐次消去变量,将方程组化成同解的上三角方程组 基本思想 回代过程:按方程的相反顺序求解三角形方程组,得到原方程组的解。 (2) Gauss消去法的求解思路为: 若先让第一个方程组保持不变,利用它消去其余方程组中的,使之变成一个关于变元的n-1阶方程组。按照(1)中的思路继续运算得到更为低阶的方程组。经过n-1步的消元后,得到一个三角方程。利用求解公式回代得到线性方程组的解。 消元过程:第一次消元, (i=1,2,3……,n).将(2-1)中第i个方程减去第一个方程乘以(i=1,2,3……,n),完成第一次消元, (2-2) 其中:; : 简记为: 其中: 按上述方法完成n-1次消元后得到。同解的三角方程组: 简记为: 回代过程: 按逆序逐步回代得到方程的解。 (3)算法: (5)Matlab程序代码: function [RA,RB,n,X]=gaus(A,b) B=[A,b]; n = length(b); RA = rank(A); RB= rank(B); zhicha = RB-RA; if(zhicha~=0) disp(因为RA≠RB,所以此方程组无解); return; end if RA==RB if RA == n disp(因为RA=RB=n,所以此方程有唯一解); X=zeros(n,1); for p = 1:n-1 for k = p+1:n m = B(k,p)/B(p,p); B(k,p:n+1)=B(k,p:n+1)-m*B(p,p:n+1); end end b = B(1:n,n+1); A = B(1:n,1:n); X(n) =b(n)/A(n,n); for q = n-1:-1:1 X(q)=(b(q)-sum(A(q,q+1:n)*X(q+1:n)))/A(q,q); end else disp(因为RA=RBn,所以此方程有无穷解); end end 运行检测: A=[1 1 1;12 -3 3;-18 3 -1]; b=[6;15;-15]; [RA,RB,n,X]=gaus(A,b) 因为RA=RB=n,所以此方程有唯一解 RA = 3 RB = 3 n = 3 X = 1.0000 2.0000 3.0000 二、 主元素法 1.列主元素法消元 (1)基本思想:在每次消元前,在要消去未知数的系数中找到绝对值最大的系数作为主元,通过对换行将其换到对角线上,然后进行消元. (2)消元过程: 与Gauss很类似,每次对对角线换成最大的值,后面过程与Gauss基本相同。 如此经过n-1步,(2-1)的增广矩阵[A,b]被化为上三角矩阵; 回代过程: 同Gauss算法一样回代求解。 (3)算法: det-1 对于k=1,2,3,…n-1; |aik,k|=max|aik|(k≤i≤n) (i)如果aik=0,则停止计算(det(A)=0) (ii)如果aik=k,则zhuan(i) 换行 akj-- aik,j(j=k,k+1,…n) bk-- bik 后边就是Gauss消元 (4).Matlab程序 function X=liezhu(A,b) B=[A,b]; n=length(b); RA=rank(A); RB=rank(B); if RA==RB if RA==n disp(因为系数矩阵与增广矩阵的秩相同且为n,此方程有唯一解) X=zeros(n,1); for p=1:n-1 [y,j]=max(abs(B(p:n,p)));
显示全部
相似文档