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

上传人:b****7 文档编号:16212210 上传时间:2023-07-11 格式:DOCX 页数:9 大小:15KB
下载 相关 举报
数值分析实验报告二求解线性方程组的直接方法.docx_第1页
第1页 / 共9页
数值分析实验报告二求解线性方程组的直接方法.docx_第2页
第2页 / 共9页
数值分析实验报告二求解线性方程组的直接方法.docx_第3页
第3页 / 共9页
数值分析实验报告二求解线性方程组的直接方法.docx_第4页
第4页 / 共9页
数值分析实验报告二求解线性方程组的直接方法.docx_第5页
第5页 / 共9页
数值分析实验报告二求解线性方程组的直接方法.docx_第6页
第6页 / 共9页
数值分析实验报告二求解线性方程组的直接方法.docx_第7页
第7页 / 共9页
数值分析实验报告二求解线性方程组的直接方法.docx_第8页
第8页 / 共9页
数值分析实验报告二求解线性方程组的直接方法.docx_第9页
第9页 / 共9页
亲,该文档总共9页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

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

《数值分析实验报告二求解线性方程组的直接方法.docx》由会员分享,可在线阅读,更多相关《数值分析实验报告二求解线性方程组的直接方法.docx(9页珍藏版)》请在冰点文库上搜索。

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

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

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

姓名:

刘学超日期:

3/28

一实验目的

1.掌握求解线性方程组的高斯消元法及列主元素法;

2.掌握求解线性方程组的克劳特法;

3.掌握求解线性方程组的平方根法。

二实验内容

1.用高斯消元法求解方程组(精度要求为):

2.用克劳特法求解上述方程组(精度要求为)。

3.用平方根法求解上述方程组(精度要求为)。

4.用列主元素法求解方程组(精度要求为):

三实验步骤(算法)与结果

1用高斯消元法求解方程组(精度要求为):

#include

#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用克劳特法求解上述方程组(精度要求为)

#include

#include

#include

#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用平方根法求解上述方程组(精度要求为)

#include

#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用列主元素法求解方程组(精度要求为):

#include

#include

#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]);

}结果:

四实验收获与教师评语

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2