- 1、本文档共17页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
计算措施试验二试验汇报
专业班级:姓名:学号:试验成绩:
1.【试验题目】
解线性方程组的直接法2.【试验目的】
●掌握高斯消元法及选列主元素的技术
●掌握三角分解法与追赶法
●掌握向量与矩阵的三种范数及其计算措施
●理解方程组的性态、条件数及误差分析
3.【试验内容】
求解方程组,AX=b其中
。
4.【试验规定】
(1)分别列选主元消去法与不选主元消去法分别对以上两个方程组求解
(2)观测小主元并分析对计算成果的影响。
(3)用追赶法求下述三对角线性方程组的解
5.【算法描述】
(1)Ly=f,求y;(2)Ux=y,求x;从而得到解三对角线方程组的追
赶法公式。
1.计算的递推公式:
A=G?/b?β=c/(b-aβ)
2解:Ly=fy?=f?/h
y=(f-ay_)/(b-aβ_?)a
3.解:Ux=yx=y
x=y-βx?
6.【源程序(带注释)】
(1)一:列主元素消去法
#includeiostream#includecmath
#defineN20
usingnamespacestd;voidload();
floata[N][N];intm;
intmain()(
intij;
intc,k,n,p,r;
floatx[N],I[N][N],s,d;
cout下面请输入未知数的个数m=;
cinm;
coutendl;
cout请按次序输入增广矩阵a:endl;load();
for(i=0;im;i++)
for(j=i;jm;j++)
c=(fabs(a[j][i])fabs(a[i][i]))?j:i;for(n=0;nm+1;n++)
/*找列最大元素*/
s=a[i][n];
a[i][n]=a[c][n];a[c][n]=s;
}
/*将列最大数防在对角线上*/
for(p=0;pm+1;p++)
couta[i][p]\t;coutendl;
for(k=i+1;km;k++)
1[k][i]=a[k][i]/a[i][i];for(r=i;rm+1;r++)
a[k][r]=a[k][r]-1[k][i]*a[i][r];
}
x[m-1]=a[m-1][m]/a[m-1][m-1];for(i=m-2;i=0;i--)
d=0;
for(j=i+1;jm;j++)
d=d+a[i]lj]*x[j];x[i]=(a[i][m]-d)/a[i][i];
/*化成三角阵*/
/*求解*/
cout该方程组的解为:endl;for(i=0;im;i++)
coutx[i]=x[i]\t;
//
system(pause);return0;
}
voidload()
inti,j;
for(i=0;im;i++)for(j=0;jm+1;j++)
cina[i][j];}
一般消去法
#includestdio.h
voidsolve(floatI[][100],floatu[][100],floatb[],floatx[],intn)
inti.j;
floatt,s1,s2;floaty[100];
for(i=1;i=n;i++)/*第一次回代过程开始*/{
sl=0;
for(j=1;ji;j++){
t=-1[i]Jj];
sl=s1+t*y[j];
y[i]=(b[i]+s1)/L[i][i];}
for(i=n;i=1;i--)/*第二次回代过程开始*/
s2=0;
for(j=n;ji;j--)
t=-u[i][j];
s2=s2+t*x[j];
}
x[i]=(y[i]+s2)/u[i][i];}
}
voidmain({
floata[100][100],I[100][100],u[100][100],x[100],b[100];
inti,j,n,r,k;floats1,s2;
for(i=1;i=99;i++)/*将所有的数组置零,同步将L矩阵的对角值设为1*/for(j=1;j=99;j++)
{
I[i][j]=0,u[i][j]=0;if(j==i)I[i][j]=1;
}
printf(inputn:\n);/*输入方程组的个数*/scanf(%d,n);
printf(inputarrayA:\n);/*读取原矩阵A*/for(i=1;i=n;i++)
for(j=1;j=n;j++)
scanf(%f,a[i]Lj));
prin
文档评论(0)