资源描述:
《vb矩阵运算函数》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Submadd(mtxA()AsDouble,mtxB()AsDouble,mtxC()AsDouble)'矩阵相加DimiAsInteger,jAsIntegerDimmAsInteger,nAsIntegerm=UBound(mtxA,1)-LBound(mtxA,1)+1n=UBound(mtxA,2)-LBound(mtxA,2)+1Fori=1TonForj=1TommtxC(i,j)=mtxA(i,j)+mtxB(i,j)NextjNextiEndSubSubmcut(mtxA()AsDouble,mtxB()AsDouble,mtxC()As
2、Double)'矩阵相减DimiAsInteger,jAsIntegerDimmAsInteger,nAsIntegerm=UBound(mtxA,1)-LBound(mtxA,1)+1n=UBound(mtxA,2)-LBound(mtxA,2)+1Fori=1TonForj=1TommtxC(i,j)=mtxA(i,j)-mtxB(i,j)NextjNextiEndSubSubMtrans(mtxA()AsDouble,mtxAT()AsDouble)'矩阵转置DimiAsInteger,jAsIntegerDimmAsInteger,nAsInteg
3、erm=UBound(mtxA,1)-LBound(mtxA,1)+1n=UBound(mtxA,2)-LBound(mtxA,2)+1Fori=1TonForj=1TommtxAT(i,j)=mtxA(j,i)NextjNextiEndSubSubmmul(mtxA()AsDouble,mtxB()AsDouble,mtxC()AsDouble)'矩阵相乘DimmAsIntegerDimnAsIntegerDimlAsIntegerDimiAsInteger,jAsInteger,KAsIntegerm=UBound(mtxA,1)-LBound(mtx
4、A,1)+1n=UBound(mtxA,2)-LBound(mtxA,2)+1l=UBound(mtxB,2)-LBound(mtxB,2)+1Fori=1TomForj=1TolmtxC(i,j)=0#ForK=1TonmtxC(i,j)=mtxC(i,j)+mtxA(i,K)*mtxB(K,j)NextKNextjNextiEndSubFunctionMRinv(mtxA()AsDouble)AsBoolean'矩阵求逆DimnAsIntegern=UBound(mtxA,1)-LBound(mtxA,1)+1ReDimnIs(0Ton)AsInteg
5、er,nJs(0Ton)AsIntegerDimiAsInteger,jAsInteger,KAsIntegerDimDAsDouble,pAsDoubleForK=1TonD=0#Fori=KTonForj=KTonp=Abs(mtxA(i,j))If(p>D)ThenD=pnIs(K)=inJs(K)=jEndIfNextjNextiIf(D+1#=1#)ThenMRinv=FalseExitFunctionEndIfIf(nIs(K)<>K)ThenForj=1Tonp=mtxA(K,j)mtxA(K,j)=mtxA(nIs(K),j)mtxA(nI
6、s(K),j)=pNextjEndIfIf(nJs(K)<>K)ThenFori=1Tonp=mtxA(i,K)mtxA(i,K)=mtxA(i,nJs(K))mtxA(i,nJs(K))=pNextiEndIfmtxA(K,K)=1#/mtxA(K,K)Forj=1TonIf(j<>K)ThenmtxA(K,j)=mtxA(K,j)*mtxA(K,K)NextjFori=1TonIf(i<>K)ThenForj=1TonIf(j<>K)ThenmtxA(i,j)=mtxA(i,j)-mtxA(i,K)*mtxA(K,j)NextjEndIfNextiFo
7、ri=1TonIf(i<>K)ThenmtxA(i,K)=-mtxA(i,K)*mtxA(K,K)NextiNextKForK=nTo1Step-1If(nJs(K)<>K)ThenForj=1Tonp=mtxA(K,j)mtxA(K,j)=mtxA(nJs(K),j)mtxA(nJs(K),j)=pNextjEndIfIf(nIs(K)<>K)ThenFori=1Tonp=mtxA(i,K)mtxA(i,K)=mtxA(i,nIs(K))mtxA(i,nIs(K))=pNextiEndIfNextKMRinv=TrueEndFunction