freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

數據結構課程設計報告(編輯修改稿)

2025-02-17 17:22 本頁面
 

【文章內容簡介】 rix CMatrix::operator*(const CMatrixamp。 m){ assert(_column == ())。 CMatrix result(_row, ())。 for (int i = 0。 i _row。 i++) { for (int j = 0。 j ()。 j++) { double value = 。 for (int k = 0。 k getColumn()。 k++) // 這里之前出現了錯誤 value += getValue(i, k) * (k, j)。 (i, j, value)。 } } return result。}CMatrix CMatrix::operator*(const doubleamp。 s){ CMatrix result(_row, _column)。 for (int i = 0。 i _row。 ++i) { for (int j = 0。 j _column。 ++j) { (i, j, getValue(i, j) * s)。 } } return result。}// 單目運算符:取負CMatrix CMatrix::operator(){ CMatrix m(_row, _column)。 for (int i = 0。 i _row。 i++) { for (int j = 0。 j _column。 j++) (i, j, _A[i][j])。 } return m。}// 轉置CMatrix CMatrix::transpose(){ CMatrix m(_column, _row)。 for (int i = 0。 i _column。 i++) { for (int j = 0。 j _row。 j++) { (i, j, getValue(j, i))。 } } return m。}// 矩陣求逆(列主元素法)CMatrix CMatrix::inverse(){ assert(_row == _column)。 CMatrix NXW(_row, _row * 2)。 // 設置NXW的值 for (int i = 0。 i _row。 i++) { for (int j = 0。 j _row * 2。 j++) { if (j _row) (i, j, getValue(i, j))。 else { if (i == (j _row)) (i, j, )。 else (i, j, )。 } } } // 用高斯若當消去法求解平面方程的系數,只要對NTW進行消去即可求得系數 long kindex。 double mk。 // mk為列主元的值,kindex用于存儲列主元所在的位置(行) double aiitem。 // 用于尋找列主元時臨時存儲最大值 for (i = 0。 i _row。 i++) { // 選取列主元 mk = (i, i)。 kindex = 1。 for (int j = i + 1。 j _row。 j++) { if (fabs((j, i)) fabs(mk)) // 需要考慮絕對值得情形 { mk = (j, i)。 kindex = j。 } } // 列主元選取完成 // 交換行 if (kindex != 1) { for (int k = 0。 k _row * 2。 k++) { aiitem = (i, k)。 (i, k, (kindex, k))。 (kindex, k, aiitem)。 } } // 交換行完成 // 消去 for (int k = 0。 k _row * 2。 k++) (i, k, (i, k) / mk)。 // for ( k = 0。 k _row。 k++) { if (k == i) continue。 double tem = (k, i)。 // 因為NXW[k][i]的值隨時變化,所以必須設置臨時變量以保持該值 for (int l = 0。 l _row * 2。 l++) { (k, l, (k, l) tem * (i, l))。 } } } CMatrix result(_row, _row)。 for (i = 0。 i _row。 i++) { for (int j = 0。 j _row。 j++) { (i, j, (i, j + _row))。 } } return result。}:圖類頭文件include vectorpragma warning(disable: 4786)include mappragma warning(disable: 4786)include iostreampragma warning(disable: 4786)include using namespace std。struct SGNode { int key。 // 結點自身標識 mapint, double neighNodes。 // 與當前結點相鄰的結點集合,及其與相鄰結點之間路徑高差值}。class CMyGraph {public: CMyGraph(int numpoints,double **g)。 virtual ~CMyGraph()。public: //深度優(yōu)先遍歷 void DFS(int cloc,vectorCLevelPointamp。 lpvec,bool* visited)。 void DFS(int cloc,int zds,vectorCLevelPointamp。 lpvec)。private: vectorSGNode NodeSet。}。:圖類cpp文件include pragma warning(disable: 4786)include pragma warning(disable: 4786)CMyGraph::CMyGraph(int numPoints,double **g){ for (int i = 0。 i numPoints。 i++) //創(chuàng)建節(jié)點 { SGNode sg。 = i。 (sg)。 } for (i = 0。 i numPoints。 i++) //鄰接點和高差值的輸入 { for (int j = 0。 j numPoints。 j++) { if (g[i][j] != 0) { NodeSet[i].(mapint, double::value_type(j, g[i][j]))。 } } } //初始化完成 }CMyGraph::~CMyGraph(){}void CMyGraph::DFS(int cloc,int zds,vectorCLevelPointamp。 lpvec){ bool* visited。 visited=new bool[zds]。 for(int i=0。 izds。 i++) visited[i]=false。 DFS(cloc, lpvec, visited)。}void CMyGraph::DFS(int cloc,vectorCLevelPointamp。 lpvec,bool* visited) //從頂點開始進行深度優(yōu)先遍歷{ mapint,double::iterator iter1。 for(iter1=NodeSet[cloc].()。 iter1!=NodeSet[cloc].()。 iter1++) { if(visited[(*iter1).first]==false) { visited[(*iter1).first]=true。 /*vectorCLevelPoint::iterator iter3。 //+1,從lpvec中找出該點 for(iter3=()。 iter3!=()。 iter3++) { if((*iter1).first+1==(*iter3)._index) { break。 } }*/ if(lpvec[(*iter1).first]._eleValue==0) //求未知點的高程 { lpvec[(*iter1).first]._eleValue=lpvec[cloc]._eleValue+(*iter1).second。 } DFS((*iter1).first,lpvec,visited)。 } }} 設計二:導線網平差程序的設計與實現一.設計目的立足于《數據結構與測繪軟件開發(fā)》這一課程的課堂教學及實驗課程設計,為著實提高我們基于計算機輔助的方式解決工程實際問題的動手能力,通過本次實習,一方面我們深入了解了課堂所學知識,另一方面,通過實踐掌握測繪行業(yè)軟件設計與開發(fā)的基本方法,深刻掌握矩陣運算,曲線/曲面擬合的數值算法,掌握不同類型的典型測繪軟件的設計方法。使我們初步具備編寫測繪軟件常用算法的能力以及開發(fā)中小規(guī)模測繪專業(yè)軟件的能力。二.設計內容 導線網如圖,觀測了14條邊長和16個轉折角,已知測角精度,測邊精度,已知A,B,C,D,E,F坐標,觀測數據和起算數據如下:對上述導線網進行平差計算。3. 關鍵問題描述 未知點近似坐標計算 根據導線網布設原理,未知點近似坐標通過兩起算點構成起算邊方位角,以及觀測邊長和觀測角從而解得坐標增量△x和△y,通過起算點坐標求得未知點近似坐標。 ①設計觀測角度類和觀測邊長類,使用stl中的容器創(chuàng)建相應動態(tài)數組來保存導線網觀測量的相關信息。 vectorCJk _dxLSet。 //觀測邊長數組 vectorCJkh _dxASet。 //觀測角度數組 ②使用一個while循環(huán)對角度觀測數組_dxASet進行多輪的遍歷。若當前遍歷的角度觀測類對象相應三個點編號的成員變量j,k,h其中j,k點已知(或近似坐標已求解)且h點未知,則對h點進行近似坐標求解。 ③起算邊jk坐標方位角由坐標反算求得,與角度觀測值相加得到j,h邊近似坐標方位角,j,h邊邊長通過點的編號在邊長觀測數組_dxLSet中索引得到。坐標增量通過下式進行求解。 ④各導線點近似坐標都已求解完畢,break跳出循環(huán)。 誤差方程列立按照間接平差原理,誤差方程的列立分為誤差方程系數矩陣列立和自由項列向量的求解。 1)誤差方程系數矩陣B的建立 對角度觀測類對象的動態(tài)數組和邊長觀測類的動態(tài)數組進行遍歷①角度觀測部分:設置變量j,k,h保存角度觀測對象的成員變量_j,_k,_h。用導線點編號在導線點動態(tài)數組中關聯(lián)到相應導線點。對三點是否為起算點進行討論通過下式確定誤差方程系數: 系數輸入到矩陣相應位置。②邊長觀測部分:設置變量j,k保存相應端點編號,對兩點是否為起算點進行討論通過下式確定誤差方程系數: 系數輸入到矩陣相應位置。 2)自由項列向量l求解同樣遍歷角度觀測數組和邊長觀測數組,通過點的編號索引到相應導線點對象,利用近似坐標反算出邊長和兩邊夾角,分別求與觀測值的差值,形成行數為觀測值總數,列數為1的矩陣L。由函數LMatrix()實現。同樣的,L陣和B陣的求解可以再同一個函數中進行,所得另一個矩陣也可通過指針傳遞回去,但是在這里代碼并不復雜,對算法效率要求不高,分了使結構更加清楚,使用兩個函數進行相應功能的實現。邊角網的定權涉及到邊角權的運算,一般以測角中誤差作為單位權中誤差,測距中誤差由: 確定得到邊長觀測中誤差,相應觀測邊的權按權的定義求解: 單位為mm2/″()函數實現。 法方程列立與解算 根據間接平差原理,列立法方程如下: ①B矩陣由平差計算類成員函數BMatrix()實現; ②L陣由平差計算類成員函數LMatrix()實
點擊復制文檔內容
研究報告相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1