欢迎来到天天文库
浏览记录
ID:56524015
大小:122.50 KB
页数:10页
时间:2020-06-27
《计算方法-解线性方程组地直接法实验报告材料.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、计算方法实验二实验报告专业班级::学号:实验成绩:1.【实验题目】解线性方程组的直接法2.【实验目的】l掌握高斯消元法及选列主元素的技术l掌握三角分解法与追赶法l掌握向量与矩阵的三种数及其计算方法l理解方程组的性态、条件数及误差分析3.【实验容】求解方程组,AX=b其中4.【实验要求】(1)分别列选主元消去法与不选主元消去法分别对以上两个方程组求解(2)观察小主元并分析对计算结果的影响。(3)用追赶法求下述三对角线性方程组的解5.【算法描述】6.【源程序(带注释)】(1)一:列主元素消去法#i
2、nclude#include#defineN20usingnamespacestd;voidload();floata[N][N];intm;intmain(){inti,j;intc,k,n,p,r;floatx[N],l[N][N],s,d;cout<<"下面请输入未知数的个数m=";cin>>m;cout<3、fabs(a[j][i])>fabs(a[i][i]))?j:i;/*找列最大元素*/for(n=0;n4、[k][i]*a[i][r];}}x[m-1]=a[m-1][m]/a[m-1][m-1];for(i=m-2;i>=0;i--){d=0;for(j=i+1;j5、,j;for(i=0;i>a[i][j];}一般消去法#includevoidsolve(floatl[][100],floatu[][100],floatb[],floatx[],intn){inti,j;floatt,s1,s2;floaty[100];for(i=1;i<=n;i++)/*第一次回代过程开始*/{s1=0;for(j=1;j6、(b[i]+s1)/l[i][i];}for(i=n;i>=1;i--)/*第二次回代过程开始*/{s2=0;for(j=n;j>i;j--){t=-u[i][j];s2=s2+t*x[j];}x[i]=(y[i]+s2)/u[i][i];}}voidmain(){floata[100][100],l[100][100],u[100][100],x[100],b[100];inti,j,n,r,k;floats1,s2;for(i=1;i<=99;i++)/*将所有的数组置零,同时将L矩阵的对角7、值设为1*/for(j=1;j<=99;j++){l[i][j]=0,u[i][j]=0;if(j==i)l[i][j]=1;}printf("inputn:");/*输入方程组的个数*/scanf("%d",&n);printf("inputarrayA:");/*读取原矩阵A*/for(i=1;i<=n;i++)for(j=1;j<=n;j++)scanf("%f",&a[i][j]);printf("inputarrayB:");/*读取列矩阵B*/for(i=1;i<=n;i8、++)scanf("%f",&b[i]);for(r=1;r<=n;r++)/*求解矩阵L和U*/{for(i=r;i<=n;i++){s1=0;for(k=1;k<=r-1;k++)s1=s1+l[r][k]*u[k][i];u[r][i]=a[r][i]-s1;}for(i=r+1;i<=n;i++){s2=0;for(k=1;k<=r-1;k++)s2=s2+l[i][k]*u[k][r];l[i][r]=(a[i][r]-s2)/u[r][r];}}printf("arrayL:")
3、fabs(a[j][i])>fabs(a[i][i]))?j:i;/*找列最大元素*/for(n=0;n4、[k][i]*a[i][r];}}x[m-1]=a[m-1][m]/a[m-1][m-1];for(i=m-2;i>=0;i--){d=0;for(j=i+1;j5、,j;for(i=0;i>a[i][j];}一般消去法#includevoidsolve(floatl[][100],floatu[][100],floatb[],floatx[],intn){inti,j;floatt,s1,s2;floaty[100];for(i=1;i<=n;i++)/*第一次回代过程开始*/{s1=0;for(j=1;j6、(b[i]+s1)/l[i][i];}for(i=n;i>=1;i--)/*第二次回代过程开始*/{s2=0;for(j=n;j>i;j--){t=-u[i][j];s2=s2+t*x[j];}x[i]=(y[i]+s2)/u[i][i];}}voidmain(){floata[100][100],l[100][100],u[100][100],x[100],b[100];inti,j,n,r,k;floats1,s2;for(i=1;i<=99;i++)/*将所有的数组置零,同时将L矩阵的对角7、值设为1*/for(j=1;j<=99;j++){l[i][j]=0,u[i][j]=0;if(j==i)l[i][j]=1;}printf("inputn:");/*输入方程组的个数*/scanf("%d",&n);printf("inputarrayA:");/*读取原矩阵A*/for(i=1;i<=n;i++)for(j=1;j<=n;j++)scanf("%f",&a[i][j]);printf("inputarrayB:");/*读取列矩阵B*/for(i=1;i<=n;i8、++)scanf("%f",&b[i]);for(r=1;r<=n;r++)/*求解矩阵L和U*/{for(i=r;i<=n;i++){s1=0;for(k=1;k<=r-1;k++)s1=s1+l[r][k]*u[k][i];u[r][i]=a[r][i]-s1;}for(i=r+1;i<=n;i++){s2=0;for(k=1;k<=r-1;k++)s2=s2+l[i][k]*u[k][r];l[i][r]=(a[i][r]-s2)/u[r][r];}}printf("arrayL:")
4、[k][i]*a[i][r];}}x[m-1]=a[m-1][m]/a[m-1][m-1];for(i=m-2;i>=0;i--){d=0;for(j=i+1;j5、,j;for(i=0;i>a[i][j];}一般消去法#includevoidsolve(floatl[][100],floatu[][100],floatb[],floatx[],intn){inti,j;floatt,s1,s2;floaty[100];for(i=1;i<=n;i++)/*第一次回代过程开始*/{s1=0;for(j=1;j6、(b[i]+s1)/l[i][i];}for(i=n;i>=1;i--)/*第二次回代过程开始*/{s2=0;for(j=n;j>i;j--){t=-u[i][j];s2=s2+t*x[j];}x[i]=(y[i]+s2)/u[i][i];}}voidmain(){floata[100][100],l[100][100],u[100][100],x[100],b[100];inti,j,n,r,k;floats1,s2;for(i=1;i<=99;i++)/*将所有的数组置零,同时将L矩阵的对角7、值设为1*/for(j=1;j<=99;j++){l[i][j]=0,u[i][j]=0;if(j==i)l[i][j]=1;}printf("inputn:");/*输入方程组的个数*/scanf("%d",&n);printf("inputarrayA:");/*读取原矩阵A*/for(i=1;i<=n;i++)for(j=1;j<=n;j++)scanf("%f",&a[i][j]);printf("inputarrayB:");/*读取列矩阵B*/for(i=1;i<=n;i8、++)scanf("%f",&b[i]);for(r=1;r<=n;r++)/*求解矩阵L和U*/{for(i=r;i<=n;i++){s1=0;for(k=1;k<=r-1;k++)s1=s1+l[r][k]*u[k][i];u[r][i]=a[r][i]-s1;}for(i=r+1;i<=n;i++){s2=0;for(k=1;k<=r-1;k++)s2=s2+l[i][k]*u[k][r];l[i][r]=(a[i][r]-s2)/u[r][r];}}printf("arrayL:")
5、,j;for(i=0;i>a[i][j];}一般消去法#includevoidsolve(floatl[][100],floatu[][100],floatb[],floatx[],intn){inti,j;floatt,s1,s2;floaty[100];for(i=1;i<=n;i++)/*第一次回代过程开始*/{s1=0;for(j=1;j6、(b[i]+s1)/l[i][i];}for(i=n;i>=1;i--)/*第二次回代过程开始*/{s2=0;for(j=n;j>i;j--){t=-u[i][j];s2=s2+t*x[j];}x[i]=(y[i]+s2)/u[i][i];}}voidmain(){floata[100][100],l[100][100],u[100][100],x[100],b[100];inti,j,n,r,k;floats1,s2;for(i=1;i<=99;i++)/*将所有的数组置零,同时将L矩阵的对角7、值设为1*/for(j=1;j<=99;j++){l[i][j]=0,u[i][j]=0;if(j==i)l[i][j]=1;}printf("inputn:");/*输入方程组的个数*/scanf("%d",&n);printf("inputarrayA:");/*读取原矩阵A*/for(i=1;i<=n;i++)for(j=1;j<=n;j++)scanf("%f",&a[i][j]);printf("inputarrayB:");/*读取列矩阵B*/for(i=1;i<=n;i8、++)scanf("%f",&b[i]);for(r=1;r<=n;r++)/*求解矩阵L和U*/{for(i=r;i<=n;i++){s1=0;for(k=1;k<=r-1;k++)s1=s1+l[r][k]*u[k][i];u[r][i]=a[r][i]-s1;}for(i=r+1;i<=n;i++){s2=0;for(k=1;k<=r-1;k++)s2=s2+l[i][k]*u[k][r];l[i][r]=(a[i][r]-s2)/u[r][r];}}printf("arrayL:")
6、(b[i]+s1)/l[i][i];}for(i=n;i>=1;i--)/*第二次回代过程开始*/{s2=0;for(j=n;j>i;j--){t=-u[i][j];s2=s2+t*x[j];}x[i]=(y[i]+s2)/u[i][i];}}voidmain(){floata[100][100],l[100][100],u[100][100],x[100],b[100];inti,j,n,r,k;floats1,s2;for(i=1;i<=99;i++)/*将所有的数组置零,同时将L矩阵的对角
7、值设为1*/for(j=1;j<=99;j++){l[i][j]=0,u[i][j]=0;if(j==i)l[i][j]=1;}printf("inputn:");/*输入方程组的个数*/scanf("%d",&n);printf("inputarrayA:");/*读取原矩阵A*/for(i=1;i<=n;i++)for(j=1;j<=n;j++)scanf("%f",&a[i][j]);printf("inputarrayB:");/*读取列矩阵B*/for(i=1;i<=n;i
8、++)scanf("%f",&b[i]);for(r=1;r<=n;r++)/*求解矩阵L和U*/{for(i=r;i<=n;i++){s1=0;for(k=1;k<=r-1;k++)s1=s1+l[r][k]*u[k][i];u[r][i]=a[r][i]-s1;}for(i=r+1;i<=n;i++){s2=0;for(k=1;k<=r-1;k++)s2=s2+l[i][k]*u[k][r];l[i][r]=(a[i][r]-s2)/u[r][r];}}printf("arrayL:")
此文档下载收益归作者所有