列主元消去法c语言实验报告,高斯列主元消去法实验报告

41528d3028836879cd698677c3999917.gif高斯列主元消去法实验报告

《数值计算方法》实验报告 专业: 年级: 学号: 姓名: 成绩: 1. 实验名称 实验2高斯列主元消去法 2. :用Gauss列主消去法求解线性方程组 0.001*X1+2.000*X2+3.000*X3=1.000 -1.000*X1+3.217*X2+4.623*X3=2.000 -2.000*X1+1.072*X2+5.643*X3=3.000 3.实验目的 a.熟悉运用已学的数值运算方法求解线性方程—Gauss列主消去法; b.加深对计算方法技巧的认识,正确使用计算方法来求解方程; c.培养用计算机来实现科学计算和解决问题的能力。 4.基础理论 列主元消去法: a.构造增广矩阵 b.找到每列绝对值的最大数; c.行变换; d.消去; e.回代 5.实验环境 Visual C++语言 6.实验过程 实现算法的流程图: 开始 输入方程各参数,并得出增广矩阵 选取主元素,确定主元素的大小及其所在行 主元素temp=0 对换行,选取绝对值大的元素行为首行 消元 回代 输出方程解 结束 Y N 7.结果分析 a.实验结果与理论一致; b.由于数值设置成双精度浮点型,所以初值对计算结果影响不大; c.运用程序能更好的实现计算机与科学计算的统一和协调。 8. 附录 程序清单 #include #include int main() { int n=3,i,j,k,p; double a[4][4]; double b[4]; double x[4]; double m[4][4]; double temp; a[1][1]=0.001; a[1][2]=2.000; a[1][3]=3.000; b[1]=1.000; a[2][1]=-1.000; a[2][2]=3.1712; a[2][3]=2.000; b[2]=2.000; a[3][1]=-2.000; a[3][2]=1.072; a[3][3]=5.643; b[3]=3.000; for(i=1;i<=n-1;i++) { temp=a[i][i]; p=i; for(j=i+1;jtemp) { temp=a[j][i]; p=j; } if(temp==0) return 0; if(p!=i) //换行 { for(j=1;j<=n;j++) a[0][j]=a[i][j]; for(j=1;j<=n;j++) a[i][j]=a[p][j]; for(j=1;j<=n;j++) a[p][j]=a[0][j]; b[0]=b[i]; b[i]=b[p]; b[p]=b[0]; } for(j=i+1;j<=n;j++) { m[j][i]=a[j][i]/a[i][i]; for(k=i;k=1;i--)//回代 { temp=0; for(j=i+1;j<=n;j++) temp=temp+a[i][j]*x[j]; temp=b[i]-temp; x[i]=temp/a[i][i]; } for(i=1;i<=n;i++)//输出结果 { printf(“输出结果为:x[%d]=%lf “,i,x[i]); } printf(“\n“); return 0; }

你可能感兴趣的:(列主元消去法c语言实验报告)