【文章內(nèi)容簡(jiǎn)介】
***** Dim I As Integer Dim J As Integer Dim K As Integer Dim U As Integer Dim I1 As Integer Dim J1 As Integer Dim K1 As Integer I1 = UBound(A, 1): 39。***** 返回二維數(shù)組第一維的最大下標(biāo),此為矩陣A()的行數(shù)J1 = UBound(A, 2): 39。***** 返回二維數(shù)組第二維的最大下標(biāo),此為矩陣A()的列數(shù) K1 = UBound(B, 2): 39。***** 返回二維數(shù)組第二維的最大下標(biāo),此為矩陣B()的列數(shù) Rem ***** C()=A()*B()ReDim C(1 To I1, 1 To K1)As Double For I = 1 To I1 For K = 1 To K1 U = 0 For J = 1 To J1 U = U + A(I, J)* B(J, K)Next J C(I, K)= U Print Spc(6)?!癈(”。I。“,”。K?!?=”。C(I, K)Next K Next I End Sub矩陣求逆Private Sub Form_Load()Dim I As Integer Dim J As Integer Dim K As Integer Dim N As Integer Dim R As Integer Dim DetA As Double, S As Double N = 4 ReDim A(1 To N, 1 To N), B(1 To N, 1 To N)As Double, C(1 To N, 1 To N)As Double 39。A數(shù)組存放源矩陣,B數(shù)組臨時(shí)存放各元素的代數(shù)余子式,C數(shù)組存放逆矩陣 A(1, 1)= 10: A(1, 2)= 4: A(1, 3)= 3: A(1, 4)= 6 A(2, 1)= 5: A(2, 2)= 8: A(2, 3)= 7: A(2, 4)= 9 A(3, 1)= 1: A(3, 2)= 3: A(3, 3)= 5: A(3, 4)= 7 A(4, 1)= 2: A(4, 2)= 6: A(4, 3)= 3: A(4, 4)= 1 39。求矩陣的行列式 For I = 1 To N For J = 1 To N B(I, J)= A(I, J)Next J Next I Call QIUJUZHEN(B(), N, S)DetA = S “S=”。S 39。求代數(shù)余子式及伴隨矩陣 N = N1)= A(K, R)If R J And K I Then B(K1, R1 For J = I + 1 To N M =B(I, J)/ B(I, I)For K = I To N B(K, J)= B(K, J)+ M * B(K, I)39。 “B(”。K?!?”。J?!?=”。B(K, J)Next K Next J Next I For I = 1 To N S = S * B(I, I)Next IEnd Function 30第三篇:程序設(shè)計(jì)教案VB版第七章第七章繪制誤差橢圓、誤差曲線的程序設(shè)計(jì)方法167。71 繪制誤差橢圓的程序設(shè)計(jì)方法測(cè)量平面控制網(wǎng)平差計(jì)算后進(jìn)行精度評(píng)定時(shí),點(diǎn)位中誤差雖然可以用來(lái)評(píng)定待定點(diǎn)的點(diǎn)位精度,但是它卻不能代表該點(diǎn)在某一任意方向上的位差大小。在有些情況下,往往需要確定點(diǎn)位在某些特殊方向上的位差大?。淮送猓€要了解點(diǎn)位在哪一個(gè)方向上的位差最大,在哪一個(gè)方向上的位差最小。例如,在工程放樣中,就經(jīng)常需要研究這個(gè)問(wèn)題。為了便于求定待定點(diǎn)點(diǎn)位在任意方向上位差的大小,一般是通過(guò)求出待定點(diǎn)的點(diǎn)位誤差橢圓來(lái)實(shí)現(xiàn)的。通過(guò)誤差橢圓可以求得待定點(diǎn)在任意方向上的位差,這樣就可以較精確地、形象而全面地反映待定點(diǎn)點(diǎn)位在各個(gè)方向上誤差的分布情況。為了確定任意兩個(gè)待定點(diǎn)之間相對(duì)位置的某些精度,也需要作出兩個(gè)待定點(diǎn)之間的相對(duì)誤差橢圓。無(wú)論是表示點(diǎn)位絕對(duì)位差的誤差橢圓,還是表示兩個(gè)待定點(diǎn)之間相對(duì)位置的某些精度的相對(duì)誤差橢圓,在測(cè)量程序設(shè)計(jì)中所要面臨的問(wèn)題都是繪制橢圓,而這個(gè)橢圓一般情況下不是正立的。由于目前常用的幾種編程語(yǔ)言(例如VB、VC)中沒(méi)有現(xiàn)成的語(yǔ)句、命令、函數(shù)或方法來(lái)繪制傾斜任意角度的橢圓,因此,下面研究在計(jì)算機(jī)屏幕上繪制傾斜任意角度的橢圓的編程方法。一、繪制誤差橢圓的基本思路以下討論問(wèn)題及編程中所使用的平面直角坐標(biāo)系,設(shè)經(jīng)過(guò)一段程序的控制,已將屏幕繪圖區(qū)域的平面直角坐標(biāo)系調(diào)整為測(cè)量平面直角坐標(biāo)系(以下簡(jiǎn)稱坐標(biāo)系),即縱軸向上為X軸正向,橫軸向右為Y軸正向。繪制傾斜任意角度的誤差橢圓時(shí),已知數(shù)據(jù)如下: 橢圓的長(zhǎng)半軸:E(也可用a表示)橢圓的短半軸:F(也可用b表示)橢圓中心點(diǎn)的在坐標(biāo)系中的坐標(biāo):(X0,Y0)橢圓長(zhǎng)半軸在坐標(biāo)系中的坐標(biāo)方位角:T(T稱為誤差橢圓的主軸方向)如圖71所示,繪制傾斜任意角度的誤差橢圓的基本思路是:首先,求出在坐標(biāo)系中坐標(biāo)方位角為T的橢圓長(zhǎng)半軸與橢圓圓周的交點(diǎn)G的坐標(biāo);然后,再求出橢圓圓周上一系列點(diǎn)P(i)的坐標(biāo)(設(shè)i=0時(shí),P(0)點(diǎn)與G點(diǎn)重合;i=n時(shí),P(n)點(diǎn)與G點(diǎn)重合);最后,從G點(diǎn)開(kāi)始用VB中畫(huà)直線方法LINE(以下簡(jiǎn)稱LINE)依次連接相鄰點(diǎn)。為了用LINE依次連接相鄰點(diǎn)時(shí)所畫(huà)出的直線趨近于橢圓曲線,需要使橢圓圓周上一系列點(diǎn)P(i)(將P(i)點(diǎn)稱為誤差橢圓圓周上細(xì)部點(diǎn),簡(jiǎn)稱P(i)點(diǎn),下同)分布合理,即P(i)點(diǎn)與P(i+1)點(diǎn)之間的直線距離應(yīng)足夠小。鑒于計(jì)算機(jī)屏幕的分辨率。關(guān)于G點(diǎn)坐標(biāo)的計(jì)算,應(yīng)以橢圓中心點(diǎn)坐標(biāo)(X0,Y0)作為起始坐標(biāo)、以橢圓的長(zhǎng)半軸E為距離、以T為坐標(biāo)方位角、按坐標(biāo)正算的方法進(jìn)行計(jì)算,即:236。XG=X0+aCos(T)(71)237。Y=Y+aSin(T)0238。G155 橢圓長(zhǎng)軸與橢圓圓周的另一個(gè)交點(diǎn)GA的坐標(biāo)為:237。sT+p)236。XGA=X0+aCo((72)(T+p)238。YGA=Y0+aSin橢圓短軸與橢圓圓周的兩個(gè)交點(diǎn)H、HA的坐標(biāo)分別為:p236。X=X+bCos(T+)0239。239。H(73)237。239。Y=Y+bSin(T+p)H0239。2238。3p236。X=X+bCos(T+)0239。239。HA2(74)237。3p239。Y=Y+bSin(T+)HA0239。2238。根據(jù)上述坐標(biāo),用LINE可畫(huà)出橢圓的長(zhǎng)軸及短軸。以下重點(diǎn)介紹計(jì)算P(i)點(diǎn)坐標(biāo)的方法。二、計(jì)算P(i)點(diǎn)坐標(biāo)的方法坐標(biāo)轉(zhuǎn)換公式如圖71所示,設(shè)P點(diǎn)在坐標(biāo)系XOY中的坐標(biāo)為XP、YP,在坐標(biāo)系EO162。F中的坐標(biāo)為EP、FP;O162。點(diǎn)在坐標(biāo)系XOY中的坐標(biāo)為XO、YO;E軸正向在坐標(biāo)系XOY中的坐標(biāo)方位角為T。則可以推證出如下坐標(biāo)互換公式:圖71 傾斜任意角度的誤差橢圓236。XP=XO+EPCosTFPSinT(75)237。Y=Y+ESinT+FCosTOPP238。P236。EP=(YPYO)SinT+(XPXO)CosT及:237。(76)F=(YY)CosT(XX)SinTPOPO238。P計(jì)算P(i)點(diǎn)坐標(biāo)的參數(shù)方程法如圖72所示,該法的基本思路是:先用橢圓的參數(shù)方程求解正立豎放橢圓上P(i)點(diǎn)坐標(biāo)EP(i)、FP(i);然后,使用坐標(biāo)轉(zhuǎn)換公式的(75)式計(jì)算P(i)點(diǎn)在坐標(biāo)系XOY中的坐標(biāo)XP(i)、YP(i)。P(i)點(diǎn)在EO162。F坐標(biāo)系中的坐標(biāo)EP(i)、FP(i)可用參數(shù)方程表示為:156 236。EP(i)=aCos(t)(77)237。238。FP(i)=bSin(t)參照?qǐng)D71,用P(i)代替P、EP(i)代替EP、FP(i)代替FP、XP(i)代替XP、YP(i)代替YP,將(77)式代入(75)式中,可得任一點(diǎn)P(i)在XOY坐標(biāo)系中的坐標(biāo)為:236。XP(i)=X0+(aCos(t))Cos(T)(bSin(t))Sin(T)(78)237。238。YP(i)=Y0+(aCos(t))Sin(T)+(bSin(t))Cos(T)如圖72所示,編程中,可設(shè)t=i(DT),其中DT是橢圓圓周上有序(即有一定規(guī)律)分布的一系列點(diǎn)中的任意相鄰兩點(diǎn)P(i)、P(i+1)和橢圓中心相連的直線的夾角,t應(yīng)從O162。G開(kāi)始沿順時(shí)針?lè)较蜻f增,即自E軸正向沿著順時(shí)針?lè)较蛑罯162。P(i)的水平夾角;i是程序中的循環(huán)變量,i=0,1,2,LL,n。計(jì)算P(i)點(diǎn)坐標(biāo)的直線點(diǎn)斜式方程法如圖72所示,該法的基本思路是:首先,求出圖72 正立豎放橢圓 橢圓圓周上一系列點(diǎn)P(i)到橢圓中心的距離D(i);然后,直接用坐標(biāo)正算公式求解P(i)點(diǎn)在坐標(biāo)系XOY中坐標(biāo)XP(i)、YP(i)。設(shè)正立豎放橢圓中心O162。點(diǎn)在EO162。F坐標(biāo)系中的坐標(biāo)為(0,則過(guò)該點(diǎn)及橢圓圓周上任0),一點(diǎn)P(i)的直線點(diǎn)斜式方程為:FP(i)=mEP(i)(79)其中:m=tg(iDT)(710)(710)式中的m為直線O162。P(i)的斜率,i、DT的意義與前面相同。在EO162。F坐標(biāo)系中的正立豎放橢圓的標(biāo)準(zhǔn)方程為:(EP(i))2(FP(i))2+=1(711)22ab將(79)式代入到(711)式,并顧及(710)式,可解得:a2b(EP(i))=2(712)22b+atg(iDT)2 157 則O162。點(diǎn)至P(i)點(diǎn)的距離為:D(i)=(EP(i))2+(FP(i))2=a2b2a2b22+m2(713)b2+a2m2b+a2m2從式(713)可以看出,D(i)的計(jì)算與坐標(biāo)系無(wú)關(guān),也可以說(shuō)與橢圓傾斜角度無(wú)關(guān)。在圖71與圖72中,不論橢圓是正立豎放,還是傾斜任意角度的,D(i)是不變的。因此,P(i)點(diǎn)在坐標(biāo)系XOY中的坐標(biāo)按坐標(biāo)正算公式可得:237。236。XP(i)=XO+D(i)Cos(T+iDT)(714)238。YP(i)=YO+D(i)Sin(T+iDT)編程中,如圖71所示,從G點(diǎn)開(kāi)始依順時(shí)針?lè)较蛴肔INE依次連接相鄰點(diǎn),最后,再回到G點(diǎn),即可繪出所要求的誤差橢圓。計(jì)算P(i)點(diǎn)坐標(biāo)的遞推計(jì)算方法該方法與計(jì)算P(i)點(diǎn)坐標(biāo)的參數(shù)方程法基本相同,只是編程計(jì)算中采用了遞推計(jì)算的方法計(jì)算Cos(t)和Sin(t)。詳見(jiàn)后面的示例程序。三、坐標(biāo)軸的平移、旋轉(zhuǎn)公式(即(75)式、(76)式的推導(dǎo)過(guò)程)如圖73所示,設(shè)P點(diǎn)在坐標(biāo)系162。,YP162。),O162。點(diǎn)X162。O162。Y162。中的坐標(biāo)為(XP在坐標(biāo)系XOY中的坐標(biāo)為(XO,YO);經(jīng)圖73 坐標(biāo)軸的平移、旋轉(zhuǎn)162。,YP162。)平移、旋轉(zhuǎn)后,P點(diǎn)在坐標(biāo)系XOY中的坐標(biāo)為(XP,YP)。根據(jù)求(XP(XP,YP)的公式如下:XP=XO+A1P=X0+O162。PCos(a+f)sCofsO162。PSianSifn=XO+O162。PCoa162。CosaYP162。Sina =XO+XPYP=YO+O162。A1=Y0+O162。PSin(a+f)=YO+O162。PSinaCosf+O162。PCosaSinf158 162。Sina+YP162。Cosa=YO+XP162。,YP162。)(XO,YO)、(XP,YP)根據(jù)a、也可求得,有以下兩種方法。(XP162。、YP162。方法一:根據(jù)上面的兩式聯(lián)立方程組,可解得XP方法二:如圖73所示,設(shè)208。PO162。A1=f1,則可得:162。=O162。PSin(a+f1)XP=O162。PSinaCosf1+O162。PCosaSinf=(YPYO)Sina+(XPXO)Cosa162。=O162。PCos(a+f1)YP=O162。PCosaCosf1O162。PSinaSinf1=(YPYO)Cosa(XPXO)Sina四、正立橫放橢圓的參數(shù)方程與標(biāo)準(zhǔn)方程繪制傾斜任意角度的誤差橢圓時(shí),也可根據(jù)正立橫放橢圓推導(dǎo)出另一套公式進(jìn)行編程。如圖7