数值分析实验报告二
求解线性方程组的直接方法
一 实验目的
1.掌握求解线性方程组的高斯消元法及列主元素法;
2. 掌握求解线性方程组的克劳特法;
3. 掌握求解线性方程组的平方根法。
二 实验内容
1.用高斯消元法求解方程组(精度要求为):
2. 用列主元素法求解方程组(精度要求为):
三 实验步骤(算法)与结果
1.
#include ""
#include ""
void main()
{
float l[4][4],u[4][4];
int a[4][4],b[4];
float x[5],z[4];
int n,m,i;
l[1][1]=1,l[2][2]=1,l[3][3]=1;
a[1][1]=3,a[1][2]=-1,a[1][3]=2,a[2][1]=-1,a[2][2]=2,a[2][3]=-2;
a[3][1]=2,a[3][2]=-2,a[3][3]=4;
b[1]=7,b[2]=-1,b[3]=0;
for(m=1;m<=3;m++)
{ for(n=1;n<=3;n++)
{ if(m<=n)
{ u[m][n]=a[m][n];
for(i=1;i<=m-1;i++)
{ u[m][n]-=l[m][i]*u[i][n];
}
}
if(m>n)
{ l[m][n]=a[m][n];
for(i=1;i<=n-1;i++)
l[m][n]-=l[m][i]*u[i][n];
l[m][n]/=u[n][n];
}
}
}
for(m=1;m<=3;m++)
{
for(n=1;n<=3&&n<=m;n++)
{ printf("l[%d][%d]=%f\t",m,n,l[m][n]);
printf("u[%d][%d]=%f\t",n,m,u[n][m]);
}
}
for(m=1;m<=3;m++)
{ z[m]=b[m];
for(i=1;i<=m-1;i++)
z[m]-=l[m][i]*z[i];
}
for(m=1;m<=3;m++)
printf("z[%d]=%f\t",m,z[m]);
for(m=3;m>0;m--)
{ x[m]=z[m];
for(i=m+1;i>0&&i<=3;i++)
x[m]-=u[m][i]*x[i];
x[m]=x[m]/u[m][m];
}
for(m=1;m<=3;m++)
求解线性方程组直接法 来自淘豆网www.taodocs.com转载请标明出处.