欢迎来到天天文库
浏览记录
ID:38043092
大小:76.00 KB
页数:5页
时间:2019-05-25
《列主元消去法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验二列主元消去法一.实验目的:1.了解列主元消去法的算法2.可以正确地从给出的矩阵中选取列主元3.会使用列主元消去法求线性代数方程组二.算法介绍:列主元素消去法是为控制舍入误差而提出来的一种算法,在Gauss消去法的消元过程中,若出现=0,则消元无法进行,即使其不为0,但很小,把它作为除数,就会导致其他元素量级的巨大增长和舍入误差的扩散,最后使计算结果不可靠.使用列主元素消去法计算,基本上能控制舍入误差的影响,并且选主元素比较方便.1.输入系数矩阵A,右端项b,阶n.2.对k=1,2,…n-1,循环.a.
2、按列选主元a:=︳︴,保留主元所在行的指标。b.若a=0,则系数矩阵奇异,计算停止;否则,顺序进行。c.若=k,则转向(d),否则执行与互换,与互换。d.计算算子=/e.消元:i,j=k+1,……,n3.回代:,i=n.n-1,……1三.程序代码:#include#include#includeusingnamespacestd;doublea[100][100];//存储矩阵的二维数组intn;//阶数全局变量doubleresult[100];//存放
3、解的数组doubleb[100];//存放常数的数组doublesum;voidtip()//选择操作函数{cout<<"1、输入矩阵"<>n;cout<<"请输入增广矩阵:"<>a[i][j];}}}doubleoutput(intk){in
4、ti,j,r;intf;doublemax,t;doubleresult[50];max=a[n][k];for(i=n;i>=k;i--){if(fabs(max)<=fabs(a[i][k]))//选择列主元{r=i;max=a[r][k];}}cout<<"主元为"<5、[k][k]){for(j=k;j<=n+1;j++){t=a[k][j];a[k][j]=a[r][j];a[r][j]=t;}}}doublem=0;for(i=k+1;i<=n;i++){m=a[i][k]/a[k][k];//每一次两个方程间变量的值for(j=k+1;j<=n+1;j++){a[i][j]=a[i][j]-m*a[k][j];}}for(j=1;j<=k;j++){for(i=k+1;i<=n;i++){a[i][j]=0;}}for(i=1;i<=n;i++){for(j=1;j6、<=n+1;j++){cout<=1;i--){sum=0;for(j=i+1;j<=n;j++){sum=a[i][j]*result[j]+sum;}result[i]=(a[i][n+1]-sum)/a[i][i]7、;}}doubleroot(intn){inti;cout<<"该方程组的解为"<>t&&(t==1)){input();//调用输入函数inti;for(i=1;i8、<>t&&(t==1)){input();//调用输入函数for(i=1;i
5、[k][k]){for(j=k;j<=n+1;j++){t=a[k][j];a[k][j]=a[r][j];a[r][j]=t;}}}doublem=0;for(i=k+1;i<=n;i++){m=a[i][k]/a[k][k];//每一次两个方程间变量的值for(j=k+1;j<=n+1;j++){a[i][j]=a[i][j]-m*a[k][j];}}for(j=1;j<=k;j++){for(i=k+1;i<=n;i++){a[i][j]=0;}}for(i=1;i<=n;i++){for(j=1;j
6、<=n+1;j++){cout<=1;i--){sum=0;for(j=i+1;j<=n;j++){sum=a[i][j]*result[j]+sum;}result[i]=(a[i][n+1]-sum)/a[i][i]
7、;}}doubleroot(intn){inti;cout<<"该方程组的解为"<>t&&(t==1)){input();//调用输入函数inti;for(i=1;i8、<>t&&(t==1)){input();//调用输入函数for(i=1;i
8、<>t&&(t==1)){input();//调用输入函数for(i=1;i
此文档下载收益归作者所有