国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

C#矩陣類(lèi)的實(shí)現(xiàn)及其在測(cè)量平差中的應(yīng)用

2013-09-17 06:53趙顯富
關(guān)鍵詞:運(yùn)算對(duì)象方程

朱 杰 呂 偉 趙顯富

(1南京信息工程大學(xué)遙感學(xué)院,南京 210044)(2中國(guó)石化石油物探技術(shù)研究院,南京 211103)

C#矩陣類(lèi)的實(shí)現(xiàn)及其在測(cè)量平差中的應(yīng)用

朱 杰1呂 偉2趙顯富1

(1南京信息工程大學(xué)遙感學(xué)院,南京 210044)
(2中國(guó)石化石油物探技術(shù)研究院,南京 211103)

摘 要:為了簡(jiǎn)化測(cè)量平差程序,優(yōu)化矩陣在平差程序中的應(yīng)用,采用面向?qū)ο驝#語(yǔ)言編寫(xiě)了矩陣類(lèi).測(cè)量平差的數(shù)學(xué)模型具有某些共性,首先將這些共性歸納提取出來(lái);然后按照字段、屬性和方法對(duì)這些共性進(jìn)行分類(lèi)、設(shè)計(jì);最后利用C#語(yǔ)言強(qiáng)大的類(lèi)庫(kù)支持實(shí)現(xiàn)程序化并最終封裝成一個(gè)矩陣類(lèi),不同的平差方法可從這一矩陣類(lèi)進(jìn)行繼承和擴(kuò)展.用實(shí)例對(duì)該矩陣類(lèi)進(jìn)行了驗(yàn)證,結(jié)果表明:C#矩陣類(lèi)使各種平差模型程序化實(shí)現(xiàn)變得更加簡(jiǎn)易、高效,節(jié)省了平差處理的時(shí)間,提高了計(jì)算結(jié)果的正確性.另一方面,程序代碼的共享和擴(kuò)展也更加方便,對(duì)其他涉及矩陣運(yùn)算的領(lǐng)域和行業(yè)有借鑒和實(shí)用價(jià)值.

關(guān)鍵詞:測(cè)量平差;矩陣類(lèi);C#

矩陣運(yùn)算在許多學(xué)科、工程項(xiàng)目等中都有涉及,成為研究和解決實(shí)際問(wèn)題不可少的數(shù)學(xué)工具,尤其在諸如測(cè)量這種需要處理海量數(shù)據(jù)的學(xué)科中.測(cè)量平差是測(cè)量?jī)?nèi)業(yè)數(shù)據(jù)處理中非常重要的一個(gè)環(huán)節(jié)[1].隨著計(jì)算機(jī)的廣泛應(yīng)用,矩陣運(yùn)算往往是由計(jì)算機(jī)處理完成.用計(jì)算機(jī)技術(shù)實(shí)現(xiàn)平差,既節(jié)省了時(shí)間,提高了效率,又提高了計(jì)算結(jié)果的準(zhǔn)確性.測(cè)量平差方法多樣,但從網(wǎng)形、平差的數(shù)學(xué)模型上都有某些共性,可把這些共性抽象出來(lái),組成一抽象基類(lèi),不同的平差方法可從這一抽象基類(lèi)進(jìn)行繼承和擴(kuò)展,形成一個(gè)完整的測(cè)量平差類(lèi)框架[2],本文將這些共性提取出來(lái)封裝成一個(gè)抽象基類(lèi)(即矩陣類(lèi)),基類(lèi)內(nèi)的方法和屬性可以直接被調(diào)用,這為不同平差方法的實(shí)現(xiàn)打下了基礎(chǔ).C#是專(zhuān)門(mén)針對(duì).NET開(kāi)發(fā)的一種安全的、穩(wěn)定的、簡(jiǎn)單的面向?qū)ο蟮木幊陶Z(yǔ)言.C#綜合了VB簡(jiǎn)單的可視化操作和C++的高運(yùn)行效率,具有強(qiáng)大的操作能力,它能創(chuàng)建并使用強(qiáng)大的新類(lèi)型,將實(shí)體的特性和能力都封裝到一個(gè)獨(dú)立而且自給自足的代碼單元中[3].

1 C#矩陣類(lèi)的實(shí)現(xiàn)

