ImageVerifierCode 换一换
格式:DOCX , 页数:25 ,大小:42.83KB ,
资源ID:25424870      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/25424870.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(水准网平差c++代码.docx)为本站会员(b****9)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

水准网平差c++代码.docx

1、水准网平差c+代码水准网平差c+代码水准平差网结果#include#include#include#include#define max 50Using namespace std;Class CMatrixpublic:CMatrix()row=0; column=0; / 默构造函数认认认认认CMatrix(int i, int j)row=i;column=j; / 构造函数一CMatrix(constCMatrix& m); / 认制构造函数CMatrix(void)/*cout认认认认认认认认认认认使用,矩所占空以放:endl;*/ / 默析构函数认认认认认CMatrix& oper

2、ator=(constCMatrix& m); / 认认运算符bool operator=(constCMatrix& m); / 比括运算符认认认认bool operator!=(constCMatrix& m); / 比括运算符认认认认CMatrix operator+(constCMatrix& m); / 加运算符CMatrix operator-(constCMatrix& m); / 减运算符CMatrix& operator+=(constCMatrix& m); / 自加运算符CMatrix& operator-=(constCMatrix& m); / 自减运算符CMatri

3、x operator-();/ 取数认认CMatrix& operator*(constCMatrix& m); / 乘法运算符void input(); /认认入矩void outputMatrix(); / 认认认认出矩void setValue(int row, int column, double value) Arow-1column-1 = value; / 认置(i,j)的认double getValue(int row, int column) const return Arow-1column-1; / 认认置行、列的voidsetRow(constint i) row =

4、i; intgetRow() const return row; voidsetColunm(constint i) column = i; intgetColumn() const return column; CMatrix& change(int i, int j);/交矩的行认认认认认CMatrix& transpose(); / 矩置认认认CMatrix& inverse(); / 矩求逆认认认void find(int& f)const;/ 判断矩是否可用于迭代求解认认认认认认认认认认认认friend void jocabi(constCMatrix& a) ; /迭代求解void

