您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 酒店餐饮 > 数值实验三--LU分解法的优点
数值实验三LU分解法的优点一:实验目的给定矩阵A与向量bA=[nn−1⋮21n⋮32⋱……对称nn−1n]b=[10⋮00](1)求A的LU分解(2)利用A的LU分解解下列方程:①A*x=b②A2∗x=b③A3∗x=b对第③题分析一下,如果先求M=A3,再解M*相比有何缺点?(3)利用A的LU分解法求A−1,其中n由自己选择,例如取n=5二:实验原理输入方程阶数n,系数矩阵A,右端向量bK=1,…,n(分解A=L*U)ukj=akj−∑lks∗usj(j=k,…,n)k−1s=1ukkF=0T输出失败信息,停k=F0Tlik=(aik−∑lisusk)/k−1s=1ukk(i=k+1,…,n)yk=bk−∑lksys)k−1s=1(k=1,2,…n)(解方程组L*y=b)xk=(yk−∑uksxs)/ns=k+1ukk(k=n,n-1,…,1)输出x1,x2,…,xn,结束三:实验过程实验代码:OptionBase1Dima()AsSingle,u()AsSingle,l()AsSinglePrivateSubCommand1_Click()DimmAsInteger,pAsInteger,nAsInteger,kAsInteger,iAsInteger,jAsInteger,sAsInteger,tAsSinglen=Val(Text1.Text)ReDima(n,n),u(n,n),l(n,n)Fori=1TonForj=iTona(i,j)=n+i-ja(j,i)=n+i-jNextNextt=0Fork=1TonForj=kTont=0Fors=1Tok-1t=t+l(k,s)*u(s,j)Nextu(k,j)=a(k,j)-tNextIfknThenFori=k+1Tont=0Fors=1Tok-1t=t+l(i,s)*u(s,k)Nextl(i,k)=(a(i,k)-t)/u(k,k)NextEndIfNextForm=1Tonl(m,m)=1NextFori=1TonForj=1TonText2.Text=Text2.Text&a(i,j)&vbCrLfNextNextFori=1TonForj=1TonText3.Text=Text3.Text&l(i,j)&vbCrLfNextNextFori=1TonForj=1TonText4.Text=Text4.Text&u(i,j)&vbCrLfNextNextEndSubPrivateSubCommand2_Click()Dimy()AsSingle,x()AsSingle,b()AsSingleDimnAsInteger,kAsInteger,iAsInteger,jAsInteger,sAsInteger,tAsSinglen=Val(Text1.Text)ReDimy(n),x(n),b(n)b(1)=1Fori=2Tonb(i)=0NextiFork=1Tont=0Fors=1Tok-1t=t+l(k,s)*y(s)Nexty(k)=b(k)-tNextFork=nTo1Step-1t=0Fors=k+1Tont=t+u(k,s)*x(s)Nextx(k)=(y(k)-t)/u(k,k)NextFori=1TonText5.Text=Text5.Text&x(i)&vbCrLfNextEndSubPrivateSubCommand3_Click()Dimy()AsSingle,x()AsSingle,b()AsSingleDimnAsInteger,kAsInteger,iAsInteger,jAsInteger,sAsInteger,tAsSinglen=Val(Text1.Text)ReDimy(n),x(n),b(n)b(1)=1Fori=2Tonb(i)=0NextiFori=1To2Fork=1Tont=0Fors=1To(k-1)t=t+l(k,s)*y(s)Nexty(k)=b(k)-tNextFork=nTo1Step-1t=0Fors=k+1Tont=t+u(k,s)*x(s)Nextx(k)=(y(k)-t)/u(k,k)NextForj=1Tonb(j)=x(j)NextNextFori=1TonText6.Text=Text6.Text&b(i)&vbCrLfNextEndSubPrivateSubCommand4_Click()Dimy()AsSingle,x()AsSingle,b()AsSingle,v()AsSingleDimnAsInteger,kAsInteger,iAsInteger,jAsInteger,sAsInteger,tAsSinglen=Val(Text1.Text)ReDimy(n),x(n),b(n)b(1)=1Fori=2Tonb(i)=0NextiFori=1To3Fork=1Tont=0Fors=1To(k-1)t=t+l(k,s)*y(s)Nexty(k)=b(k)-tNextFork=nTo1Step-1t=0Fors=k+1Tont=t+u(k,s)*x(s)Nextx(k)=(y(k)-t)/u(k,k)NextForj=1Tonb(j)=x(j)NextNextFori=1TonText7.Text=Text7.Text&b(i)&vbCrLfNextEndSubPrivateSubCommand5_Click()EndEndSubPrivateSubCommand6_Click()Dimy()AsSingle,x()AsSingle,b()AsSingle,v()AsSingleDimnAsInteger,kAsInteger,iAsInteger,jAsInteger,sAsInteger,tAsSinglen=Val(Text1.Text)ReDimv(1Ton,1Ton)ReDimy(1Ton)Fori=1TonReDimb(1Ton)b(i)=1Fork=1Tont=0Fors=1Tok-1t=t+l(k,s)*y(s)Nexty(k)=b(k)-tNextFork=nTo1Step-1t=0Fors=k+1Tont=t+u(k,s)*v(s,i)Nextv(k,i)=(y(k)-t)/u(k,k)NextNextFori=1TonForj=1TonText8.Text=Text8.Text&v(i,j)&vbCrLfNextNextEndSub四:实验结果当n=10时A*x=b的解x1=【0.5454544,-0.4999996,-3.971573E-07,2.5836E-07,-1.444715E-07,8.344654E-08,-5.188799E-08,2.407111E-08,-3.632159E-08,4.545457E-02】−1A2∗x=b的解为x2=【0.5495862,-0.7727261,0.2499987,8.174827E-07,-4.631004E-07,3.457071E-07,-2.65427E-07,9.026667E-08,-2.272733E-02,4.958682E-02】−1A3∗x=b的解为x3=【0.6883911,-1.172518,0.6363608,-0.1249981,-1.1815E-069.874508E-07,-7.902941E-07,1.136398E-02,-4.752079E-02,6.339223E-02】−1五:实验分析LU分解法比较简便迅速,当解多个系数矩阵为A的线性方程做时,LU分解法就显得特别优越,只要对系数矩阵做一次LU分解,以后只要解三角形方程即可。也可以更具系数矩阵的形状来设计算法》
本文标题:数值实验三--LU分解法的优点
链接地址:https://www.777doc.com/doc-5826039 .html