数值分析实验报告二 求解线性方程组的直接方法.docx
《数值分析实验报告二 求解线性方程组的直接方法.docx》由会员分享,可在线阅读,更多相关《数值分析实验报告二 求解线性方程组的直接方法.docx(8页珍藏版)》请在冰豆网上搜索。
数值分析实验报告二求解线性方程组的直接方法
数值分析实验报告二求解线性方程组的直接方法
姓名:
刘学超日期:
3/28
一实验目的
1.掌握求解线性方程组的高斯消元法及列主元素法;
2.掌握求解线性方程组的克劳特法;
3.掌握求解线性方程组的平方根法。
二实验内容
1.用高斯消元法求解方程组(精度要求为):
2.用克劳特法求解上述方程组(精度要求为)。
3.用平方根法求解上述方程组(精度要求为)。
4.用列主元素法求解方程组(精度要求为):
三实验步骤(算法)与结果
1用高斯消元法求解方程组(精度要求为):
#includestdio.h
#definen3voidgauss(doublea[n][n],doubleb[n])
{
doublesum1=0,sum2=0,sum3=0,sum4=0;
doublel[n][n],z[n],x[n],u[n][n];
inti,j,k;
for(i=0;in;i++)
l[i][i]=1;
for(i=0;in;i++)
{
for(j=0;jn;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(ij)
{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;in;i++)
printf("%.6f",x[i]);
}
main()
{
doublev[3][3]={{3,-1,2},{-1,2,2},{2,-2,4}};
doublec[3]={7,-1,0};
gauss(v,c);
}
2用克劳特法求解上述方程组(精度要求为)
#includestdio.h
#includestdlib.h
#includeconio.h
#definen3intmain()
{
floatu[n][n],l[n][n],d[n]={7,-1,0},x[n];
floata[3][3]={{3,-1,2},{-1,2,2},{2,-2,4}};
inti,j,k;
printf("equations:
\n");
for(i=0;in;i++)
{for(j=0;jn-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;jn;j++)
for(i=j;in;i++)
l[i][j]=a[i][j];
for(i=0;in;i++)
for(j=i+1;jn;j++)
u[i][j]=a[i][j];
for(j=1;jn;j++)
u[0][j]=u[0][j]/l[0][0];
for(k=1;kn;k++)
{
for(j=k;jn;j++)for(i=j;in;i++)
l[i][j]-=l[i][k-1]*u[k-1][j];
for(i=k;in;i++)for(j=i+1;jn;j++)
u[i][j]-=l[i][k-1]*u[k-1][j];
for(i=k;in;i++)for(j=i+1;jn;j++)
u[k][j]=u[k][j]/l[k][k];
}
d[0]=d[0]/l[0][0];
for(k=0;k2;k++)
{
for(i=k+1;in;i++)
d[i]-=d[k]*l[i][k];
d[k+1]/=l[k+1][k+1];
}
for(i=0;in;i++)x[i]=d[i];
for(k=n-2;k2-n;k--)
for(i=k;i-1;i--)
x[i]-=x[k+1]*u[i][k+1];
for(j=0;jn;j++)
for(i=j;in;i++)
printf("l[%d][%d]=%f\n",i+1,j+1,l[i][j]);
printf("\n");
for(i=0;in;i++)
for(j=i+1;jn;j++)
printf("u[%d][%d]=%f\n",i+1,j+1,u[i][j]);
printf("\n");
for(i=0;in;i++)printf("d%d=%f\n",i+1,d[i]);
printf("\n");
printf("theresultis:
\n");
for(i=0;in;i++)
printf("Y%d=%f\n",i+1,x[i]);
getch();
}结果:
3用平方根法求解上述方程组(精度要求为)
#includestdio.h
#definen3voidgauss(doublea[n][n],doubleb[n])
{
doublesum1=0,sum2=0,sum3=0,sum4=0;
doublel[n][n],z[n],x[n],u[n][n];
inti,j,k;
for(i=0;in;i++)
l[i][i]=1;
for(i=0;in;i++)
{
for(j=0;jn;j++)
{
if(i==j)
{
for(k=0;k=i-2;k++)
sum1+=pow(l[i][k],2);
l[i][j]=sqrt(a[i][i]-sum1);
}
if(ij)
{for(k=0;k=j-2;k++)
sum2+=l[i][k]*u[k][j];
l[i][j]=(a[i][j]-sum2)/l[j][j];
}
}
for(k=0;k=i-2;k++)
sum3+=l[i][k]*z[k];
z[i]=(b[i]-sum3)/l[i][i];
for(i=n-1;i=0;i--)
{
for(k=i;k=n-1;k++)
sum4+=l[k][i]*x[k];
x[i]=(z[i]-sum4)/l[i][i];
}
}
for(i=0;in;i++)
printf("%.6f",x[i]);
}
main()
{
doublev[3][3]={{3,-1,2},{-1,2,2},{2,-2,4}};
doublec[3]={7,-1,0};
gauss(v,c);
}
结果:
4用列主元素法求解方程组(精度要求为):
#includestdio.h
#includemath.h
#definen3intmain()
{
floatu[n][n],l[n][n],d[n]={7,-1,0},x[n];
floata[n][n]={3,-1,2,-1,2,-2,2,-2,4};
inti,j,k;
printf("equations:
\n");
for(i=0;in;i++)
{for(j=0;jn-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(i=0;in;i++)for(j=0;jn;j++)l[i][j]=a[i][j];
for(i=0;in;i++)for(j=0;jn;j++)
u[i][j]=a[i][j];
l[0][0]=sqrt(l[0][0]);
u[0][0]=sqrt(u[0][0]);
for(i=1;in;i++)
l[i][0]/=u[0][0];
for(j=1;jn;j++)
u[0][j]/=l[0][0];
for(k=1;k3;k++)
{for(j=0;jk;j++)l[k][k]-=pow(l[k][j],2);
l[k][k]=sqrt(l[k][k]);
for(i=k+1;in;i++)
for(j=0;jk;j++)
l[i][k]-=l[i][j]*l[k][j];
for(i=k+1;in;i++)
for(j=0;jk;j++)
l[i][k]/=l[k][k];
}
d[0]=d[0]/l[0][0];
for(k=0;k2;k++)
{for(i=k+1;in;i++)d[i]-=d[k]*l[i][k];
d[k+1]/=l[k+1][k+1];
}
for(i=0;in;i++)for(j=0;jn;j++)u[i][j]=l[j][i];
for(k=n-1;k1-n;k--)
{x[k]=d[k]/u[k][k];
for(i=k-1;i-1;i--)
d[i]=d[i]-u[i][k]*x[k];
}
for(j=0;jn;j++)
{
for(i=j;in;i++)
printf("l[%d][%d]=%f\n",i+1,j+1,l[i][j]);}
printf("\n");
for(i=0;in;i++){for(j=i;jn;j++)
printf("u[%d][%d]=%f\n",i+1,j+1,u[i][j]);}
printf("\n");
printf("theresultis:
\n");
for(i=0;in;i++)
printf("Y%d=%f\n",i+1,x[i]);
}结果:
四实验收获与教师评语