之前人們總是編寫(xiě)許多函數(shù)和過(guò)程來(lái)實(shí)現(xiàn)矩陣的各種運(yùn)算,這給程序代碼的復(fù)用帶來(lái)了一定的困難,程序員經(jīng)常把大量的精力放在重復(fù)調(diào)試上.面向?qū)ο缶帉?xiě)的矩陣類(lèi)不但能存貯數(shù)據(jù),而且還能操作數(shù)據(jù),數(shù)據(jù)和方法被封裝在一起,一切方法和數(shù)據(jù)都在矩陣類(lèi)中自動(dòng)處理,如圖1所示.

圖1 矩陣類(lèi)視圖

為了保證矩陣類(lèi)設(shè)計(jì)的正確性和使用的穩(wěn)定性,在設(shè)計(jì)的方法內(nèi)還加入了錯(cuò)誤報(bào)告提示.用戶(hù)實(shí)例化一個(gè)Matrix(矩陣類(lèi))對(duì)象后,可以實(shí)現(xiàn)以下主要屬性和方法:

1)矩陣對(duì)象的行數(shù)、列數(shù)等基本屬性;

2)矩陣對(duì)象的基本運(yùn)算(加、減、乘等),可實(shí)現(xiàn)多個(gè)矩陣對(duì)象的混合運(yùn)算;

3)矩陣對(duì)象的復(fù)雜運(yùn)算,包括矩陣求逆,矩陣求偽逆等

1.1 矩陣基本屬性的實(shí)現(xiàn)

由于在測(cè)量平差中,數(shù)據(jù)多為浮點(diǎn)數(shù),為提高計(jì)算結(jié)果的精度,定義矩陣數(shù)組為雙精度型(double型)[4].測(cè)量平差計(jì)算過(guò)程中,考慮到誤差方程和法方程計(jì)算基本上都是二維數(shù)組,因此,矩陣類(lèi)中定義的數(shù)組是二維的.其中誤差方程的常數(shù)項(xiàng)L可以將其看作是一個(gè)(n×1)二維數(shù)組.這里主要介紹了矩陣的行、列2個(gè)基本屬性,見(jiàn)表1.

表1 矩陣的基本屬性

屬性按可以訪(fǎng)問(wèn)的類(lèi)型分為3種不同的類(lèi)型:一是讀/寫(xiě)屬性,二是只讀屬性,三是只寫(xiě)屬性.考慮到平差數(shù)據(jù)都是通過(guò)系統(tǒng)讀入的,因此系統(tǒng)將矩陣類(lèi)的行列屬性設(shè)置為只讀.

1.2 構(gòu)造函數(shù)的實(shí)現(xiàn)

構(gòu)造函數(shù)是類(lèi)的一種特殊成員方法,它會(huì)在創(chuàng)建類(lèi)的對(duì)象實(shí)例時(shí)被系統(tǒng)自動(dòng)調(diào)用執(zhí)行,用戶(hù)調(diào)用構(gòu)造函數(shù)來(lái)為類(lèi)對(duì)象分配空間,給它的數(shù)據(jù)成員賦初值,以及其他請(qǐng)求資源的工作.在C#中實(shí)例構(gòu)造函數(shù)又分為默認(rèn)構(gòu)造函數(shù)和非默認(rèn)構(gòu)造函數(shù),默認(rèn)構(gòu)造由系統(tǒng)自動(dòng)提供,它僅負(fù)責(zé)創(chuàng)建對(duì)象,而不做任何初始化工作.非默認(rèn)構(gòu)造函數(shù)在創(chuàng)建對(duì)象的同時(shí)會(huì)初始化類(lèi)中的成員數(shù)據(jù).系統(tǒng)設(shè)計(jì)的矩陣類(lèi)設(shè)計(jì)的是非默認(rèn)構(gòu)造函數(shù):

1)指定行列構(gòu)造函數(shù)

public Matrix(int l,int w),其中 l是矩陣的行數(shù),w是列數(shù).

2)指定值構(gòu)造函數(shù)

public Matrix(double[,]value),其中 value 是二維數(shù)組,將矩陣各元素存儲(chǔ)其中.利用矩陣類(lèi)進(jìn)行平差計(jì)算時(shí)首先要將對(duì)象初始化,以誤差方程中的系數(shù)矩陣A為例,采用二維數(shù)組初始化矩陣對(duì)象,Matrix B=new Matrix(A),式中對(duì)二維數(shù)組A進(jìn)行初始化,此時(shí)A的返回類(lèi)型是Matrix型.

