1 / 31
文档名称:

《数值分析实验报告》.doc

格式:doc   大小:1,831KB   页数:31页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

《数值分析实验报告》.doc

上传人:755273190 2019/4/13 文件大小:1.79 MB

下载得到文件列表

《数值分析实验报告》.doc

相关文档

文档介绍

文档介绍:数值分析实验报告计算机科学与技术课题一解线性方程组的直接方法一、问题提出给定下列几个不同类型的线性方程组,=精确解x=(1,-1,0,1,2,0,3,1,-1,2)(2)设对称正定阵系数阵线方程组=精确解x=(1,-1,0,2,1,-1,0,2)3、三对角形线性方程组=精确解x=(2,1,-3,0,1,-2,3,0,1,-1)二、要求(1)对上述三个方程组分别利用Gauss顺序消去法与Gauss列主元消去法;平方根法与改进平方根法;追赶法求解(选择其一).(2)编出算法通用程序.(3)在应用Gauss消去法时,、目的和意义(1)通过该课题的程序编制,掌握模块化结构程序设计方法.(2)掌握求解各类线性方程组的直接方法,了解各种方法的特点.(3)、实验流程图Gauss顺序消去法平方根法追赶法五、实验源程序代码Gauss顺序消去法#include<>#include<>voidmain(){ doublea[10][11]={4,2,-3,-1,2,1,0,0,0,0,5, 8,6,-5,-3,6,5,0,1,0,0,12, 4,2,-2,-1,3,2,-1,0,3,1,3, 0,-2,1,5,-1,3,-1,1,9,4,2, -4,2,6,-1,6,7,-3,3,2,3,3, 8,6,-8,5,7,17,2,6,-3,5,46, 0,2,-1,3,-4,2,5,3,0,1,13, 16,10,-11,-9,17,34,2,-1,2,2,38, 4,6,2,-7,13,9,2,0,12,4,19, 0,0,-1,8,-3,-24,-8,6,3,-1,-21};//增广矩阵doublex[10];inti,j,k;intmaxi;doublemax;doubletemp;doublesum;doublel;for(k=0;k<9;k++){ i=k; max=fabs(a[i][k]);maxi=i; for(;i<10;i++) { if(fabs(a[i][k])>max) { max=(fabs(a[i][k])); maxi=i; } } if(maxi!=k) { for(j=0;j<=10;j++) { temp=a[k][j]; a[k][j]=a[maxi][j]; a[maxi][j]=temp; } } for(i=k+1;i<10;i++) { l=a[i][k]/a[k][k]; for(j=k+1;j<=10;j++) { a[i][j]=a[i][j]-l*a[k][j]; } a[i][k]=; }} printf("GAUSS列主元后的矩阵为:\n"); for(i=0;i<=9;i++) { for(j=0;j<10;j++) printf("%",a[i][j]); printf("\n"); } x[9]=a[9][10]/a[9][9]; for(i=8;i>=0;i--) { sum=0; for(j=i+1;j<=9;j++) { sum=a[i][j]*x[j]+sum; } x[i]=(a[i][10]-sum)/a[i][i]; } printf("x向量为:\n"); for(i=0;i<10;i++)printf("%f",x[i]);}平方根法#include<>#include<>voidmain(){ doublea[8][8]={4,2,-4,0,2,4,0,0, 2,2,-1,-2,1,3,2,0, -4,-1,14,1,-8,-3,5,6, 0,-2,1,6,-1,-4,-3,3, 2,1,-8,-1,22,4,-10,-3, 4,3,-3,-4,4,11,1,-4, 0,2,5,-3,-10,1,14,2, 0,0,6,3,-3,-4,2,19}; doubleb[8]={0,-6,6,23,11,-22,-15,45},g[8][8],x[8],y[8];intk,m,i;doublesum;for(k=0;k<8;k++){ if(k==0) {g[0][0]=sqrt(a[0][0]);a[0][0]=g[0][0]; for(i=1;i<=7;i++) {g[i][0]=a[i][0]/a[0][0]; a[i][0]=g[i][0]; a[0][i]=a[i][0]; } y[0]=b[0]/g[0][0]; } else{ sum=; for(m=0;m<=k-1;m++) sum=sum+a[k][m]*a[k][m]; g[k][k]=sqrt(a[k][k]-sum);