数值分析实验1.docx
- 文档编号:7271233
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:11
- 大小:47.15KB
数值分析实验1.docx
《数值分析实验1.docx》由会员分享,可在线阅读,更多相关《数值分析实验1.docx(11页珍藏版)》请在冰豆网上搜索。
数值分析实验1
东北大学数学实验中心实验报告规范(暂行)
一、每个学生每个实验项目一份实验报告。
二、实验报告内容一般包括以下几个内容:
1.实验项目名称
2.实验目的和要求
3.实验原理
4.实验内容及步骤
5.实验数据记录和处理
6.实验结果与分析(含以上1、2、3、4、5、6项,需经指导教师签字认可,附在实验报告后)
注:
各专业各课程的实验报告内容与格式可由指导教师根据实验具体情况做出要求。
三、实验报告第一页按学院统一的实验报告格式书写,附页用A4纸书写,字迹工整,曲线要画在座标纸上,线路图要整齐、清楚(不得徒手画)。
如打印也应采用统一的实验报告的版头(A4纸)。
四、每学期将拟存档的学生实验报告按课程、实验项目分类装订成册,即每个实验项目每门课程的所有实验报告装订成一本。
装订线在左侧,第一页加订实验报告封皮。
五、东北大学理学院数学实验报告模板范本,本实验报告双面打印(附后)。
理学院数学实验中心实验报告
专业:
软件工程
姓名:
黄蕾
学号:
20165087
成绩:
实验地点:
数学实验中心
指导教师签名:
实验名称:
数值分析实验题
实验目的:
1.通过实验更加深刻理解Gauss消去过程,比较顺序Gauss消元法和列主元Gauss消元法两个算法的稳定性。
2.记录并分析不同的问题及消去过程中选择不同的主元时计算结果的差异,说明主元素的选取在消去过程中的作用。
实验内容及步骤:
内容:
考虑线性方程组Ax=b,
,
,编制一个能自动选取主元,又能手动选取主元的求解线性代数方程组的Gauss消去过程。
(1)取矩阵A=
,b=
则有精确解
。
取n=10计算矩阵的条件数。
分别用顺序Gauss消元法和列主元Gauss消元法求解,结果如何?
(2)现选择程序中手动选取主元的功能,每步消去过程都选取模最小或按模尽可能小的元素作为主元进行消元,观察并记录计算结果,若每步消去过程总选取按模最大的元素作为主元,结果又如何?
分析实验的结果。
(3)取矩阵阶数n=20或者更大,重复上述实验过程,观察记录并分析不同的问题及消去过程中选择不同的主元时计算结果的差异,说明主元素的选取在消去过程中的作用。
(4)选取其他你感兴趣的问题或者随机生成的矩阵,计算其条件数,重复上述实验,观察记录并分析实验的结果。
步骤:
1.顺序Gauss法
该方法分为消去和回代两个步骤。
用顺序Gauss消去法,必须要求
,
否则会造成很大的误差。
消元计算l[i][k]=a[i][k]/a[k][k]i=k+1,…n-1
计算该次初等变换后的矩阵形式a[i][j]=a[i][j]-l[i][k]*a[k][j],j=k,k+1,…n-1
b[i]=b[i]-l[i][k]*b[k]
2.列主元Gauss消去法
与Gauss消去法相比,列主元Gauss消去法只是在进入每一步消元之前进行主元的选择。
对k=0,2,...,n-2,执行选主元,即确定下标使得
。
在迭代过程中需要对最后一行进行直接计算,x[n-1]=b[n-1]/a[n-1][n-1]对于m=n-2,n-2…0,自下而上计算最终解,其公式为
输出x。
3.选取模尽可能小的非零元素为主元
4.手动选取主元
实验数据记录及处理:
(1)计算条件数:
当n=10时,
,可见矩阵的条件数略大。
实验数据:
矩阵A的1-条件数:
2557.500000
矩阵A的2-条件数:
1727.556025
矩阵A的无穷-条件数:
2557.500000
结果如下:
顺序消去法
列主元Gauss消去法
选取模最小的元素为主元
X
(1)
1.000000000000000
1.000000000000000
1.000000000000000
X
(2)
1.000000000000000
1.000000000000000
1.000000000000000
X(3)
1.000000000000000
1.000000000000000
1.000000000000000
X(4)
1.000000000000000
1.000000000000000
1.000000000000000
X(5)
0.999999999999998
1.000000000000000
1.000000000000000
X(6)
1.000000000000004
1.000000000000000
1.000000000000000
X(7)
0.999999999999993
1.000000000000000
1.000000000000000
X(8)
1.000000000000012
1.000000000000000
1.000000000000000
X(9)
0.999999999999979
1.000000000000000
1.000000000000000
X(10)
1.000000000000028
1.000000000000000
1.000000000000000
(2)矩阵阶数n=20时,实验结果如下:
顺序消去法
列主元Gauss消去法
选取模最小的元素为主元
X
(1)
1.000000000000000
1.000000000000000
1.000000000000000
X
(2)
1.000000000000000
1.000000000000000
1.000000000000000
X(3)
1.000000000000000
1.000000000000000
1.000000000000000
X(4)
1.000000000000001
1.000000000000000
1.000000000000000
X(5)
0.999999999999998
1.000000000000000
1.000000000000000
X(6)
1.000000000000004
1.000000000000000
1.000000000000000
X(7)
0.999999999999993
1.000000000000000
1.000000000000000
X(8)
1.000000000000014
1.000000000000000
1.000000000000000
X(9)
0.999999999999972
1.000000000000000
1.000000000000000
X(10)
1.000000000000057
1.000000000000000
1.000000000000000
X(11)
0.999999999999886
1.000000000000000
1.000000000000000
X(12)
1.000000000000227
1.000000000000000
1.000000000000000
X(13)
0.999999999999547
1.000000000000000
1.000000000000000
X(14)
1.000000000000902
1.000000000000000
1.000000000000000
X(15)
0.999999999998209
1.000000000000000
1.000000000000000
X(16)
1.000000000003524
1.000000000000000
1.000000000000000
X(17)
0.999999999993179
1.000000000000000
1.000000000000000
X(18)
1.000000000012732
1.000000000000000
1.000000000000000
X(19)
0.999999999978173
1.000000000000000
1.000000000000000
X(20)
1.000000000029102
1.000000000000000
1.000000000000000
此时的条件数为:
(3)若矩阵为A=
,b=
则有精确解
取n=10,实验结果如下:
顺序消去法
列主元Gauss消去法
选取模最小的元素为主元
X
(1)
0.99999999999999
0.99999999999999
0.99999999995031
X
(2)
1.00000000000000
1.00000000000000
1.00000000001551
X(3)
0.99999999999999
0.99999999999999
0.99999999999519
X(4)
1.000000000000002
1.00000000000000
1.00000000000146
X(5)
0.99999999999999
0.99999999999999
0.99999999999955
X(6)
1.00000000000000
1.00000000000000
1.00000000000012
X(7)
1.00000000000000
1.00000000000000
0.99999999999996
X(8)
1.00000000000000
1.00000000000000
1.00000000000000
X(9)
1.00000000000000
1.00000000000000
0.99999999999999
X(10)
1.00000000000000
1.00000000000000
1.00000000000000
实验结果及分析:
由实验结果分析可知,当方程的阶数较小时,用几种方法求得的实验结果差异不大,但是当方程阶数较大时,如果在消去过程中选择模较小的的主元,则会造成很大的误差。
几种方法中而列主元消去法能得较好的结果,列主元精度明显高于顺序Gauss和模最小的元素作为主元,因为后者主元素绝对值非常小,使消元乘数绝对值非常大,计算过程中出现大数吃掉小数的现象,产生了较大的摄入误差,最终导致计算解已完全失真。
所以在计算时,可以选择列主元Gauss消去法,但是当方程阶数过大时,不能避免直接计算的误差。
代码附件:
实验一:
列主元Gauss法:
packageExcise;
importjava.text.DecimalFormat;
importjava.util.Scanner;
publicclassLie{
staticdoublea[][];
staticdoubleb[];
staticdoublex[];
staticdoublel[][];
staticdoubleh[];
staticintn=3;
staticintcount=0;
publicstaticvoidmain(String[]arg){
doublemax;
intmaxn;
System.out.print("请输入所需要的阶数n:
");
Scannersc=newScanner(System.in);
intn=sc.nextInt();
x=newdouble[n];
l=newdouble[n][n];
h=newdouble[n];
a=newdouble[n][n];
for(inti=0;i for(intj=0;j if(i==j){ a[i][j]=6; if(j>=1){ a[i][j-1]=8; } if(j a[i][j+1]=1; } } if(i! =j&&j! =(i+1)){ a[i][j]=0; } } } for(inti=0;i for(intj=0;j System.out.print(a[i][j]+""); } System.out.println(); } b=newdouble[n]; b[0]=7; b[n-1]=14; for(inti=1;i b[i]=15; } for(inti=0;i System.out.print(b[i]+""); } System.out.println(); for(inti=0;i max=a[i][i]; maxn=i; for(intj=i+1;j if(Math.abs(max) max=a[i][j]; maxn=j; } } if(max==0){ System.out.print("方程无解"); } for(intp=0;p h[p]=a[maxn][p]; a[maxn][p]=a[i][p]; a[i][p]=h[p]; } doublejh; jh=b[maxn]; b[maxn]=b[i]; b[i]=jh; for(intk=i+1;k l[k][i]=a[k][i]/a[i][i]; for(intm=i;m a[k][m]=a[k][m]-l[k][i]*a[i][m]; } b[k]=b[k]-l[k][i]*b[i]; } } System.out.println("\nA[]="); for(inti=0;i for(intj=0;j System.out.printf("%f\t",a[i][j]); } System.out.println(""); } System.out.println("\nb[]="); for(inti=0;i System.out.printf("%f\t",b[i]); } x[n-1]=b[n-1]/a[n-1][n-1]; for(intm=n-2;m>=0;m--){ doublezj=b[m]; for(inti=n-1;i>m;i--){ zj=zj-a[m][i]*x[i]; } x[m]=zj/a[m][m]; } DecimalFormatdf=newDecimalFormat("#,##0.000000"); System.out.println("\nx[]="); for(inti=0;i System.out.printf(df.format(x[i])+""); } }} 顺序消去法(主要部分): for(inti=0;i while(a[i][i]==0){ count++; if(count==n-1-i){ System.out.printf("方程无解"); } for(intj=0;j doubletemp[]=null; temp[j]=a[i][j]; a[i][j]=a[i+count][j]; a[i+count][j]=temp[j]; } } for(intk=i+1;k l[k][i]=a[k][i]/a[i][i]; for(intm=i;m a[k][m]=a[k][m]-l[k][i]*a[i][m]; } b[k]=b[k]-l[k][i]*b[i]; }}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数值 分析 实验