1.3 基本數(shù)學(xué)運(yùn)算的實(shí)現(xiàn)

系統(tǒng)設(shè)計(jì)的矩陣類(lèi)的基本運(yùn)算包括矩陣之間的加、減、乘、數(shù)乘等一些普遍運(yùn)算方法.在進(jìn)行矩陣計(jì)算之前,首先得實(shí)例化2個(gè)矩陣對(duì)象,然后結(jié)合C#中運(yùn)算符重載的功能,2個(gè)矩陣對(duì)象就可以進(jìn)行運(yùn)算了.以開(kāi)發(fā)的矩陣類(lèi)中乘法為例說(shuō)明:

在調(diào)用此方法時(shí),首先要實(shí)例化矩陣對(duì)象,以法方程系數(shù)矩陣的運(yùn)算為例,p為觀(guān)測(cè)值權(quán)數(shù)組,A為誤差方程中的系數(shù)矩陣,AT是誤差方程系數(shù)矩陣轉(zhuǎn)置矩陣(矩陣類(lèi)設(shè)計(jì)的方法中包括矩陣轉(zhuǎn)置,文中不詳細(xì)說(shuō)明),Matrix B=new Matrix(A);Matrix P=new Matrix(p);Matrix BT=new Matrix(AT),代碼中“operator*”是C#中重載運(yùn)算符的標(biāo)志,那么法方程的系數(shù)矩陣即為B*P*BT.

1.4 復(fù)雜運(yùn)算的實(shí)現(xiàn)

平差計(jì)算除了用到一些基本的矩陣運(yùn)算,還需要用到矩陣的一些復(fù)雜算法,如矩陣求逆、求矩陣的滿(mǎn)秩分解、求矩陣偽逆等.這些算法在平差計(jì)算中都會(huì)涉及到,以下主要介紹了矩陣求逆和求矩陣偽逆的實(shí)現(xiàn)方法.

1.4.1 矩陣求逆的實(shí)現(xiàn)

在測(cè)量平差中,不管采取哪一種平差模型(條件平差、間接平差、附有參數(shù)的條件平差、附有限制條件的間接平差),矩陣求逆是核心[5].矩陣求逆的方法很多,根據(jù)矩陣的特點(diǎn)和逆矩陣的定理,有伴隨矩陣法、初等變換法、分塊矩陣法、解方程組法等.系統(tǒng)采用了初等變換法求矩陣逆,如果n階方陣A可逆,作一個(gè)n×2n的矩陣(A|E),在一行上施行初等變換,對(duì)A和E施行相同的初等變換,使A化為單位矩陣E.同時(shí)E化為A-1.實(shí)現(xiàn)方法如下:

1.4.2 矩陣偽逆的實(shí)現(xiàn)

在無(wú)起始數(shù)據(jù)的秩虧網(wǎng)平差中,廣義逆矩陣起著重要的作用.在線(xiàn)性代數(shù)中討論線(xiàn)性方程組的解時(shí),一般均不涉及帶權(quán)的問(wèn)題.但在測(cè)量平差中,觀(guān)測(cè)值向量L或未知數(shù)向量X往往具有先驗(yàn)權(quán)陣P,因此,在討論線(xiàn)性方程組的解時(shí),必須引入加權(quán)廣義逆的概念[6].根據(jù)廣義逆的概念和定理可知[7],偽逆(又稱(chēng)Moore-Penrose逆)有唯一解.秩虧網(wǎng)平差的解法常用的方法有:直接解法,附加條件法和轉(zhuǎn)換法等.另一種是廣義逆法,即通過(guò)求法方程系數(shù)陣N的某些廣義逆,或求誤差方程系數(shù)的偽逆,求出其特解.這里使用偽逆算法來(lái)解決秩虧問(wèn)題[8],這樣求出的未知參數(shù)有唯一解.求偽逆的方法很多,本文設(shè)計(jì)的矩陣類(lèi)采用的是滿(mǎn)秩分解法求偽逆.有m×n復(fù)矩陣A,秩r>0,對(duì)A施行初等行變換,可得到階梯形矩陣,然后將階梯型矩陣轉(zhuǎn)化為行最簡(jiǎn)形矩陣,最后將滿(mǎn)秩分解后的2個(gè)矩陣提取出來(lái).其實(shí)現(xiàn)方法如下:

