1、本科实验报告课程名称: 计算机数值方法 B 实验项目: 线性方程组的直接解法 实验地点: 逸夫楼 302 专业班级: 软件 1124 学号:2011005027 学生姓名: 郭 钰 指导教师: 王 华 2013 年 4 月 13 日一、实验目的和要求(1)了解线性方程组常见的直接解法,如 Guass 消元法、LU 分解法、追赶法。(2)加深对线性方程组求解方法的认识,掌握算法。(3)会进行误差分析,并能对不同方法进行比较。二、实验内容和原理合理利用 Gauss 消元法、LU 分解法或追赶法求解下列方程组: 138442102x 2178.465912159.065343215x 3720163
2、84741x (n=5,10,100,) 521121 nx1、高斯分解法:将原方程组化为三角形方阵的方程组:lik=aik/akkaij= aij- lik* akj k=1,2,n-1 i=k+1,k+2, ,n j=k+1,k+2, ,n+1由回代过程求得原方程组的解:xn= ann+1/ annxk=( akn+1-a kj xj)/ akk (k=n-1,n-2, ,2,1)2、LU 分解法:将系数矩阵 A转化为 A=L*U, L为单位下三角矩阵,U 为普通上三角矩阵,然后通过解方程组 l*y=b,u*x=y,来求解 x。 3、追赶法:用来求对角方程组;将系数矩阵 A转化为 A=L*
3、U, L为普通下 n-1对角矩阵,U为单位上 n-1对角矩阵,然后通过解方程组 l*y=b,u*x=y,来求解 x。三、主要仪器设备惠普 ProBook6460b VC+运行环境四、操作方法与实验步骤(1)Guass 消元法完全主元素消元法#include “stdafx.h“#include“math.h“#include“iostream“using namespace std;float a100101;float x10;int N; void output()for(int i=1;iN;coutaij;coutmaxv)maxv=abs(aij);maxi=i;maxj=j;if(
4、maxi!=k) for(int j=1;j0;i-)float s=0;for(int j=i+1;j=0;k-)sum=0;for(j=k+1;j0;-i) xi = yi;for(j=i+1;j=1;i-) di=di-ci*di+1;printf(“n*n“);for(i=1;i=n;i+)printf(“d%2d=%lfn“,i,di);Zgf.txt文件中的内容是:52 1 -71 2 1 -51 2 1 -51 2 1 -51 2 -5五、实验结果与分析列主元素消元法追赶法LU 的分解法对于两种高斯解方程,完全主元素跟列主元素都是先消元、再回代,由程序段可以发现,始终消去对角线下方的元素。列主元素消元法的算法设计上优于完全主元素消元法,它只需依次按列选主元素然后换行使之变到主元素位置,再进行消元即可。即为了节约内存及时效,可以不必计算出主元素下方数据。列主元素消元法的耗时比完全主元素法少很多,常采用之。对于 LU 分解法,分解矩阵为单位下三角阵 L 与上三角阵 U 的乘积,然后解方程组 Ly=b,回代,解方程组 Ux=y。其中的 L 为 n 阶单位下三角阵、U 为上三角阵。应用较广泛,可直接解出方程解。追赶法仅适用于对角矩阵,应用范围相较其他方法较窄。