数值分析实验报告二 求解线性方程组的直接方法.docVIP

  • 36
  • 0
  • 约4.07千字
  • 约 9页
  • 2020-04-02 发布于福建
  • 举报

数值分析实验报告二 求解线性方程组的直接方法.doc

数值分析实验报告二 求解线性方程组的直接方法 姓名:刘学超日期:3/28 一实验目的 1.掌握求解线性方程组的高斯消元法及列主元素法; 2.掌握求解线性方程组的克劳特法; 3.掌握求解线性方程组的平方根法。 二实验内容 1.用高斯消元法求解方程组(精度要求为): 2.用克劳特法求解上述方程组(精度要求为)。 3.用平方根法求解上述方程组(精度要求为)。 4.用列主元素法求解方程组(精度要求为): 三实验步骤(算法)与结果 1用高斯消元法求解方程组(精度要求为): #include stdio.h #define n3 void gauss(double a[n][n],double b[n]) { double sum1=0,sum2=0,sum3=0,sum4=0; double l[n][n],z[n],x[n],u[n][n]; int i,j,k; for(i=0;i n;i++) l[i][i]=1; for(i=0;i n;i++) { for(j=0;j n;j++) { if(i=j) { for(k=0;k=i-2;k++) sum1+=l[i][k]*u[k][j]; u[i][j]=a[i][j]-sum1; } if(i j) {for(k=0;k=j-2;k++) sum2+=l[i][k]*u[k][j]; l[i][j]=(a[i][j]-sum2)/u[j][j]; } } for(k=0;k=i-2;k++) sum3+=l[i][k]*z[k]; z[i]=b[i]-sum3; for(i=n-1;i=0;i--) { for(k=i;k=n-1;k++) sum4+=u[i][k]*x[k]; x[i]=(z[i]-sum4)/u[i][i]; } } for(i=0;i n;i++) printf(%.6f,x[i]); } main() { double v[3][3]={{3,-1,2},{-1,2,2},{2,-2,4}}; double c[3]={7,-1,0}; gauss(v,c); } 2用克劳特法求解上述方程组(精度要求为) #include stdio.h #include stdlib.h #include conio.h #define n3 int main() { float u[n][n],l[n][n],d[n]={7,-1,0},x[n]; float a[3][3]={{3,-1,2},{-1,2,2},{2,-2,4}}; int i,j,k; printf(equations:\n); for(i=0;i n;i++) {for(j=0;j n-1;j++) printf((%f)Y%d+,a[i][j],j+1); printf((%f)Y%d=%f,a[i][n-1],n,d[i]);printf(\n); } printf(\n); for(j=0;j n;j++) for(i=j;i n;i++) l[i][j]=a[i][j]; for(i=0;i n;i++) for(j=i+1;j n;j++) u[i][j]=a[i][j]; for(j=1;j n;j++) u[0][j]=u[0][j]/l[0][0]; for(k=1;k n;k++) { for(j=k;j n;j++)for(i=j;i n;i++) l[i][j]-=l[i][k-1]*u[k-1][j]; for(i=k;i n;i++)for(j=i+1;j n;j++) u[i][j]-=l[i][k-1]*u[k-1][j]; for(i=k;i n;i++)for(j=i+1;j n;j++) u[k][j]=u[k][j]/l[k][k]; } d[0]=d[0]/l[0][0]; for(k=0;k 2;k++) { for(i=k+1;i n;i++) d[i]-=d[k]*l[i][k]; d[k+1]/=l[k+1][k+1]; } for(i=0;i n;i++)x[i]=d[i]; for(k=n-2;k 2-n;k--) for(i=k;i-1;i--) x[i]-=x[k+1]*u[i][k+1]; for(j=0;j n;j++) for(i=j;i n;i++) printf(l[%d][%d]=%f\n,i+1,j+1,l[i][j]); printf(\n); for(i=0;i n;i++) for(j=i+1;j n;j++) printf(u[%d][%d]=%f\n,i+1,j+1,u[i][j]); printf(\n); for(i=0;i n;i++)printf(d%d=%f\n,i+1,d[i]); printf(\

文档评论(0)

1亿VIP精品文档

相关文档