2 矩陣類(lèi)在平差中的應(yīng)用

水準(zhǔn)網(wǎng)是建立高程控制的一種常規(guī)方法,在取得合格的外業(yè)數(shù)據(jù)后需要對(duì)所建立的水準(zhǔn)網(wǎng)進(jìn)行平差.由于工程規(guī)模、所處地理環(huán)境及工程本身要求的多樣性,要求有適應(yīng)工程自身特點(diǎn)的多種平差模型來(lái)處理不同工程、工程不同建設(shè)階段的觀(guān)測(cè)數(shù)據(jù).當(dāng)前大都測(cè)量平差軟件都是按照經(jīng)典平差模型設(shè)計(jì)實(shí)現(xiàn)的,對(duì)于像普通秩虧、擬穩(wěn)秩虧以及加權(quán)秩虧的平差模型設(shè)計(jì)的較少,平差模型不全面,功能較單一.矩陣類(lèi)的設(shè)計(jì)很大程度上解決了此類(lèi)問(wèn)題,在實(shí)現(xiàn)經(jīng)典平差的基礎(chǔ)上,幾種秩虧平差能夠完全實(shí)現(xiàn),這就大大地促進(jìn)了平差軟件功能的完整性,迎合了工程的多樣性和復(fù)雜性.以矩陣類(lèi)在秩虧自由網(wǎng)平差模型[9]應(yīng)用為例,其實(shí)現(xiàn)過(guò)程如下.

誤差方程及其約束條件:

式中,第一式為誤差方程,第二式為最小二乘條件,P為觀(guān)測(cè)值權(quán)矩陣;第三式為最小范數(shù)條件,PX為未知數(shù)的權(quán),在秩虧自由網(wǎng)平差中PX=I.

法方程及其解為

對(duì)(3)未知數(shù)偽逆求解,即

精度估計(jì):

鑒于以上秩虧自由網(wǎng)平差模型,程序代碼計(jì)算如下:

采用矩陣類(lèi)后,程序會(huì)變得簡(jiǎn)潔、直觀(guān),運(yùn)行效率也會(huì)變高.

3 結(jié)語(yǔ)

通過(guò)采用面對(duì)對(duì)象方法設(shè)計(jì)的矩陣類(lèi),實(shí)現(xiàn)了矩陣運(yùn)算在程序中的運(yùn)用,使程序簡(jiǎn)單直觀(guān)、易于掌握理解.隨著各項(xiàng)工程、科研項(xiàng)目所需要處理的數(shù)據(jù)越來(lái)越多、越來(lái)越復(fù)雜,數(shù)學(xué)方法的使用非常廣泛,開(kāi)發(fā)和實(shí)現(xiàn)的矩陣運(yùn)算類(lèi)應(yīng)用于一些工程項(xiàng)目中,大大地提高了工作效率,推進(jìn)了工作進(jìn)度.因此,矩陣類(lèi)實(shí)用性很大.

[1]陳影,程耀東.基于VC++、ObjectARX的邊角網(wǎng)平差系統(tǒng)的設(shè)計(jì)[J].物探與化探,2007,31(1):60-61.

Chen Ying,Cheng Yaodong.The designing of the measurement adjustment system on VC++and objectARX[J].Geophysical and Geochemical Exploration,2007,31(1):60-61.(in Chinese)

[2]謝智穎,李清泉.面向?qū)ο蟮臏y(cè)量平差軟件設(shè)計(jì)與網(wǎng)絡(luò)化應(yīng)用[J].武漢大學(xué)學(xué)報(bào)信息科學(xué)版,2003,28(5):605-606.

Xie Zhiying,Li Qingquan.Design of object-oriented survey adjustment software and its online service[J].Geomatics and Information Science of Wuhan University,2003,28(5):605-606.(in Chinese)

[3]李愈勝,劉衛(wèi)衛(wèi),汪泳.Programming C#3.0中文版[M].5 版.北京:電子工業(yè)出版社,2009:61-62.

[4]王友昆,余章蓉.測(cè)量平差矩陣類(lèi)C#實(shí)現(xiàn)[J].測(cè)繪工程,2007,16(5):31-33.

Wang Youkun,Yu Zhangrong.Realization of matrix class in survey adjustment by C#[J].Engineering of Surveying and Mapping,2007,16(5):31-33.(in Chinese)