5、 lzys(); /列主元素法求解void solve(); /可逆性矩求解认认认认认认void qxnh(); /曲合认认认private:/ 成量认认认double Amaxmax;int row;/ 行int column;/ 列;void CMatrix:input() /认 入 cout认认认认认认认始入矩:endl;int i, j;double z;for(i=0;irow;i+) cout认认入第i+1行的:认认endl;for(j=0;jz;Aij=z;coutendl;CMatrix:CMatrix(constCMatrix& m) / 认制构造函数 int i, j;fo

6、r(i=0;im.row;i+)for(j=0;jAij=m.Aij;CMatrix&CMatrix:operator=(constCMatrix& m) / 认认运算符 inti,j;for(i=0;irow;i+)for(j=0;jcolumn;j+)Aij=m.Aij;return *this;boolCMatrix:operator =(constCMatrix& m) / 比括运算符认认认认 inti,j,k;for(i=0;im.row;i+) for(j=0;jAij=m.Aij) k=1;else k=0;if(k=1) return true;else return fals

7、e;boolCMatrix:operator !=(constCMatrix& m) / 比括运算符认认认认 inti,j,k;for(i=0;im.row;i+) for(j=0;jAij=m.Aij) k=1;else k=0;if(k=0) return true;else return false;CMatrixCMatrix:operator+(constCMatrix& m)/ 加运算符 inti,j;if(this-row=m.row)&(this-column=m.column) for(i=0;im.row;i+)for(j=0;jAij+=m.Aij; else cout此

8、两矩不能相加,:认认认认认认认认认认row=m.row)&(this-column=m.column) for(i=0;im.row;i+)for(j=0;jAij-=m.Aij; else cout此两矩不能相加,:认认认认认认认认认认endl; return *this;CMatrix&CMatrix:operator+=(constCMatrix& m) /自加运算符 inti,j;for(i=0;im.row;i+)for(j=0;jAij=2*m.Aij;return *this;CMatrix&CMatrix:operator-=(constCMatrix& m) /自减运算符 i

9、nti,j;for(i=0;im.row;i+)for(j=0;jAij=m.Aij-m.Aij;return *this;voidCMatrix:find(int& f)const int i;for(i=0;irow;i+)if(this-Aii!=0) f=1;else f=0;CMatrixCMatrix:operator-() / 取数认认 inti,j;for(i=0;irow;i+)for(j=0;jcolumn;j+) this-Aij=-this-Aij;return *this;CMatrix&CMatrix:operator*(constCMatrix& m) / 乘法运

10、算符 inti,j,t;CMatrix n;if(this-column=m.row) for(i=0;irow;i+)for(j=0;jm.column;j+)double sum=0.0;for(t=0;tAit*m.Atj;n.Aij=sum;else cerr此两矩不能相乘,:认认认认认认认认认认endl; exit(1);return n;void CMatrix:outputMatrix()/ 认认认认出矩 inti,j;for(i=1;i=row;i+) for(j=1;j=column;j+)coutAi-1j-1 ;coutcolumn,this-row);for(i=0;i

11、row;i+)for(j=0;jcolumn;j+) m.Aji=this-Aij;return m;void jocabi(constCMatrix& a) /高斯迭代求解 int f=1;a.find(f);if(f=0) cerr认认认认认认认认认认认认矩不足迭代求解条件:endl; exit(1); elseCMatrixx,w;x.setColunm(1);x.setRow(a.getColumn();w.setColunm(1);w.setRow(a.getColumn();int i;double z;for(i=1;i=x.row;i+) cout认认认认认入等式右的第iz;w

12、.Ai-10=z;for(i=1;i=x.row;i+) cout认认入Xiz;x.setValue(i, 1, z);i=1;while(i=20) int j, k;for(j=1;j=x.row;j+) double sum=0.0;for(k=1;kj;k+)sum=sum-(a.Aj-1k-1)*(x.Ak-10);for(k=j+1;k=x.row;k+)sum=sum-(a.Aj-1k-1)*(x.Ak-10);sum+=w.Aj-10;x.Aj-10=sum/a.Aj-1j-1;i+;for(i=1;i=x.row;i+)coutXi = x.Ai-100.0) return

13、a;else return -a;CMatrix&CMatrix:change(int i, int j)/交矩的行认认认认认 int k;double z;for(k=1;kcolumn;k+)z=Ai-1k-1;Ai-1k-1=Aj-1k-1;Aj-1k-1=z;return *this;void CMatrix:lzys() /列主元素法求解 CMatrixx,w;x.setColunm(1);x.setRow(getColumn();w.setColunm(1);w.setRow(getColumn();int i;double z;for(i=0;irow;i+)for(int j=

14、0;jrow; j+)w.Aij=0.0;for(i=1;i=x.row;i+)x.setValue(i, 1, 0.0);for(i=1;i=x.row;i+) cout认认认认认入等式右的第iz;w.Ai-10=z;i=0;while(ix.row-1) intj,t,h=i;for(j=i;jx.row-1;j+)if(jdz(Aji)change(i+1,h+1);w.change(i+1,1);for(j=i+1;jrow;j+) double k;k=Aji/Aii;for(t=i;tArow-1column-1=0)cerr此矩的方程有无解:认认认认认认认认认认认认0) int

15、j, t;for(j=i-1;j=0;j-) double k;k=Aji/Aii;for(t=i;tj;t-) Ajt=Ajt-k*Ait; w.Aj0=w.Aj0-k*w.Ai0;i-; int j;for(j=0;jAjj;for(i=1;i=x.row;i+)coutXi = x.Ai-10row!=this-column) cerr认认认认认认认认认认矩不符合求逆条件:getRow();w.setRow(getColumn();int i;for(i=0;irow;i+)for(int j=0;jrow; j+)w.Aij=0.0;w.Aii=1;i=0;while(icolumn-

16、1) intj,t,h=i;for(j=i;jrow-1;j+)if(jdz(Aji)change(i+1,h+1);w.change(i+1,h+1);for(j=i+1;jrow;j+) double k;k=Aji/Aii;for(t=i;tArow-1column-1=0)cerr此矩求逆不成功,其所的方程有无解:认认认认认认认认认认认认认认认认认认认认0) int j, t;for(j=i-1;j=0;j-) double k;k=Aji/Aii;for(t=i;tj;t-) Ajt=Ajt-k*Ait; for(t=column-1;t=0;t-)w.Ajt=w.Ajt-k*w.A

17、it;i-; intj,k;for(j=0;jrow;j+)for(k=0;kAjj;this-Ajj=this-Ajj/this-Ajj;return w;void CMatrix:solve() /可逆性矩求解认认认认认认 CMatrixx,w,c;x.setColunm(1);x.setRow(getColumn();w.setColunm(1);w.setRow(getColumn();c.setColunm(getColumn();c.setRow(getRow();int i;double z;for(i=1;i=x.row;i+) cout认认认认认入等式右的第iz;w.Ai-1

18、0=z;c.operator=(this-inverse();x.operator=(c.operator *(w);cout求解果:认认认endl;for(i=1;i=x.row;i+)coutXi = x.Ai-10endl;void CMatrix:qxnh() /曲合认认认cout用矩曲合:认认认认认认endl;int i, j,k,t;double x, y;couti;CMatrix a(i,1), g(i,i) , w(i,1),c(i,i),q(i,i),p(i,i);for(j=1;j=i;j+) cout认认入第jxy;w.Aj-10=y;g.Aj-10=1.0;for(k

19、=1;ki;k+) g.setValue(j,k+1,1.0);for(t=1;t=k;t+)g.Aj-1k*=x; c=g.transpose();q=c*g;p=q.inverse();w=c*w;a=p*w;coutY=a.A00;for(j=1;ji;j+) cout+(a.Aj0);for(k=0;kj;k+)cout*x; coutendl;cout 1 .求取其它点坐认 0. 退出 endl;while(1) coutk;switch(k) case 1: double x, y,sum;coutx;y=a.A00;for(j=1;ji;j+)sum=a.Aj0;for(k=0;

20、kj;k+)sum*=x;y+=sum;cout认认认坐:y=yendl;break;case 0: cerr认认使用:endl; exit(1);break;default: cout认认认认认认认认有,:lpVeci-1.eleValue; /认认得高程long getindex(int i)return lpVeci-1.index; /返回高程点号认认void seteleValue(int i, double value)lpVeci-1.eleValue+=value; /修改高程认void setdv(inti,double value)this-lpVeci-1.dv=valu

21、e; /修改改正数double getdv(int i)return lpVeci-1.dv; /返回改正数friend void xishu(CMatrix& B, CMatrix&X,CElevationNet A); /求取系数矩和未知点高程矩认认认认认认认认认friend void quanzhen(CMatrix& Q, CElevationNet A); /求取认认friend void l_zhen( CMatrix& l ,CMatrix& L, CElevationNet A); /求取认认认L矩和认认l认private:/ 成量认认认intnumElvDif;/ 高差数认认intnumPoints;/ 控制网中点的数目认认认intnumKnPoint;/控制网中已知点的数目CElvDifedVecmax

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1