已閱讀5頁,還剩24頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
中國礦業(yè)大學(xué)成績:測(cè)繪軟件設(shè)計(jì)與實(shí)現(xiàn)實(shí)驗(yàn)報(bào)告學(xué)號(hào):07093043姓名: 況佳亮 班級(jí):測(cè)繪09-4班 指導(dǎo)教師:王永波學(xué)院:環(huán)境與測(cè)繪學(xué)院 2011年 11 月 12 日實(shí)驗(yàn)一圖的創(chuàng)建、遍歷、及其MST的構(gòu)建實(shí)驗(yàn)?zāi)康?圖的創(chuàng)建 。 基于深度優(yōu)先的圖的遍歷算法的設(shè)計(jì)與實(shí)現(xiàn) 。 基于廣度優(yōu)先的圖的遍歷算法的設(shè)計(jì)與實(shí)現(xiàn) 。 基于Prim算法的最小生成樹的構(gòu)建。 基于Kruskal算法的最小生成樹的構(gòu)建 。實(shí)驗(yàn)過程#include#include” KJL_Queue.h”using namespace std;/定義為prim服務(wù)的輔助結(jié)點(diǎn)struct primnodepublic: char begvex;/開始結(jié)點(diǎn) char endvex;/結(jié)束結(jié)點(diǎn) int lowcost;/中間權(quán)值;class KJL_Graphmtx/圖的鄰接矩陣定義 public:KJL_Graphmtx(int sz=DefaultVertices);/構(gòu)造函數(shù)KJL_Graphmtx()/析構(gòu)函數(shù)delete VerticesList;delete Edge;bool GraphEmpty()/判斷圖是否為空if(numEdges=0)return true;else return false;bool GraphFull()/判斷圖是否為滿if(numVertices=maxVertices|numEdges=maxVertices*(maxVertices-1)/2)return true;else return false;int NumberOfVertices()/返回當(dāng)前頂點(diǎn)數(shù)return numVertices;int NumberOfEdges()/返回當(dāng)前邊數(shù)return numEdges;char getValue(int i)/取頂點(diǎn)i的值,i不合理返回0return i=0&i=numVertices ? VerticesListi : NULL;int getWeight(int v1,int v2)/取邊(v1,v2)上的權(quán)值return v1!=-1&v2!=-1 ? Edgev1v2 : 0;int getFirstNeighbor(int v);/取頂點(diǎn)v的第一個(gè)鄰接頂點(diǎn)int getNextNeighbor(int v,int w);/取v的鄰接頂點(diǎn)w的下一鄰接頂點(diǎn)bool insertVertex(char vertex);/插入頂點(diǎn)vertexbool insertEdge(int v1,int v2,int weight);/插入邊(v1,v2),權(quán)為weightbool removeVertex(int v);/刪去頂點(diǎn)v和所有與它相關(guān)聯(lián)的邊bool removeEdge(int v1,int v2);/在圖中刪去邊(v1,v2)int getVertexPos(char vertex)/給出頂點(diǎn)vertex的位置,如果該頂點(diǎn)不在圖內(nèi)則返回-1for(int i=0;inumVertices;i+)if(VerticesListi=vertex) return i;return -1;int mini();/求圖中所有邊的最小權(quán)值bool input();/輸入函數(shù)bool output();/輸出函數(shù)void kruskal();/kruskal算法void prim();/prim算法protected:int maxVertices;/圖中最大頂點(diǎn)數(shù)int numEdges;/圖中當(dāng)前邊數(shù)int numVertices;/圖中當(dāng)前頂點(diǎn)數(shù)private:char *VerticesList;/頂點(diǎn)表int * *Edge;/鄰接矩陣int visit50;/便利時(shí)的輔助工具primnode closeedge50;/為實(shí)現(xiàn)prim 函數(shù)的輔助結(jié)點(diǎn);KJL_Graphmtx:KJL_Graphmtx(int sz)/構(gòu)造函數(shù)maxVertices=sz;numVertices=0;numEdges=0;int i,j;VerticesList=new charmaxVertices;/創(chuàng)建頂點(diǎn)表數(shù)組Edge=(int * *)new int *maxVertices;/創(chuàng)建鄰接矩陣數(shù)組for(i=0;imaxVertices;i+)Edgei=new intmaxVertices;for(i=0;imaxVertices;i+)/鄰接矩陣初始化for(j=0;jmaxVertices;j+)Edgeij=(i=j)? 0 : maxWeight;int KJL_Graphmtx:getFirstNeighbor(int v)/給出頂點(diǎn)位置v的第一個(gè)鄰接頂點(diǎn)的位置,如果找不到,則函數(shù)返回-1if(v!=-1)for(int i=0;i0&EdgevimaxWeight)return i;return -1;int KJL_Graphmtx:getNextNeighbor(int v,int w)/給出頂點(diǎn)v的某鄰接頂點(diǎn)w的下一個(gè)鄰接頂點(diǎn)的位置,如果找不到,則函數(shù)返回-1if(v!=-1&w!=-1)for(int i=w+1;i0&EdgevimaxWeight) return i;return -1;bool KJL_Graphmtx:insertVertex(char vertex)/插入頂點(diǎn)vertexif(numVertices=maxVertices) return false;/頂點(diǎn)表滿,不插入VerticesListnumVertices+=vertex;return true;bool KJL_Graphmtx:insertEdge(int v1,int v2,int weight)/插入邊(v1,v2),權(quán)為weightif(v1!=-1&v1numVertices&v2!=-1&v2numVertices&Edgev1v2=maxWeight)/插入條件(?)Edgev1v2=Edgev2v1=weight;numEdges+;return true;else return false;bool KJL_Graphmtx:removeVertex(int v)/刪去頂點(diǎn)v和所有與它相關(guān)聯(lián)的邊if(v=numVertices)return false;/v不在圖中,不刪除int i,j;VerticesListv=VerticesListnumVertices-1;/頂點(diǎn)表中刪除該結(jié)點(diǎn)for(i=0;i0&EdgeivmaxWeight) numEdges-;for(i=0;inumVertices;i+)/用最后一列填補(bǔ)第v列Edgeiv=EdgeinumVertices-1;numVertices-;/頂點(diǎn)個(gè)數(shù)減1for(j=0;j-1&v1-1&v20&Edgev1v2maxWeight)Edgev1v2=Edgev2v1=maxWeight;/刪除邊(v1,v2)numEdges-;return true;else return false;bool KJL_Graphmtx:input()int i,j,k,n,m;char e1,e2;int weight;cout請(qǐng)輸入頂點(diǎn)數(shù)和邊數(shù):nm;/輸入頂點(diǎn)數(shù)n和邊數(shù)mcout請(qǐng)輸入頂點(diǎn)的值:endl;for(i=0;ie1;this-insertVertex(e1);i=0;while(im)cout請(qǐng)輸入端點(diǎn)信息:e1e2weight;/輸入端點(diǎn)信息j=this-getVertexPos(e1);/查頂點(diǎn)號(hào)k=this-getVertexPos(e2);if(j=-1|k=-1)cout邊兩端點(diǎn)信息輸入有誤,請(qǐng)重新輸入!insertEdge(j,k,weight);i+;return true;bool KJL_Graphmtx:output()/輸出函數(shù)int i,j,n,m;char e1,e2;int w;n=this-NumberOfVertices();m=this-NumberOfEdges();cout頂點(diǎn)的個(gè)數(shù)為:nendl;cout邊的條數(shù)為:mendl;cout所有邊的信息為:endl;for(i=0;in;i+)for(j=i+1;jgetWeight(i,j);if(w0&wgetValue(i);e2=this-getValue(j);cout(e1,e2,w)endl;return true;int KJL_Graphmtx:mini()/求圖中所有邊的最小權(quán)值,并返回 static int i; int min=0; for (int j=0;jcloseedgej.lowcost) min=j; i=min;cout包括邊(closeedgei.begvex,closeedgei.endvex); return i;/圖的深度優(yōu)先搜索函數(shù)/void DFS(KJL_Graphmtx & G,int v,bool visited);/先聲明函數(shù),后使用void DFS(KJL_Graphmtx & G,char & v)/從頂點(diǎn)v出發(fā),對(duì)圖G進(jìn)行深度優(yōu)先遍歷的主要過程int i,loc,n=G.NumberOfVertices();/取圖中頂點(diǎn)的個(gè)數(shù)bool * visited=new booln;/創(chuàng)建輔助數(shù)組for(i=0;in;i+)/初始化輔助數(shù)組visitedvisitedi=0;loc=G.getVertexPos(v);/取得v結(jié)點(diǎn)在圖中的位置DFS(G,loc,visited);/從頂點(diǎn)0開始深度優(yōu)先搜索delete visited;void DFS(KJL_Graphmtx & G,int v,bool visited)/從頂點(diǎn)v出發(fā),對(duì)圖G進(jìn)行深度優(yōu)先遍歷的子過程/從頂點(diǎn)位置v出發(fā),以深度優(yōu)先的次序訪問所有可讀入的尚未訪問過的頂點(diǎn)。/算法中用到一個(gè)vistied,對(duì)已訪問過的頂點(diǎn)做訪問標(biāo)記。coutG.getValue(v)endl;/訪問頂點(diǎn)vvisitedv=1;/頂點(diǎn)v作訪問標(biāo)記int w=G.getFirstNeighbor(v);/找v的第一個(gè)鄰接頂點(diǎn)wwhile(w!=-1)/若鄰接頂點(diǎn)w存在if(visitedw=0)DFS(G,w,visited);/若w未被訪問,遞歸訪問頂點(diǎn)ww=G.getNextNeighbor(v,w);/取v排在w后的下一個(gè)鄰接頂點(diǎn)/圖的廣度優(yōu)先搜索函數(shù)/void BFS(KJL_Graphmtx G,char v)/從頂點(diǎn)v出發(fā),以廣度優(yōu)先的次序橫向搜索圖,算法中使用了一個(gè)隊(duì)列。int i,w,n=G.NumberOfVertices();/去圖中的定點(diǎn)個(gè)數(shù)bool *visited=new booln;/用來記錄頂點(diǎn)是否被訪問過,被訪問值為1,為被訪問值為0for(i=0;in;i+)/初始化visitedi=0;int loc=G.getVertexPos(v);/取頂點(diǎn)v的位置號(hào)coutG.getValue(loc)endl;/訪問頂點(diǎn)vvisitedloc=1;/做已訪問標(biāo)記KJL_Queue Q;/定義一個(gè)輔助隊(duì)列Q.EnQueue(loc);/頂點(diǎn)進(jìn)隊(duì),實(shí)現(xiàn)分層訪問while(!Q.IsEmpty()/循環(huán)訪問所有結(jié)點(diǎn),判斷隊(duì)列是否為空Q.DeQueue(loc);/從隊(duì)列中退出頂點(diǎn)locw=G.getFirstNeighbor(loc);/找頂點(diǎn)loc的第一個(gè)鄰接點(diǎn)wwhile(w!=-1)/若鄰接點(diǎn)w存在if(visitedw=false)/若未被訪問coutG.getValue(w)endl;/訪問頂點(diǎn)wvisitedw=1;/標(biāo)記w已經(jīng)被訪問Q.EnQueue(w);/頂點(diǎn)w進(jìn)隊(duì)列w=G.getNextNeighbor(loc,w);/找頂點(diǎn)loc的下一個(gè)鄰接頂點(diǎn),重復(fù)檢測(cè)v的所有鄰接頂點(diǎn)delete visited;/kruskal函數(shù)的實(shí)現(xiàn)/void KJL_Graphmtx:kruskal() int a,b,k=0; int min=maxWeight; int Edge12020; for (int m=0;mnumVertices;m+) visitm=m;/每一個(gè)頂點(diǎn)屬于一顆樹 for (int i=0;inumVertices;i+) for(int j=0;jnumVertices;j+)Edge1ij=Edgeij; while (knumVertices-1) min=maxWeight; for (int i=0;inumVertices;i+) for (int j=0;jnumVertices;j+) if (Edge1ijmin) a=i;b=j;min=Edge1ij; if (visita!=visitb) cout包括邊(VerticesLista,VerticesListb); k+; for (int n=0;nnumVertices;n+) if (visitn=visitb)visitn=visita; else Edge1ab=Edgeba=maxWeight; coutendl;/Prim函數(shù)的實(shí)現(xiàn)/void KJL_Graphmtx:prim() char u; cout請(qǐng)輸入起始頂點(diǎn):u; int i=this-getVertexPos(u); visiti=1; for(int j=0;jnumVertices;j+) closeedgej.begvex=u; closeedgej.endvex=VerticesListj; closeedgej.lowcost=Edgeij; for (int m=1;mnumVertices;m+) int n=mini(); visitn=1; closeedgen.lowcost=maxWeight; for (int p=0;pnumVertices;p+) if(!visitp) if(Edgepncloseedgep.lowcost) closeedgep.lowcost=Edgepn;closeedgep.begvex=VerticesListn; 實(shí)驗(yàn)結(jié)果實(shí)驗(yàn)體會(huì)經(jīng)過這次實(shí)驗(yàn)讓我更深刻的理解了C+類的的結(jié)構(gòu),能夠?qū)ΧS數(shù)組的動(dòng)態(tài)開辟空間和釋放空間有了更深刻的理解,對(duì)圖的遍歷及構(gòu)建最小生成樹也有了深刻的體會(huì)??傊谶@次試驗(yàn)中,學(xué)到了許多,也提高了自己的編程能力。實(shí)驗(yàn)二、快速排序算法的實(shí)現(xiàn)實(shí)驗(yàn)?zāi)康?選取表中一個(gè)元素rk(一般選第一個(gè)元素),令x=rk稱為控制關(guān)鍵字,用控制關(guān)鍵字和無序區(qū)中其余元素關(guān)鍵字進(jìn)行比較 設(shè)置兩個(gè)指示器i,j,分別表示線性表第一個(gè)和最后一個(gè)元素位置 將j逐漸減小,逐次比較rj與x,直到出現(xiàn)一個(gè)rjx,然后將ri移動(dòng)到rj位置 重復(fù)上述過程,知道i=j位置,并將x移動(dòng)到rj位置,此時(shí)線性表以x為界分割成兩個(gè)子區(qū)間 實(shí)現(xiàn)快速排序功能實(shí)驗(yàn)過程#includeusing namespace std;const maxSize=100;int partition(int data,int first,int end)/在實(shí)現(xiàn)快速排序函數(shù)時(shí)要用,這是快速排序的一趟算法int i=first;int j=end;int temp;while(ij)while(ij&datai=dataj) /向右掃描j-;if(ij)temp=datai;datai=dataj;dataj=temp;i+;while(ij&datai=dataj) /向左掃描i+;if(ij)temp=datai;datai=dataj;dataj=temp;j-;return i;class KJL_CSortpublic:KJL_CSort();KJL_CSort();public:/ 排序算法的具體實(shí)現(xiàn)void QuickSort();void input();void output();private:/ 成員變量int *data;int first,end;int size;/當(dāng)前數(shù)組大小;KJL_CSort:KJL_CSort()first =0;end=0;size=0;data=new int maxSize;for(int j=0;jmaxSize;j+)dataj=0;KJL_CSort:KJL_CSort()delete data;void KJL_CSort:input()int i;cout請(qǐng)輸入數(shù)組大小:size;end=size-1;cout輸入數(shù)組的值:endl;int m;for(i=0;idatai;void KJL_CSort:output()int i;for(i=0;isize;i+)coutdatai ;coutendl;void KJL_CSort:QuickSort()int pivot;if(firstend)pivot=partition(data,first,end);end=pivot-1;QuickSort();first=pivot+1;QuickSort();first=0;end=size-1;void main()KJL_CSort biao;biao.input();cout快速排序前的順序:endl;biao.output();biao.QuickSort();cout快速排序后的順序:endl;biao.output();實(shí)驗(yàn)結(jié)果實(shí)驗(yàn)體會(huì)快速排序法,是眾多排序方法中的一種,這種方法的優(yōu)點(diǎn)在于它的比較次數(shù)少,每經(jīng)過一趟比較,都可以把一個(gè)無序的數(shù)組分成兩個(gè)部分,左邊的部分全部小于(大于)右邊的部分。在實(shí)現(xiàn)這個(gè)算法過程中,采用的時(shí)遞歸調(diào)用的方式。這讓我對(duì)遞歸又有了更深層次的理解,對(duì)數(shù)組的排序,也不僅僅局限于冒泡,選擇排序,在快速排序的基礎(chǔ)上設(shè)計(jì)了以個(gè)快速排序類。實(shí)驗(yàn)三、矩陣類的設(shè)計(jì)與實(shí)現(xiàn)實(shí)驗(yàn)?zāi)康?按照上述矩陣類的設(shè)計(jì),完成相應(yīng)函數(shù)的編碼 對(duì)于矩陣數(shù)據(jù)的存儲(chǔ),可以選用如下兩種方式來實(shí)現(xiàn) 使用double* _A來存儲(chǔ)矩陣;實(shí)驗(yàn)過程#include#includeusing namespace std;const maxSize=100;#define maxnum 50class KJL_CMatrixpublic:KJL_CMatrix(); / 默認(rèn)構(gòu)造函數(shù)KJL_CMatrix(int row, int column); / 構(gòu)造函數(shù)一KJL_CMatrix(const KJL_CMatrix& m); / 復(fù)制構(gòu)造函數(shù)KJL_CMatrix(); / 默認(rèn)析構(gòu)函數(shù)KJL_CMatrix& operator=(const KJL_CMatrix& m); / 賦值運(yùn)算符bool operator=(const KJL_CMatrix& m); / 比括較運(yùn)算符bool operator!=(const KJL_CMatrix& m); / 比括較運(yùn)算符KJL_CMatrix operator+(const KJL_CMatrix& m); / 加運(yùn)算符KJL_CMatrix operator-(const KJL_CMatrix& m); / 減運(yùn)算符KJL_CMatrix& operator+=(const KJL_CMatrix& m); /+=運(yùn)算符KJL_CMatrix& operator-=(const KJL_CMatrix& m); / -=運(yùn)算符KJL_CMatrix operator-();/ 取負(fù)數(shù)KJL_CMatrix operator*(const KJL_CMatrix& m); / 乘法運(yùn)算符void input();/矩陣輸入void output(); / 輸出該矩陣KJL_CMatrix transpose(); / 矩陣轉(zhuǎn)置/KJL_CMatrix yuzishi(int i,int j);/求矩陣的第(i,j)的余子式double hanglieshi();/求矩陣的行列式KJL_CMatrix bansui();/求矩陣的伴隨矩陣KJL_CMatrix inverse(); / 矩陣求逆(伴隨矩陣除以行列式)/KJL_CMatrix inv();/矩陣求逆(用高斯約當(dāng)法)KJL_CMatrix & change(int k,int l);/交換矩陣的第k行和第l行int max_cloumn(int k);/求矩陣第k列的最大行數(shù)/ 設(shè)置(i,j)的值void setValue(int row, int column, double value) _Arowcolumn = value; double getValue(int row, int column) const return _Arowcolumn; / 設(shè)置行、列的值void setRow(const int row) _row = row; int getRow() const return _row; void setColunm(const int column) _column = column; int getColumn() const return _column; public:/ 成員變量double* _A; / 或用這個(gè)定義vectorvector _A;int _row, /*行*/ _column; / 列;KJL_CMatrix:KJL_CMatrix()/矩陣默認(rèn)構(gòu)造函數(shù)_row=0;_column=0;_A=(double * *) new double maxSize;int i;for(i=0;imaxSize;i+)_Ai=new doublemaxSize;int j;for(i=0;imaxSize;i+)for(j=0;jmaxSize;j+)_Aij=0;KJL_CMatrix:KJL_CMatrix(int row, int column)/構(gòu)造函數(shù)重載 _row=row;_column=column;_A=(double * *) new double maxSize;int i;for(i=0;imaxSize;i+)_Ai=new doublemaxSize;int j;for(i=0;imaxSize;i+)for(j=0;jmaxSize;j+)_Aij=0;KJL_CMatrix:KJL_CMatrix(const KJL_CMatrix& m)/復(fù)制構(gòu)造函數(shù)_row=m._row;_column=m._column;int i,j;_A=(double * *) new double maxSize;for(i=0;imaxSize;i+)_Ai=new doublemaxSize;for(i=0;imaxSize;i+)/初始化for(j=0;jmaxSize;j+)_Aij=0;for(i=0;i_row;i+)for(j=0;j_column;j+)_Aij=m._Aij;KJL_CMatrix:KJL_CMatrix()/析構(gòu)函數(shù)delete _A;void KJL_CMatrix:input()/輸入函數(shù)int i,j;cout請(qǐng)輸入矩陣的行數(shù):_row;cout請(qǐng)輸入矩陣的列數(shù):_column;cout請(qǐng)輸入矩陣:endl;for(i=0;i_row;i+)for(j=0;j_Aij;void KJL_CMatrix:output()/輸出函數(shù)int i,j;for(i=0;i_row;i+)for(j=0;j_column;j+)cout_Aij ;coutendl;KJL_CMatrix & KJL_CMatrix:operator=(const KJL_CMatrix & m)/=函數(shù)重載_row=m._row;_column=m._column;int i,j;for(i=0;i_row;i+)for(j=0;j_column;j+)_Aij=m._Aij;return *this;KJL_CMatrix KJL_CMatrix:operator-()/取負(fù)號(hào)負(fù)號(hào)重載int i,j;for(i=0;i_row;i+)for(j=0;j_column;j+)_Aij=-_Aij;return *this;KJL_CMatrix KJL_CMatrix:operator+(const KJL_CMatrix& m)/加號(hào)函數(shù)重載if(_row!=m._row|_column!=m._column)cerr矩陣不能相加!endl;int i,j;for(i=0;i_row;i+)for(j=0;j_column;j+)_Aij=_Aij+m._Aij;return *this;KJL_CMatrix& KJL_CMatrix:operator+=(const KJL_CMatrix& m)/+=符號(hào)函數(shù)重載if(_row!=m._row|_column!=m._column)cerr矩陣不能+=!endl;int i,j;for(i=0;i_row;i+)for(j=0;j_column;j+)_Aij+=m._Aij;return *this;KJL_CMatrix& KJL_CMatrix:operator-=(const KJL_CMatrix& m)/-=符號(hào)函數(shù)重載if(_row!=m._row|_column!=m._column)cerr矩陣不能-=!endl;int i,j;for(i=0;i_row;i+)for(j=0;j_column;j+)_Aij-=m._Aij;return *this;KJL_CMatrix KJL_CMatrix:operator-(const KJL_CMatrix& m)/減號(hào)函數(shù)重載if(_row!=m._row|_column!=m._column)cerr矩陣不能相減!endl;int i,j;for(i=0;i_row;i+)for(j=0;j_column;j+)_Aij=_Aij-m._Aij;return *this;KJL_CMatrix KJL_CMatrix:operator*(const KJL_CMatrix& m)/乘號(hào)符號(hào)函數(shù)重載KJL_CMatrix temp(_row,m._column);if(_column!=m._row)cerr矩陣不能相乘!endl;int i,j,n;for(i=0;i_row;i+)for(j=0;j_row;j+)for(n=0;n_column;n+)temp._Aij+=_Ain*m._Anj;return temp;bool KJL_CMatrix:operator =(const KJL_CMatrix& m)/=函數(shù)重載if(_row!=m._row|_column!=m._column)return false;int i,j;for(i=0;i_row;i+)for(j=0;j_column;j+)if(_Aij!=m._Aij)return false;return true;bool KJL_CMatrix:operator !=(const KJL_CMatrix& m)/!=函數(shù)重載if(_row!=m._row|_column!=m._column)return true;int i,j;for(i=0;i_row;i+)for(j=0;j_column;tem._column=this-_row;int i,j;for(i=0;i_row;i+)for(j=0;j_row-1;temp._column=this-_column-1;int m,n,k=0,l;for(m=0;m_row;m+)l=0;for(n=0;n_column;n+)if(m!=i&n!=j)temp._Akl=_Amn;if(n!=j) l+;if(m!=i) k+;return temp;double KJL_CMatrix:hanglieshi()/求矩陣的行列式if(_row!=_column)cerr此矩陣無行列式endl;if(_row=1&_column=1)return _A00;elseint i;double sum=0;for(i=0;iyuzishi(0,i).hanglieshi();return sum;KJL_CMatrix KJL_CMatrix:bansui()/求伴隨矩陣KJL_CMatrix temp;temp._column=this-_column;temp._row=this-_row;int i,j;for(i=0;i_row;i+)for(j=0;jyuzishi(i,j).hanglieshi();return temp;KJL_CMatrix KJL_CMatrix:inverse()/矩陣求逆KJL_CMatrix temp;int n;n=this-hanglieshi();temp=this-bansui();int i,j;for(i=0;i_row;i+)for(j=0;j_column;j+)temp._Aij/=n;return temp;KJL_CMatrix & KJL_CMatrix:change(int k,int l)/交換矩陣的第k行和第l行int i;double j;for(i=0;i_column;i+)j=_Aki;_Aki=_Ali;_Ali=j;return *this;int KJL_CMatrix:max_cloumn(int k)/求矩陣第k列中從第k個(gè)元素之后絕對(duì)值最大的行數(shù)int m=k;double max=fabs(_Akk);for(int i=k+1;imax)max=fabs(_Aik);m=i;return m;KJL_CMatrix KJL_CMatrix:inv()/矩陣求逆,通過行列變換int i,j,m;KJL_CMatrix E1;E1=*this;if(this-_row!=this-_column)cerr該矩陣不能求逆endl;elseif(E1.hanglieshi()=0)cerr該矩陣不可逆:endl;else/把矩陣E賦值成單位陣KJL_CMatrix E;/創(chuàng)建一個(gè)和當(dāng)前方陣階數(shù)相同的單位矩陣E._row=E1._row;E._column=E1._column;for(i=0;iE1._row;i+)for(j=0;jE1._row;j+)E._Aij=0;for(i=0;iE1._row;i+)E._Aii=1;/化上三角陣int i,j,hang;for(i=0;iE1._column-1;i+)/hang=E1.max_cloumn(i);if(hang!=i)E1.change(i,hang);E.change(i,hang);double xishu;for
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年滬科版選擇性必修三物理下冊(cè)階段測(cè)試試卷
- 二零二五年度建筑廢棄物資源化利用與木模板木方采購合同3篇
- 二零二五年度新能源汽車推廣應(yīng)用借款合同參考格式4篇
- 2025年度橋梁路面混凝土施工勞務(wù)合同范本4篇
- 2025年度農(nóng)用拖拉機(jī)租賃與農(nóng)田作業(yè)合同3篇
- 2025年度幕墻施工勞務(wù)分包合同施工質(zhì)量監(jiān)督與驗(yàn)收范本4篇
- 二零二五年度苗木新品種研發(fā)與推廣合作合同3篇
- 2025年度旅游地產(chǎn)開發(fā)貸款擔(dān)保合同4篇
- 二零二五年度廠房租賃與智慧城市建設(shè)合作合同范本3篇
- 護(hù)士長合同范本(2篇)
- GB/T 16288-2024塑料制品的標(biāo)志
- 麻風(fēng)病防治知識(shí)課件
- 干部職級(jí)晉升積分制管理辦法
- TSG ZF003-2011《爆破片裝置安全技術(shù)監(jiān)察規(guī)程》
- 護(hù)理服務(wù)在產(chǎn)科中的應(yīng)用課件
- 2024年代理記賬工作總結(jié)6篇
- 電氣工程預(yù)算實(shí)例:清單與計(jì)價(jià)樣本
- VOC廢氣治理工程中電化學(xué)氧化技術(shù)的研究與應(yīng)用
- 煤礦機(jī)電設(shè)備培訓(xùn)課件
- 高考寫作指導(dǎo)議論文標(biāo)準(zhǔn)語段寫作課件32張
- 2021年普通高等學(xué)校招生全國英語統(tǒng)一考試模擬演練八省聯(lián)考解析
評(píng)論
0/150
提交評(píng)論