直接法解线性方程组.docx
- 文档编号:2095336
- 上传时间:2022-10-26
- 格式:DOCX
- 页数:18
- 大小:25.76KB
直接法解线性方程组.docx
《直接法解线性方程组.docx》由会员分享,可在线阅读,更多相关《直接法解线性方程组.docx(18页珍藏版)》请在冰豆网上搜索。
直接法解线性方程组
炉眇理
数学与计算科学学院
验报告
实验项目名称
直接法解线性方程组
所属课程名称
数值方法A
验证型
实验类型
信计12-
201253100
、实验概述:
【实验目的】
1.掌握用C语言编程实现追赶法求解三对角线性方程组;
2.掌握运用高斯列主元消去法解线性方程组;
3.加深对解线性方程组的直接法一一高斯列主消元法和LU分解法的构造过程的理
解;
4.熟悉并掌握各种方法的适用对象及优缺点,学会针对不同问题选择不同方法;
5.培养使用电子计算机进行科学计算和解决问题的能力。
【实验原理】
1.追赶法原理
'61Cl
■
■/;
A=
aihl
c.
J=
■
•
\*C.-1
■
*
-
fln4
■
■A
■■
f
用追赶法解三对务线性方法组A丫=/,其中
并_§^满足二引3口卜c\
2.
说©工°i=2,3…M-1
咼斯列主兀消去法
列上元爲斯消袪计算歩扇
将方捏笙用增广矩阵b=[刁^-
歩骤h洒兀过塾对"12…
(1)选主总曲£{七求+「世得
1%卜鵲旳
血—fl
如果h上-,则5fe|年』奇异J程序结束;否则执行估人
细杲'片H上•则空换3!
上行与巫L行対应兀素位置,j=A泊冶对心斤厂,计算<*=%巾4对丿二斤乜…
步骤2;0KHjy;
(1〉若码-=6则述阵奇异「程;?
结東:
击则执行dh
⑵兀=%*九肿对F=7I-1,…
j-S知◎
<」*/
【实验环境】
HF匚©rToritieii
惠普粟列电脑
TitielQL)CorefTH)
1.硬件环境
15-2400CFVe3J0GHI3.09G)(冇3.1&GB的內存糊理地址扩展
2.软件环境
系绒;
HicroEoftWiitdowtXF
ProfeSSIon』版萃:
200£
SsrvicErack1
(2)VC++6.0
、实验内容:
【实验过程】(实验步骤)
1.实验步骤
深入了解解题过程并依次写出解题算法;
依照算法用C语言编写解题程序;
上机时将写好的程序输入到VC++中并调试运行得出方程的解;
比较几种方法之间的联系与区别。
2.1追赶法
根据以上的实验原理,在VC++编辑框中输入源程序:
ttinclu(1e
inti;for(i=1;l<-n:
++i)printfC"\nK[%d]-^f,i,x[i]):
u'oidTriDidgonalHdtrixInputCtloata[],floatb[],floatcl],floatf[],intn)
inti;
pFinML请输入bQ],c[1],scanffWV,&b[i][1]);
for(i=2;i printfC'*请输入m[初]上[竜叮工[盅<1],F[初]sznF「先虑F眾F竜产丄3[i],&b[i],ecC[i],&f[i]); printfC-请输入at^d],b[tdl,f[td]: -,n,n,n);scanf(*'^m^f*,&a[n].&b[n]启F[n]): uoid2_G_iiietho(f[float.a[]loat: b[].floatc[],floatf[],intn) inti; for(i-2: i ++i3c[ij/=Cb[ij-a[i]*c[i-l]): forCi=2: i<=n;++i) f[i]=(珂订-日[i]打儿[i]-日[i]却: [iT]);for(i=n-l;i? 0;—i) f[i]-=c[i]*f[i+l]; intn; floata[MftK_n],b[],c[HAX_n]-floatf[HflX_n]: printfC*An请输An-'*);scanf("^d*",fcn); TriDiagonalMatri3{Input(日,b,c,F.nj;Z_G_iiethodCa,b,c,n); SulutionOutputff,n);| -1 -1 -1 -1 -1 -1 2-1 -12 由原理可知: b[1]=2,c[1]=-1,f[1]=1 a[2]=-1,b[2]=2,c[2]=-1,f[2]=0a[3]=-1,b[3]=2,c[3]=-1,f[3]=0a[4]=-1,b[4]=2,c[4]=-1,f[4]=0a[5]=-1,b[5]=2,f[5]=0 将上述系数逐个输入运行框,并经过多次调试运行,最终运行出结果如下: "CAUsers\saiT\iDesktop\Debug^Cpp3cpp,exe' JbJAn=5 -1 -1 -1 continue 揃入ftlJ: 2-11输入<1強1』12C2]: -l iaiA^LJJ,hl3J,c13JLJJJ-1 WAfl[4],bt4kcr4kf[4R-1 l,f(EH-l20 K[11=-0.449931 x: 41=-2.Z441C7 1=-1.372917Preswankeyto 2.1Gauss消元法 1)数据输入 main(void) floatA[4][4]={{0.4096,0.1234,0.3678,0.2943}, {0.2246,0.3872,0.4015,0.1129},{0.3645,0.1920,0.3781,0.0643},{0.1784,0.4002,0.2786,0.3927}}; floatb[4]={0.4043,0.1550,0.4240,-0.2557}; floatx[4]={0}; floatAik,S; inti,j,k; intsize=4; for(i=0;i for(j=0;jvsize;j++)printf("\n"); printf("b[]\n"); for(i=0;i printf("%f",b[i]); printf("\n\n"); 2)消去过程 //消去过程 for(k=0;k if(! A[k][k]) return-1; for(i=k+1;i Aik=A[i][k]/A[k][k]; for(j=k;j A[i][j]=A[i][j]-Aik*A[k][j]; b[i]=b[i]-Aik*b[k]; //消去的结果 for(i=0;i for(j=0;jvsize;j++)printf("\n"); printf("b[]\n"); for(i=0;i printf("%f",b[i]); printf("\n\n"); 3)回代过程 //回代过程 x[size-1]=b[size-1]/A[size-1][size-1]; for(k=size-2;k>=0;k--) S=b[k]; for(j=k+1;j S=S-A[k][j]*x[j]; x[k]=S/A[k][k]; 4)结果输出//solution printf("Thesolutionx[]=\n"); return0; 得如下结果: "CAUs€rs\sam\DesHopXDebug'CppLexe' A hLJLJk409GHQ ^.364580 M.1784UW B.404300 e.123408 e.is2oee U.4»bl2(«l 0.^67830 O.40LCO0 U.27MbiltU -0.2£E7Ba n_i234m 0.319535 p.4n9Gon B.199021 9.000000 -0.000809e.eeeoee-0.00bs^s-0.135127-0.000809e.eoeees-e.aeeeBO30.725159b[] 9.404300-0.6666940-0B1371-±3.725052 rhesolutionxt]= -0.181918一1-&£20362.21V228-0.446704Pvescanytocontinue 0.1819181.663030 2.217228 0.446704 2.2列主元消去法 1)数据输入intmain(void)floatA[4][4]={{0.4096,0.1234,0.3678,0.2943}, {0.2246,0.3872,0.4015,0.1129},{0.3645,0.1920,0.3781,0.0643},{0.1784,0.4002,0.2786,0.3927}}; floatb[4]={0.4043,0.1550,0.4240,-0.2557}; floatx[4]={0}; floatAik,S,temp; inti,j,k; floatmax;//列主元的绝对值 intcol;//列主元所在的行 intsize=4; printf("A[][]\n"); for(i=0;ivsize;i++) for(j=0;j printf("%f",A[i][j]); printf("\n"); printf("b[]\n"); for(i=0;i printf("%f",b[i]); printf("\n\n"); 2)消去过程 //• 消去过程 for(k=0;k max=fabs(A[k][k]); col=k; //查找最大元素所在的行 if(max max=fabs(A[i][k]); col=i; printf("col: %d\n",col); for(j=k;jvsize;j++) temp=A[col][j]; A[col][j]=A[k][j]; A[k][j]=temp; temp=b[col];b[col]=b[k];b[k]=temp; if(! A[k][k]) return-1; for(i=k+1;i Aik=A[i][k]/A[k][k]; for(j=k;j A[i][j]=A[i][j]-Aik*A[k][j]; b[i]=b[i]-Aik*b[k]; //消去的结果 printf("A[]\n"); for(j=0;j printf("%f",A[i][i]); printf("\n"); printf("b[]\n"); for(i=0;ivsize;i++) printf("%f",b[i]); printf("\n\n"); 3)回代过程 //回代过程 x[size-1]=b[size-1]/A[s
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 直接 线性方程组
![提示](https://static.bdocx.com/images/bang_tan.gif)