您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 解线性方程组的高斯列主元消元法vb程序
扬州大学解线性方程组计算流体动力学水研2010级第1页共5页张丽萍题目:用vb语言编一程序解下列n元一次方程组,并对相同的线性方程组改变其某几个常数项,对比其计算结果。⎪⎪⎩⎪⎪⎨⎧=+++=+++=+++nnnnnnnnnnbxaxaxabxaxaxabxaxaxa.........................................................22112222212111212111解题方法:采用解线性方程组直接算法中的高斯列主元消去法。高斯列主元消去法,较高斯消去法舍入误差小,较高斯全主元消去法计算量少,所以这里采用高斯列主元消去法。算法基本思想:该方法分消元和回代两个过程。1.消元过程:对k=1,2,…,(n-1),依次计算()⎪⎩⎪⎨⎧−=…++=−==−−−−−−)1()1()()1()1()()1()1(,,2,1,,/kkikkikikkjikkijkijkkkkikikblbbnkkjialaaaal对方程AX=B,在每一步消元前进行按列选主元的工作,如第k步消元前,就所有)1(−kika(i=k,k+1,…,n),取绝对值最大值,设)1()1(max−≤≤−=kiknikklkaa,将第L个方程与第i个方程进行互换位置,这样)1(−klka成为第k步的主元素,然后进行第k步消元。每步消元都如此。2.回代过程:()⎪⎩⎪⎨⎧…−−=÷−=÷=∑+=nijiiijiijiiinnnnnnnniaxabxabx1)()()()()(1,2,3,2,1,)(依次分别计算出Xn,Xn-1,Xn-2,……X2,X1。源程序如下:PrivateSubCommand1_Click()DimmAsInteger,nAsInteger,iAsInteger,jAsIntegerDimkAsInteger,hmaxAsInteger扬州大学解线性方程组计算流体动力学水研2010级第2页共5页张丽萍Dima()AsSingle,x()AsSingleDimzmaxAsSingle,lAsSingle,yAsSingleReDima(n,n+1)AsSingleReDimx(n)AsSingle'输入方程的增广矩阵Fori=1TonForj=1Ton+1Printi=;i;j=;ja(i,j)=Val(InputBox(增广阵,输入框,0))Printa(i,j)NextjNexti'消元的过程Fori=1Ton-1'比较每行的系数绝对值大小,如果后一个比前一个大,则记住最大的行号zmax=Abs(a(i,i))hmax=iForj=i+1TonIf(Abs(a(j,i))zmax)Thenhmax=jzmax=Abs(a(j,i))EndIfNextj'比较hmax和i,如不相等则交换该两行各元素If(hmaxi)ThenForm=iTon+1l=a(hmax,m)a(hmax,m)=a(i,m)a(i,m)=lNextm扬州大学解线性方程组计算流体动力学水研2010级第3页共5页张丽萍EndIf'将增广矩阵变换为上三角矩阵Forj=i+1Tony=a(j,i)/a(i,i)Fork=iTon+1a(j,k)=a(j,k)-a(i,k)*yNextkNextjNexti'回代的过程x(n)=a(n,n+1)/a(n,n)Fori=n-1To1Step-1y=0Forj=nToi+1Step-1y=y+a(i,j)*x(j)Nextjx(i)=(a(i,n+1)-y)/a(i,i)Nexti'输出计算结果Fori=1TonPrintPrintx(;i;)=;x(i)NextiEndSub以上程序如图1所示。扬州大学解线性方程组计算流体动力学水研2010级第4页共5页张丽萍图1vb解线性方程组程序算例1:方程组如下:⎪⎪⎩⎪⎪⎨⎧=+++=+++=+=+++203452123434--231024321432143214321xxxxxxxxxxxxxxxx扬州大学解线性方程组计算流体动力学水研2010级第5页共5页张丽萍方程组的解为:⎪⎪⎩⎪⎪⎨⎧====41-214321xxxx真解为:⎪⎪⎩⎪⎪⎨⎧====41-214321xxxx计算结果如图2左侧所示。算例2222:方程组如下:⎪⎪⎩⎪⎪⎨⎧=+++=+++=+=+++203452123438--231024321432143214321xxxxxxxxxxxxxxxx方程组的解为:⎪⎪⎩⎪⎪⎨⎧====5.24.752-49999.23000001.14321xxxx真解为:⎪⎪⎩⎪⎪⎨⎧====5.245.72-5.2314321xxxx在误差要求范围之内,满足要求。计算结果如图2右侧所示。比较算例1、2可发现,仅改变算例中的一个系数8b4b22=→=,其计算结果变化很大,说明改变常数项对计算结果影响很大。
本文标题:解线性方程组的高斯列主元消元法vb程序
链接地址:https://www.777doc.com/doc-8506641 .html