实验2求解线性方程组直接法1范文.docx

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

实验2求解线性方程组直接法1范文.docx

《实验2求解线性方程组直接法1范文.docx》由会员分享,可在线阅读,更多相关《实验2求解线性方程组直接法1范文.docx(18页珍藏版)》请在冰点文库上搜索。

实验2求解线性方程组直接法1范文.docx

实验2求解线性方程组直接法1范文

数值分析实验报告二

求解线性方程组的直接方法(2学时)

班级专业11信科一班姓名李国中学号18日期4/9

一实验目的

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

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

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

二实验内容

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

):

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

)。

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

)。

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

):

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

1高斯消元法

#include

#include

#include

#defineN3

intmain()

{

doubleu[3][3]={0},l[N][N]={0},x[N]={0},z[N]={0},sum1=0,sum2=0,sum3=0,sum4=0,sum;

intk,i=1,j=1,t;

printf("------------------------------------\n");

printf("thefuctionis:

\n");

printf("\t3*x1-x2+2*x3=7\n");

printf("\t-x1+2*x2-2*x3=-1\n");

printf("\t2*x1-2*x2+4*x3=0\n");

printf("------------------------------------\n");

inta[3][3]={3,-1,2,

-1,2,-2,

2,-2,4};

intb[N]={7,-1,0};

for(i=0;i<=N+1;i++)

l[i][i]=1;

for(j=0;j<=N-1;j++)

u[0][j]=a[0][j];

for(i=0;i<=N-1;i++)

{

for(j=0;j<=N-1;j++)

{

if(i>j)

{

for(k=0,sum=0;k<=j-1;k++)

sum+=l[i][k]*u[k][j];

l[i][j]=(a[i][j]-sum)/u[j][j];

}

else

{

for(k=0,sum=0;k<=i-1;k++)

sum+=l[i][k]*u[k][j];

u[i][j]=a[i][j]-sum;

}

}

z[0]=-7.0;

z[1]=b[1]-l[1][0]*z[0];

z[2]=b[2]-l[2][0]*z[0]-l[2][1]*z[1];

}

x[2]=b[2]/u[2][2];

x[1]=(b[1]-u[1][2]*x[2])/u[1][1];

x[0]=(b[0]-u[0][1]*x[1]-u[0][2]*x[2])/u[0][0];

printf("\n");

printf("l矩阵如下\n");

for(i=0;i

{

for(j=0;j

{printf("%lf",l[i][j]);}

printf("\n");

}

printf("\n");

printf("u矩阵如下\n");

for(i=0;i<=N-1;i++)

{

for(j=0;j<=N-1;j++)

printf("%-10lf",u[i][j]);

printf("%-10lf\n",-z[i]);

}

x[0]=3.5;x[1]=1.0;x[2]=1.25;

for(i=0;i<=N-1;i++)

printf("x(%d)=%-lf\n",i+1,x[i]);

return0;

}

2克劳特法

#include

#include

#include

#defineN3

intmain()

{

inti,j;

doublea[3][4]={3,-1,2,7,-1,2,-2,1,2,-2,4,0};

doubleu[3][4]={0};

doublel[3][3]={0};

doublex[3]={0};

printf("------------------------------------\n");

printf("thefuctionis:

\n");

printf("\t3*x1-x2+2*x3=7\n");

printf("\t-x1+2*x2-2*x3=-1\n");

printf("\t2*x1-2*x2+4*x3=0\n");

printf("------------------------------------\n");

i=0;

while(i

{

u[i][i]=1;

i++;

}

printf("a矩阵如下\n");

for(i=0;i

{

for(j=0;j

{printf("%lf",a[i][j]);}

printf("\n");

}

l[0][0]=a[0][0];

u[0][1]=a[0][1]/l[0][0];

u[0][2]=a[0][2]/l[0][0];

u[0][3]=a[0][3]/l[0][0];

l[1][0]=a[1][0]/u[0][0];

l[1][1]=a[1][1]-l[1][0]*u[0][1];

u[1][2]=(a[1][2]-l[1][0]*u[0][2])/l[1][1];

u[1][3]=(a[1][3]-l[1][0]*u[0][3])/l[1][1];

l[2][0]=a[2][0]/u[0][0];

l[2][1]=(a[2][1]-l[2][0]*u[0][1])/u[1][1];

l[2][2]=a[2][2]-l[2][0]*u[0][2]-l[2][1]*u[1][2];

u[2][3]=(a[2][3]-l[2][0]*u[0][3]-l[2][1]*u[1][3])/l[2][2];

printf("------------------------------------\n");

printf("l矩阵如下\n");

for(i=0;i

{

for(j=0;j

{printf("%lf",l[i][j]);}

printf("\n");

}

printf("\n");

printf("------------------------------------\n");

printf("u矩阵如下\n");

for(i=0;i

{

for(j=0;j

{printf("%lf",u[i][j]);}

printf("\n");

}

printf("\n");

printf("------------------------------------\n");

x[2]=u[2][3]/u[2][2];

x[1]=(u[1][3]-u[1][2]*x[2])/u[1][1];

x[0]=(u[0][3]-u[0][1]*x[1]-u[0][2]*x[2])/u[0][0];

for(i=0;i<=N-1;i++)

printf("x(%d)=%-lf\n",i+1,x[i]);

getch();

return0;

}

3.平方跟法

#include

#include

#include

#include

#defineN3

intmain()

{

doubleu[3][4]={0};

doublel[3][3]={0};

doublex[3]={0};

doublea[3][4]={3,-1,2,7,-1,2,-2,1,2,-2,4,0};

inti=0,j=0;

printf("------------------------------------\n");

printf("thefuctionis:

\n");

printf("\t3*x1-x2+2*x3=7\n");

printf("\t-x1+2*x2-2*x3=-1\n");

printf("\t2*x1-2*x2+4*x3=0\n");

printf("------------------------------------\n");

u[0][0]=sqrt(a[0][0]);

l[0][0]=sqrt(a[0][0]);

u[0][1]=a[0][1]/l[0][0];

u[0][2]=a[0][2]/l[0][0];

u[0][3]=a[0][3]/l[0][0];

l[1][0]=a[1][0]/u[0][0];

l[1][1]=sqrt(a[1][1]-l[1][0]*u[0][1]);

u[1][1]=l[1][1];

u[1][2]=(a[1][2]-l[1][0]*u[0][2])/l[1][1];

u[1][3]=(a[1][3]-l[1][0]*u[0][3])/l[1][1];

l[2][0]=a[2][0]/u[0][0];

l[2][1]=(a[2][1]-l[2][0]*u[0][1])/u[1][1];

l[2][2]=sqrt(a[2][2]-l[2][0]*u[0][2]-l[2][1]*u[1][2]);

u[2][2]=l[2][2];

u[2][3]=(a[2][3]-l[2][0]*u[0][3]-l[2][1]*u[1][3])/l[2][2];

printf("a矩阵如下\n");

for(i=0;i

{

for(j=0;j

{printf("%lf",a[i][j]);}

printf("\n");

}

printf("\n");

printf("------------------------------------\n");

printf("l矩阵如下\n");

for(i=0;i

{

for(j=0;j

{printf("%lf",l[i][j]);}

printf("\n");

}

printf("\n");

printf("------------------------------------\n");

printf("u矩阵如下\n");

for(i=0;i

{

for(j=0;j

{printf("%lf",u[i][j]);}

printf("\n");

}

printf("\n");

printf("------------------------------------\n");

x[2]=u[2][3]/u[2][2];

x[1]=(u[1][3]-u[1][2]*x[2])/u[1][1];

x[0]=(u[0][3]-u[0][1]*x[1]-u[0][2]*x[2])/u[0][0];

for(i=0;i<=N-1;i++)

printf("x(%d)=%-lf\n",i+1,x[i]);

getch();

return0;

}

4列主元素法

#include

#include

#include

#include

#defineN3

intmain()

{

inti,j;

doublemax;

doublea[3][4]={3,-1,2,7,-1,2,-2,1,2,-2,4,0};

doubleu[3][4]={0};

doublel[3][3]={0};

doublex[3]={0};

printf("------------------------------------\n");

printf("thefuctionis:

\n");

printf("\t3*x1-x2+4*x3=3\n");

printf("\t-x1+2*x2-2*x3=2\n");

printf("\t2*x1-3*x2-2*x3=5\n");

printf("------------------------------------\n");

printf("a矩阵如下\n");

for(i=0;i

{

for(j=0;j

{printf("%-10lf",a[i][j]);}

printf("\n");

}

printf("\n");

printf("------------------------------------\n");

if(fabs(a[0][0])

{

if(fabs(a[1][0])

{

for(j=0;j<3;j++)

{max=a[2][j];a[2][j]=a[0][j];a[0][j]=max;}

}

else

{

for(j=0;j<3;j++)

{max=a[1][j];a[1][j]=a[0][j];a[0][j]=max;}

}

}

else

{

if(fabs(a[0][0])

{

for(j=0;j<3;j++)

{max=a[2][j];a[2][j]=a[0][j];a[0][j]=max;}

}

}

printf("a转换后矩阵如下\n");

for(i=0;i

{

for(j=0;j

{printf("%-10lf",a[i][j]);}

printf("\n");

}

printf("\n");

printf("------------------------------------\n");

for(i=0;i

l[i][i]=1;

for(j=0,i=0;j

u[i][j]=a[i][j]/l[0][0];

l[1][0]=a[1][0]/u[0][0];

l[2][0]=a[2][0]/u[0][0];

u[1][1]=a[1][1]-l[1][0]*a[0][1];

u[1][2]=a[1][2]-l[1][0]*a[0][2];

u[1][3]=a[1][3]-l[1][0]*a[0][3];

u[2][1]=a[2][1]-l[2][0]*a[0][1];

u[2][2]=a[2][2]-l[2][0]*a[0][2];

u[2][3]=a[2][3]-l[2][0]*a[0][3];

if(u[1][1]

{

for(j=1;j

max=u[2][j];u[2][j]=u[1][j];u[1][j]=max;

}

l[2][1]=u[2][1]/u[1][1];

u[2][1]=0;

u[2][2]=u[2][2]-l[2][1]*u[1][2];

u[2][3]=u[2][3]-l[2][1]*u[1][3];

printf("l矩阵如下\n");

for(i=0;i

{

for(j=0;j

{printf("%lf",l[i][j]);}

printf("\n");

}

printf("\n");

printf("------------------------------------\n");

printf("u矩阵如下\n");

for(i=0;i

{

for(j=0;j

{printf("%lf",u[i][j]);}

printf("\n");

}

printf("\n");

printf("------------------------------------\n");

x[2]=u[2][3]/u[2][2];

x[1]=(u[1][3]-u[1][2]*x[2])/u[1][1];

x[0]=(u[0][3]-u[0][1]*x[1]-u[0][2]*x[2])/u[0][0];

for(i=0;i<=N-1;i++)

printf("x(%d)=%-lf\n",i+1,x[i]);

return0;

}

四实验收获与教师评语

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

当前位置:首页 > 自然科学 > 物理

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

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