欢迎来到天天文库
浏览记录
ID:28027924
大小:105.24 KB
页数:5页
时间:2018-12-07
《数值分析实验,用程序实现gauss消元法》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、《数值分析》实验报告实验序号:实验一实验名称:实验目的:用MicrosoftvisualC++编写一个功能与Windows计算器一样的计算器。二实验内容:(1)算法介绍:计算方法分析:Gauss消元法的ffi本做法就是把方程组转化成为一个如下图的等价的三角方程组,这个过程叫做消元。得到三角方程组后,就可以逐个求出Xn,Xn-1,XI,这个过程叫回代。程序代码分析:建立两个数组a和b,通过循环语句将n阶增广矩阵输入进去,通过对列的循环对每一列进行消去未知数,通过n小步n人步把矩阵化简成上三角形矩阵,最后通过
2、迭代法解得方程组得解。⑵算法分析:程序屮从用到一个主函数,求解线形方程组得算法都放在主函数屮,利用以下函数进行求解:a[i][j]=a[i即-(a[i][k]/a[k][k])*a剛;迭代.•x[n]=a[n][n+l]/a[n][n];for(i=n-1;i>=1;i—){sum=0.0;for(j=n;j>=i+1;j-){sum=sum+a[i][j]*x[j];}//cout«sum«endl;x[ij=(a[i][n+1]-sum)/a[i][i】;}(3)原代码:#include3、am>#include<$tdio.h>^include#defineN1000usingnamespacestd;doublea[N][N];doubleb[N];intmain(){intn,i,j,k;doublem;doublex[N];printf("***Gauss消元法while(printf("输入矩阵的阶数:"))scanf("%d",&n);printff•输入增广矩阵:n);for(i=l;i<=n;i++){for(j=l;j<=n;j++){scanf(M%ir4、,&a[i]5、j]);;}scanf("%ir,&b[ij);}for(i=l;i6、j]*m;}b[kl=b[kl-b[il*m*l;}printf(”经过第%d大步后增广矩阵为:",i);for(intl=l;l<=n;l++){for(j=l;j<=n;j++)printf("%f”,a[l]U]);printf(M%f",b[l]);printf(HH);}}f7、or(i=n;i>0;i—){doublesum=0;for(j=i+l;j<=n;j++){sum=sum+a[i][j]*x8、j]*l;}xli]=(b[i]-sum)*l/a[ij[ij*l;}printf(”线性方程组的解为:n);for(i=l;i<=n;i++)if(x[iJ==O)x[i]=abs(x[i]);printf("x[%d]=%f",i,x[i]);}}return0;)三实验截Ic:<G:张波亚数值分析实給一1.exe请输入矩阵的阶数:4瞬入增广矩阵:1111519、2-14-2p-3-1-5-2312110经过第1大步后增广矩阵为,1.00000010.0000000.0000000.0000001.0000001.0000001.0000005.0000001.000000—2.0000003-000000—7.000000—5.000000-3.000000—7.000000—12.000000一2■000000-1.0000008.000000-15•000000经过第2大步后增广矩阵为:1.0000000.0000000.00000010、0.0000001.011、000001.0000000.0000000.000000经过第3大步后增广矩阵为:1.0000001.0000005-2.0000003.000000-13.0000008.000000-5-00000014.0000001.00000010.00000010.0000000.0000001.00醐01.0000000.0000000.0000001■0000001.0000005一2•0000003-000000一13»0000008-0000000.00000010.923077.000000-7.12、000000-47.000000—29.000000.000000一7-000000一47.000000-10.923077线性方程组的解为:x[11=1.000000x[21=2.000000x[31=3.000000x[4]=—1•000000请输入矩阵的阶数:四实验结果分析:消i•第k个元素时,对矩阵作加法和乘法各(n-k)*(n-k)次,除法运算(n-k)次,对右端作加法和乘法各(n-k)次,加法和乘法运兑分别各n*(
3、am>#include<$tdio.h>^include#defineN1000usingnamespacestd;doublea[N][N];doubleb[N];intmain(){intn,i,j,k;doublem;doublex[N];printf("***Gauss消元法while(printf("输入矩阵的阶数:"))scanf("%d",&n);printff•输入增广矩阵:n);for(i=l;i<=n;i++){for(j=l;j<=n;j++){scanf(M%ir
4、,&a[i]
5、j]);;}scanf("%ir,&b[ij);}for(i=l;i6、j]*m;}b[kl=b[kl-b[il*m*l;}printf(”经过第%d大步后增广矩阵为:",i);for(intl=l;l<=n;l++){for(j=l;j<=n;j++)printf("%f”,a[l]U]);printf(M%f",b[l]);printf(HH);}}f7、or(i=n;i>0;i—){doublesum=0;for(j=i+l;j<=n;j++){sum=sum+a[i][j]*x8、j]*l;}xli]=(b[i]-sum)*l/a[ij[ij*l;}printf(”线性方程组的解为:n);for(i=l;i<=n;i++)if(x[iJ==O)x[i]=abs(x[i]);printf("x[%d]=%f",i,x[i]);}}return0;)三实验截Ic:<G:张波亚数值分析实給一1.exe请输入矩阵的阶数:4瞬入增广矩阵:1111519、2-14-2p-3-1-5-2312110经过第1大步后增广矩阵为,1.00000010.0000000.0000000.0000001.0000001.0000001.0000005.0000001.000000—2.0000003-000000—7.000000—5.000000-3.000000—7.000000—12.000000一2■000000-1.0000008.000000-15•000000经过第2大步后增广矩阵为:1.0000000.0000000.00000010、0.0000001.011、000001.0000000.0000000.000000经过第3大步后增广矩阵为:1.0000001.0000005-2.0000003.000000-13.0000008.000000-5-00000014.0000001.00000010.00000010.0000000.0000001.00醐01.0000000.0000000.0000001■0000001.0000005一2•0000003-000000一13»0000008-0000000.00000010.923077.000000-7.12、000000-47.000000—29.000000.000000一7-000000一47.000000-10.923077线性方程组的解为:x[11=1.000000x[21=2.000000x[31=3.000000x[4]=—1•000000请输入矩阵的阶数:四实验结果分析:消i•第k个元素时,对矩阵作加法和乘法各(n-k)*(n-k)次,除法运算(n-k)次,对右端作加法和乘法各(n-k)次,加法和乘法运兑分别各n*(
6、j]*m;}b[kl=b[kl-b[il*m*l;}printf(”经过第%d大步后增广矩阵为:",i);for(intl=l;l<=n;l++){for(j=l;j<=n;j++)printf("%f”,a[l]U]);printf(M%f",b[l]);printf(HH);}}f
7、or(i=n;i>0;i—){doublesum=0;for(j=i+l;j<=n;j++){sum=sum+a[i][j]*x
8、j]*l;}xli]=(b[i]-sum)*l/a[ij[ij*l;}printf(”线性方程组的解为:n);for(i=l;i<=n;i++)if(x[iJ==O)x[i]=abs(x[i]);printf("x[%d]=%f",i,x[i]);}}return0;)三实验截Ic:<G:张波亚数值分析实給一1.exe请输入矩阵的阶数:4瞬入增广矩阵:111151
9、2-14-2p-3-1-5-2312110经过第1大步后增广矩阵为,1.00000010.0000000.0000000.0000001.0000001.0000001.0000005.0000001.000000—2.0000003-000000—7.000000—5.000000-3.000000—7.000000—12.000000一2■000000-1.0000008.000000-15•000000经过第2大步后增广矩阵为:1.0000000.0000000.000000
10、0.0000001.0
11、000001.0000000.0000000.000000经过第3大步后增广矩阵为:1.0000001.0000005-2.0000003.000000-13.0000008.000000-5-00000014.0000001.00000010.00000010.0000000.0000001.00醐01.0000000.0000000.0000001■0000001.0000005一2•0000003-000000一13»0000008-0000000.00000010.923077.000000-7.
12、000000-47.000000—29.000000.000000一7-000000一47.000000-10.923077线性方程组的解为:x[11=1.000000x[21=2.000000x[31=3.000000x[4]=—1•000000请输入矩阵的阶数:四实验结果分析:消i•第k个元素时,对矩阵作加法和乘法各(n-k)*(n-k)次,除法运算(n-k)次,对右端作加法和乘法各(n-k)次,加法和乘法运兑分别各n*(
此文档下载收益归作者所有