版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 測量平差程序設計</b></p><p><b> 課</b></p><p><b> 程</b></p><p><b> 設</b></p><p><b> 計</b></p>
2、<p><b> 報</b></p><p><b> 告</b></p><p> 課題:水準網(wǎng)嚴密平差及精度評定</p><p><b> 目錄</b></p><p> 一、目錄 ----------------------------1</
3、p><p> 二、序言 ---------------------------- 2</p><p> 三、設計思路 ------------------------ 3</p><p> 四、程序流程圖 ---------------------- 4</p><p> 五、程序及說明 ---------------------- 5&
4、lt;/p><p> 六、計算結果 -----------------------12</p><p> 七、總結 --------------------------- 15</p><p><b> 第二部分 序言</b></p><p> 1、 課程設計的性質、目的和任務</p><p>
5、; 誤差理論與測量平差是一門理論與實踐并重的課程,其課程設計是測量數(shù)據(jù)處理理論學習的一個重要的實踐環(huán)節(jié),它是在我們學習了專業(yè)基礎課“誤差理論與測量平差基礎”課程后進行的一門實踐課程。其目的是增強我們對誤差理論與測量平差基礎理論的理解,牢固掌握測量平差的基本原理和基本公式,熟悉測量數(shù)據(jù)處理的基本技能和計算方法,靈活準確地應用于解決各類數(shù)據(jù)處理的實際問題,并能用所學的計算機理論知識,編制簡單的計算程序。</p><p&
6、gt; 2、誤差理論與測量平差課程和其它課程的聯(lián)系和分工</p><p> 這次課程設計中所用的數(shù)學模型和計算方法是我們在誤差理論與測量平差課程中所學的內容,所使用的C程序語言使我們在計算機基礎課程中所學知識。誤差理論與測量平差課程設計是測量平差和計算機程序設計等課程的綜合實踐與應用,同時也為我們今后步入工作崗位打下了一定基礎。</p><p> 3、 課程設計重點及內容</p
7、><p> 本次課程設計重點是培養(yǎng)我們正確應用公式、綜合分析和解決問題的能力,以及計算機編程能力。另外它要求我們完成1-2個綜合性的結合生產(chǎn)實踐的題目。如目前生產(chǎn)實踐中經(jīng)常用到的水準網(wǎng)嚴密平差及精度評定,邊角網(wǎng)(導線)嚴密平差及精度評定等。此次我所選的課程設計課題是水準網(wǎng)嚴密平差及精度評定,其具體內容如下:</p><p> 根據(jù)題目要求,正確應用平差模型列出觀測值條件方程、誤差方程和法方
8、程;解算法方程,得出平差后的平差值及各待定點的高程平差值;評定各平差值的精度和各高程平差值的精度。</p><p><b> 具體算例為:</b></p><p> 如圖所示水準網(wǎng),有2個已知點,3個未知點,7個測段。各已知數(shù)據(jù)及觀測值見下表</p><p> 已知點高程H1=5.016m , H2=6.016m (2)高差觀測值(
9、m)</p><p> ?。?)求各待定點的高程;3-4點的高差中誤差;3號點、4號點的高程中誤差。</p><p><b> 第三部分 設計思路</b></p><p><b> 一、解題步驟</b></p><p> ?。?)此次設計我所采用的模型為間接平差模型,根據(jù)已知條件我們可知觀測總數(shù)
10、n=7,必要觀測數(shù)t=3(則多余觀測數(shù)r=n-t=4),因此我需先選定三個參數(shù),即3、4、5點的最或然高程X3、X4、X5(X=X0+x,X30=6.375、X40=7.025、X50=6.611;其中X0為參數(shù)的近似值,x為其改正值)為參數(shù)。</p><p> ?。?)列出條件方程,即將每一個觀測量的平差值分別表達成所選參數(shù)的函數(shù),H1+h1=X3、H1+h2=X4、H2+h3=X3、H2+h4=X4、X3+h
11、5=X4、X3+h6=X5、X5+h7=H2;整理后得出誤差方程,v1=x3、v2=x4、v3=x3-4、v4=x4-3、v5=-x3+x4-7、v6=-x3+x5-2、v7=-x5,即v=Bx-l的形式。</p><p> ?。?)定權,令每千米的觀測高差為單位權觀測,即Pi=1/Si,從而可寫出權陣P;根據(jù)誤差方程式又可得其系數(shù)矩陣B和自由項l,并由它們組成法方程NBBx-W=0(其中NBB=BTPB,W=B
12、TPl),法方程的個數(shù)等于所選參數(shù)的個數(shù)。</p><p> (4)解算法方程,求出參數(shù)改正值x并計算參數(shù)的平差值X=X0+x。</p><p> ?。?)由誤差方程計算V,并求出觀測量的平差值。為了檢查平差計算的正確性,將所求的值代入條件方程,看其是否滿足方程。</p><p> ?。?)精度評定,計算單位權中誤差,按照題設要求列出權函數(shù)式,再根據(jù)平差參數(shù)的協(xié)方
13、差陣求出協(xié)因數(shù),最后求出某段高差中誤差,某些點的高程中誤差。</p><p><b> 二、程序設計思想</b></p><p> 考慮到在解題過程中一些計算的復雜性,我們需借助一些技術將計算簡單化,快捷化,因此在課程設計過程中,我們把一些C語言程序設計引入其中;通過一些簡單、明了的程序及子函數(shù)調用,我們就可以很方便快捷的求出用筆算比較繁瑣、費時的矩陣乘積、矩陣的
14、逆(如BTPB、BTPl)等運算。</p><p> 第四部分 程序流程圖</p><p><b> ↓</b></p><p><b> ↓</b></p><p><b> ↓</b></p><p><b> ↓</b&g
15、t;</p><p><b> ↓</b></p><p><b> ↓</b></p><p><b> ↓</b></p><p> 第五部分 程序及說明</p><p> 一、矩陣相乘計算函數(shù)</p><p>
16、#include “stdio.h”</p><p> void Matrix(a,b,m,n,k,c)</p><p> int m,n,k;</p><p> double a[],b[],c[];</p><p><b> {</b></p><p> int i,j,l,u;&l
17、t;/p><p> for(i=0;i<=m-1;i++)</p><p> for(j=0;j<=k-1;j++)</p><p><b> {</b></p><p> u=i*k+j;c[u]=0.0;</p><p> for(l=0;l<=n-1;l++)<
18、/p><p> c[u]=c[u]+a[i*n+l]*b[l*k+j];</p><p><b> }</b></p><p><b> return;</b></p><p><b> }</b></p><p><b> 1.計算BT
19、P</b></p><p><b> main()</b></p><p><b> {</b></p><p><b> int i,j;</b></p><p> static double a[3][7]=BT;</p><p>
20、; static double c[3][7],b[7][7]=P;</p><p> Matrixmul(a,b,3,7,7,c);</p><p> printf(“\n”);</p><p> for(i=0;i<=2;i++)</p><p><b> {</b></p><p
21、> for(j=0;j<=6;j++)</p><p> printf(“%8.4f\t”,c[i][j];</p><p> printf(“\n”);</p><p><b> }</b></p><p> printf(“\n”);</p><p><b>
22、 return0;</b></p><p><b> }</b></p><p> 2.計算BTPB,即NBB</p><p><b> main()</b></p><p><b> {</b></p><p><b>
23、 int i,j;</b></p><p> static double a[3][7]=BTP;</p><p> static double c[3][3],b[7][3]=B;</p><p> Matrixmul(a,b,3,7,3,c);</p><p> printf(“\n”);</p><
24、;p> for(i=0;i<=2;i++)</p><p><b> {</b></p><p> for(j=0;j<=2;j++)</p><p> printf(“%8.4f\t”,c[i][j];</p><p> printf(“\n”);</p><p>&
25、lt;b> }</b></p><p> printf(“\n”);</p><p><b> return0;</b></p><p><b> }</b></p><p> 3.計算BTPl,即W</p><p><b> main
26、()</b></p><p><b> {</b></p><p><b> int i,j;</b></p><p> static double a[3][7]=BTP;</p><p> static double c[3][1],b[7][1]=l;</p>
27、<p> Matrixmul(a,b,3,7,1,c);</p><p> printf(“\n”);</p><p> for(i=0;i<=2;i++)</p><p><b> {</b></p><p> for(j=0;j<=0;j++)</p><p>
28、; printf(“%8.4f\t”,c[i][j];</p><p> printf(“\n”);</p><p><b> }</b></p><p> printf(“\n”);</p><p><b> return0;</b></p><p><b&
29、gt; }</b></p><p> 二、矩陣的逆計算函數(shù)(求NBB-1)</p><p> #include "stdio.h" </p><p> #define M 3 </p><p> void main() </p><p><b> { </b&
30、gt;</p><p> float MAT[M][2*M]; </p><p> float MAT1[M][M]; </p><p><b> float t; </b></p><p> int i,j,k,l; </p><p> /***********************
31、************************/ </p><p> /*對矩陣進行初始化*/ </p><p> for(i=0;i<M;i++) </p><p> for(j=0;j<2*M;j++) </p><p> MAT1[j]='\0'; </p><p> /*
32、對MAT1矩陣賦初值 */ </p><p> for(i=0;i<M;i++) </p><p> for (j=0;j<M;j++) </p><p> scanf("%f",&MAT1[j]); </p><p> /*打印目標矩陣?*/ </p><p> pr
33、intf("原矩陣為:\n"); </p><p> for (i=0;i<M;i++) </p><p><b> { </b></p><p> for (j=0;j<M;j++) </p><p> printf("%13.7f",MAT1[j]);
34、</p><p> printf("\n"); </p><p> } /********************************************/ </p><p> /*對MAT1矩陣進行擴展,MAT1矩陣添加單位陣,由M*M變成2M*2M矩陣 */ </p><p> for(i=0;i<
35、;M;i++) </p><p> for(j=0;j<2*M;j++) </p><p> if (j<M) MAT[j]=MAT1[j]; </p><p> else if (j==M+i) MAT[j]=1; </p><p> else MAT[j]=0; </p><p> /*對M矩
36、陣進行變換,使得前半部分矩陣成為單位陣,則 */ </p><p> /*后半部分矩陣即為所求矩陣逆陣 */ </p><p> for(i=0;i<M;i++) </p><p><b> { </b></p><p> /*對第i行進行歸一化 */ </p><p> fo
37、r (j=0;j<2*M;j++) </p><p> for(k=i+1;k<M;k++) </p><p> MAT[j]=MAT[j]+MAT[k][j]; </p><p><b> t=MAT; </b></p><p> for(j=i;j<2*M;j++) </p>
38、<p> MAT[j]=MAT[j]/t; </p><p> /*對矩陣進行行變換,使得第i 列只有一個元素不為零,且為1*/ </p><p> for(k=0;k<M;k++) </p><p><b> if(k!=i) </b></p><p><b> { </b&g
39、t;</p><p> t=MAT[k]; </p><p> for (l=i;l<2*M;l++) </p><p> MAT[k][l]=MAT[k][l]-MAT[l]*t; </p><p><b> } </b></p><p><b> } </b&g
40、t;</p><p> /*將后半部分矩陣即所求矩陣逆陣存入MAT2矩陣。*/ </p><p> for(i=0;i<M;i++) </p><p><b> { </b></p><p> for(j=0;j<M;j++) </p><p> MAT1[j]=MAT[j+
41、M]; </p><p> printf("\n"); </p><p><b> } </b></p><p> /*********************************************/ </p><p> /*輸出所求的逆陣*/ </p><p&g
42、t; printf("逆陣為:\n"); </p><p> for(i=0;i<M;i++) </p><p><b> { </b></p><p> for(j=0;j<M;j++) </p><p> printf("%8.4f",MAT1[j]);
43、</p><p> printf("\n"); </p><p><b> } </b></p><p><b> }</b></p><p> 4.求NBB-1W,即改正數(shù)x</p><p><b> main()</b>
44、</p><p><b> {</b></p><p><b> int i,j;</b></p><p> static double a[3][3]=NBB-1;</p><p> static double c[3][1],b[3][1]=W;</p><p>
45、 Matrixmul(a,b,3,3,1,c);</p><p> printf(“\n”);</p><p> for(i=0;i<=2;i++)</p><p><b> {</b></p><p> for(j=0;j<=0;j++)</p><p> printf(
46、“%8.4f\t”,c[i][j];</p><p> printf(“\n”);</p><p><b> }</b></p><p> printf(“\n”);</p><p><b> return0;</b></p><p><b> }<
47、/b></p><p><b> 5.計算Bx</b></p><p><b> main()</b></p><p><b> {</b></p><p><b> int i,j;</b></p><p> st
48、atic double a[7][3]=B;</p><p> static double c[7][1],b[3][1]=x;</p><p> Matrixmul(a,b,7,3,1,c);</p><p> printf(“\n”);</p><p> for(i=0;i<=6;i++)</p><p&
49、gt;<b> {</b></p><p> for(j=0;j<=0;j++)</p><p> printf(“%8.4f\t”,c[i][j];</p><p> printf(“\n”);</p><p><b> }</b></p><p> pr
50、intf(“\n”);</p><p><b> return0;</b></p><p><b> }</b></p><p><b> 6.計算VTP</b></p><p><b> main()</b></p><p&g
51、t;<b> {</b></p><p><b> int i,j;</b></p><p> static double a[1][7]=VT;</p><p> static double c[1][7],b[7][7]=P;</p><p> Matrixmul(a,b,1,7,7,
52、c);</p><p> printf(“\n”);</p><p> for(i=0;i<=0;i++)</p><p><b> {</b></p><p> for(j=0;j<=6;j++)</p><p> printf(“%8.4f\t”,c[i][j];<
53、/p><p> printf(“\n”);</p><p><b> }</b></p><p> printf(“\n”);</p><p><b> return0;</b></p><p><b> }</b></p><
54、p><b> 7.計算VTPV</b></p><p><b> main()</b></p><p><b> {</b></p><p><b> int i,j;</b></p><p> static double a[1][7]=
55、VTP;</p><p> static double c[1][1],b[7][1]=V;</p><p> Matrixmul(a,b,1,7,1,c);</p><p> printf(“\n”);</p><p> for(i=0;i<=0;i++)</p><p><b> {<
56、;/b></p><p> for(j=0;j<=0;j++)</p><p> printf(“%8.4f\t”,c[i][j];</p><p> printf(“\n”);</p><p><b> }</b></p><p> printf(“\n”);</p&
57、gt;<p><b> return0;</b></p><p> 注:程序中有下劃線部分在C語言環(huán)境中運行時,需根據(jù)已知條件及所求結果進行替換!</p><p><b> 第六部分 計算結果</b></p><p> 根據(jù)條件方程及定權原則寫出B、l、P及BT</p><p>
58、; B={{1.0,0.0,0.0},</p><p> {0.0,1.0,0.0},</p><p> {1.0,0.0,0.0},</p><p> {0.0,1.0,0.0},</p><p> {-1.0,1.0,0.0},</p><p> {-1.0,0.0,1.0},</p>&
59、lt;p> {0.0,0.0,-1.0}}</p><p><b> l={{0.0},</b></p><p><b> {0.0},</b></p><p><b> {4.0},</b></p><p><b> {3.0},</b>
60、</p><p><b> {7.0},</b></p><p><b> {2.0},</b></p><p><b> {0.0}}</b></p><p> P={{0.9091,0.0,0.0,0.0,0.0,0.0,0.0},</p><p
61、> {0.0,0.5882,0.0,0.0,0.0,0.0,0.0},</p><p> {0.0,0.0,0.4348,0.0,0.0,0.0,0.0},</p><p> {0.0,0.0,0.0,0.3704,0.0,0.0,0.0},</p><p> {0.0,0.0,0.0,0.0,0.4167,0.0,0.0},</p>&
62、lt;p> {0.0,0.0,0.0,0.0,0.0,0.7143,0.0},</p><p> {0.0,0.0,0.0,0.0,0.0,0.0,0.3846}}</p><p> BT={{1.0,0.0,1.0,0.0,-1.0,-1.0,0.0},</p><p> {0.0,1.0,0.0,1.0,1.0,0.0,0.0},</p>
63、;<p> {0.0,0.0,0.0,0.0,0.0,1.0,-1.0}}</p><p> 一、在矩陣相乘計算函數(shù)的程序前提下,進行以下子程序的調用</p><p> 1.替換第1個程序中的BT 、P并運行程序得到BTP </p><p> BTP={{0.9091,0.0,0.4348,0.0,-0.4167,-0.7143,0.0},&l
64、t;/p><p> {0.0,0.5882,0.0,0.374,0.4167,0.0,0.0},</p><p> {0.0,0.0,0.0,0.0,0.0,0.7143,-0.3846}}</p><p> 2.替換第2個程序中的BTP、B并運行程序得到BTPB,即NBB</p><p> NBB={{2.4748,-0.4167,-0
65、.7143},</p><p> {-0.4167,1.3753,0.0},</p><p> {-0.7143,0.0,1.0989}}</p><p> 3.替換第3個程序中的BTP、l并運行程序得到BTPl,即W</p><p> W={{-2.6063},</p><p><b> {4.0
66、281},</b></p><p><b> {1.4286}}</b></p><p> 二、在矩陣的逆計算函數(shù)程序中進行以下操作</p><p> 運行程序,按照提示及以上運算得到的矩陣NBB輸入其元素,運行的結果即為NBB-1 NBB-1={{0.5307,0.1608,0.3450},</p><p
67、> {0.1608,0.7758,0.1045},</p><p> {0.3450,0.1045,1.1342}}</p><p> 三、再次在矩陣相乘計算函數(shù)的程序前提下,進行以下子程序的調用</p><p> 1.替換第4個程序中的NBB-1、W并運行程序得到NBB-1W,即所選參數(shù)的改正數(shù)x</p><p> x={{
68、-0.2426},</p><p><b> {2.8552},</b></p><p><b> {1.1421}}</b></p><p> 2.替換第5個程序中的B、x并運行程序得到Bx</p><p> Bx={{-0.2426},</p><p><b
69、> {2.8552},</b></p><p> {-0.2464},</p><p><b> {2.8552},</b></p><p><b> {3.0978},</b></p><p><b> {1.3847},</b></p>
70、;<p> {-1.1421}}</p><p> 3.根據(jù)V=Bx-l求出各觀測值的改正數(shù)V,并寫出VT,然后替換第6個程序中的VT、P并運行程序得到VTP</p><p> V={{-0.2426},</p><p><b> {2.8552},</b></p><p> {-4.2426},
71、</p><p> {-0.1448},</p><p> {-3.9022},</p><p> {-0.6153},</p><p> {-1.1421}}</p><p> VT={{-0.2426,2.8552,-4.2426,-0.1448,-3.9022,-0.6153,-1.1421}}<
72、/p><p> VTP={{-0.2205,1.6794,-1.8447,-0.0536,1.6260,-0.4395,-0.4393}}</p><p> 4.替換第7個程序中的VTP、V并運行程序得到VTPV</p><p> VTPV=19.7997</p><p> 四、求出各個觀測值平差值并按要求平定精度</p>
73、<p> X3=6.3748 m X4=7.0279 m X5=6.6122 m</p><p> h1=1.3588m h2=2.0119m h3=0.3588m h4=1.0119m h5=0.6531m h6=0.2374m h7=-0.5961m</p><p> 根據(jù)公式可求得單位權中誤差為 2.225mm</p><p&g
74、t; h34= X3- X4 Q34=[1 -1 0] NBB-1[1 -1 0]T=0.9849</p><p> H3=X3 Q34=[1 0 0] NBB-1[1 0 0]T=0.5307</p><p> H4= X4 Q34=[0 1 0] NBB-1[0 1 0]T=0.7758</p><p> 3、4點高差中誤差為 2.208mm<
75、;/p><p> 3號點高程中誤差為 1.621mm</p><p> 4號點高程中誤差為 1.96mm</p><p><b> 第七部分 總結</b></p><p> 通過這次誤差理論與測量平差的課程設計,我又對整本書有了一個更深的理解。其實課程設計就是將我們所學的理論知識應用于實踐的過程,在這一過程中,進一步
76、掌握測量平差的基本原理和基本公式,并熟悉測量數(shù)據(jù)處理的基本技能和計算方法。</p><p> 或許我們已對《誤差理論與測量平差》這本書的理論知識有了一定了解,但將它應用于實踐依然是我們的一個難點,尤其是將這門課程與計算機程序完美地結合。這便要求我們在原有的解題思路中加入C語言程序,并讓它來幫助我們解決矩陣的復雜運算。既然用到了程序,我們就必須保證其運算的簡潔性、正確性,尤其是在編寫過程中要認真檢查,為程序順利運
77、行打下基礎。另外在各個子程序調用過程中,我們要充分考慮其順序性并反復調試,以便得到理想結果。</p><p> 盡管在這次課程設計中遇到了很多困難,但我卻得到了不少收獲,并培養(yǎng)了自己正確應用公式、綜合分析和解決問題的能力,同時也為今后步入社會打下了一定的基礎。另外,我們還要學會綜合利用自身所學的知識,并將它們聯(lián)系起來幫助自己有效地解決實際中的問題。</p><p> 總之,在這次課程設
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 誤差理論與測量平差課程設計--水準網(wǎng)嚴密平差及精度評定
- 誤差理論與測量平差課程設計報告
- 誤差理論與測量平差基礎課程設計報告
- 測量平差課程設計
- 《誤差理論與測量平差基礎》課程試卷及答案
- 測量平差課程設計報告
- 誤差理論與測量平差基礎試卷
- 水準網(wǎng)測量平差軟件設計與開發(fā).pdf
- 測量平差課程設計實習報告
- 誤差理論與測量平差基礎習題集
- 平差課程設計報告
- 中南大學控制網(wǎng)平差課程設計
- 水準網(wǎng)按間接平差算例
- 符合導線嚴密平差計算
- 誤差理論與測量平差基礎習題集1
- 測量平差中模型誤差處理理論.pdf
- 水準網(wǎng)條件平差程序設計-畢業(yè)設計
- 水準網(wǎng)平差軟件快速使用指南
- 畢業(yè)設計-- 水準網(wǎng)條件平差程序設計
- 水準路線 平 差 報 1
評論
0/150
提交評論