计算方法实验二实验报告专业班级:姓名:学号:实验成绩:1.【实验题目】解线性方程组的直接法2.【实验目的】掌握高斯消元法及选列主元素的技术掌握三角分解法与追赶法掌握向量与矩阵的三种范数及其计算方法理解方程组的性态、条件数及误差分析3.【实验内容】求解方程组,AX=b其中4.【实验要求】(1)分别列选主元消去法与不选主元消去法分别对以上两个方程组求解(2)观察小主元并分析对计算结果的影响。(3)用追赶法求下述三对角线性方程组的解5.【算法描述】6.【源程序(带注释)】(1)一:列主元素消去法#include<iostream>#include<cmath>#defineN20usingnamespacestd;voidload();floata[N][N];intm;intmain(){ inti,j; intc,k,n,p,r; floatx[N],l[N][N],s,d; cout<<"下面请输入未知数的个数m="; cin>>m; cout<<endl; cout<<"请按顺序输入增广矩阵a:"<<endl; load(); for(i=0;i<m;i++){ for(j=i;j<m;j++) c=(fabs(a[j][i])>fabs(a[i][i]))?j:i;/*找列最大元素*/ for(n=0;n<m+1;n++) { s=a[i][n]; a[i][n]=a[c][n]; a[c][n]=s; }/*将列最大数防在对角线上*/ for(p=0;p<m+1;p++) cout<<a[i][p]<<"\t"; cout<<endl; for(k=i+1;k<m;k++) { l[k][i]=a[k][i]/a[i][i]; for(r=i;r<m+1;r++)/*化成三角阵*/ a[k][r]=a[k][r]-l[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;j<m;j++) d=d+a[i][j]*x[j]; x[i]=(a[i][m]-d)/a[i][i];/*求解*/ } cout<<"该方程组的解为:"<<endl; for(i=0;i<m;i++) cout<<"x["<<i<<"]="<<x[i]<<"\t";//system("pause");return0;}voidload(){ inti,j; for(i=0; i<m;i++) for(j=0; j<m+1; j++) cin>>a[i][j];}一般消去法#include<>voidsolve(floatl[][100],floatu[][100],floatb[],floatx[],intn){ inti,j; floatt,s1,s2; floaty[100]; for(i=1;i<=n;i++)/*第一次回代过程开始*/ { s1=0; for(j=1;j<i;j++) { t=-l[i][j]; s1=s1+t*y[j]; } y[i]=(b[i]+s1)/l[i][i]; } for(i=n;i>=1;i--)/*第二次回代过程开始*/ { s2=0; for(j=n;j>i;j--) { t=-u[i][j]; s2=
计算方法-解线性方程组的直接法实验报告 来自淘豆网m.daumloan.com转载请标明出处.