[5]郭小龍,周世健.測(cè)量平差電算程序中矩陣求逆實(shí)現(xiàn)與優(yōu)化[J].測(cè)繪科學(xué),2004,29(2):74-76.

Guo Xiaolong,Zhou Shijian.Matrix inversion realizing and optimizing by computer programing in survey adjustment[J].Science of Surveying and Mapping,2004,29(2):74-76.(in Chinese)

[6]於宗儔,于正林.加權(quán)廣義逆與秩虧網(wǎng)平差[J].武漢測(cè)繪學(xué)院學(xué)報(bào),1985(1):42-52.

Yu Zongchou,Yu Zhenglin.Weighted generalized inverse and rank-defect net adjustment[J].Journal of Wuhan Institute of Surveying and Mapping,1985(1):42-52.(in Chinese)

[7]徐仲,張凱院.矩陣論簡(jiǎn)明教程[M].北京:科學(xué)出版社,2005:141-142.

[8]陶本藻.自由網(wǎng)平差與變形分析[M].武漢:武漢測(cè)繪科技大學(xué)出版社,2000:5-12.

[9]張勤,張菊清,岳東杰.近代測(cè)量數(shù)據(jù)處理與應(yīng)用[M].北京:中國(guó)測(cè)繪出版社,2011:20-21.

Realization of matrix class based on C#and its application in survey adjustment

Zhu Jie1Lü Wei2Zhao Xianfu1

(1School of Remote Sensing,Nanjing University of Information Science and Technology,Nanjing 210044,China)
(2Sinopec Geophsical Research Institute,Nanjing 211103,China)

Abstract:In order to simplify the procedure of the survey adjustment and optimize the application of matrix in adjustment procedure,the matrix class based on C#is programmed.The mathematical model of survey adjustment has some commonalities.First,these similarities are generated and extracted.Then,they are classified and designed according to the fields,properties and methods.Finally,these commonalities are programmed and packaged into a type of matrix using a strong library support of C#language.Different adjustment methods can be inherited and expanded from the matrix class.Experimental results indicate that various procedures of the adjustment model are realized more easily and efficiently by applying the C#matrix class.Thus,the time of processing adjustment is saved and the accuracy of the results is also improved.On the other hand,it is convenient to share and expand the program code and there is referential and practical value in other fields and industries involved in matrix operations.

Key words:survey adjustment;matrix class;C#

中圖分類(lèi)號(hào):P207.2;TP31

A

1001-0505(2013)S2-0406-04

doi:10.3969/j.issn.1001 -0505.2013.S2.040

收稿日期:2013-08-20.

朱杰(1989—),男,碩士生;趙顯富(聯(lián)系人),男,教授,xfu-zhao@163.com.

基金項(xiàng)目:蘇州市科技局基金資助項(xiàng)目(SG201113/20110242).

引文格式:朱杰,呂偉,趙顯富.C#矩陣類(lèi)的實(shí)現(xiàn)及其在測(cè)量平差中的應(yīng)用[J].東南大學(xué)學(xué)報(bào):自然科學(xué)版,2013,43(S2):406-409.[doi:10.3969/j.issn.1001 -0505.2013.S2.040]

猜你喜歡
運(yùn)算對(duì)象方程
方程的再認(rèn)識(shí)
重視運(yùn)算與推理,解決數(shù)列求和題
方程(組)的由來(lái)
涉稅刑事訴訟中的舉證責(zé)任——以納稅人舉證責(zé)任為考察對(duì)象
有趣的運(yùn)算
圓的方程
攻略對(duì)象的心思好難猜
“整式的乘法與因式分解”知識(shí)歸納
基于熵的快速掃描法的FNEA初始對(duì)象的生成方法
區(qū)間對(duì)象族的可鎮(zhèn)定性分析
潞城市| 台前县| 邳州市| 揭阳市| 克什克腾旗| 土默特右旗| 门头沟区| 龙胜| 册亨县| 连云港市| 吴旗县| 昔阳县| 福清市| 罗甸县| 湟源县| 凤城市| 修武县| 商河县| 罗定市| 阳山县| 梅州市| 垫江县| 盐亭县| 成都市| 晋江市| 黎城县| 洱源县| 诸城市| 巴彦淖尔市| 赤峰市| 桂平市| 四子王旗| 万州区| 烟台市| 景东| 乐至县| 固阳县| 东乡县| 吉安县| 革吉县| 阿坝|