#include "iostream" using namespace std; class Matrix { private: double** A; //矩阵A double *b; //向量b public: int size; Matrix(int ); ~Matrix(); friend double* Dooli(Matrix& ); void Input(); void Disp(); }; Matrix::Matrix(int x) { size=x; //为向量b分配空间并初始化为0 b=new double [x]; for(int j=0;j<x;j++) b[j]=0; //为向量A分配空间并初始化为0 A=new double* [x]; for(int i=0;i<x;i++) A[i]=new double [x]; for(int m=0;m<x;m++) for(int n=0;n<x;n++) A[m][n]=0; } Matrix::~Matrix() { cout<<"正在析构中~~~~"<<endl; delete b; for(int i=0;i<size;i++) delete A[i]; delete A; } void Matrix::Disp() { for(int i=0;i<size;i++) { for(int j=0;j<size;j++) cout<<A[i][j]<<" "; cout<<endl; } } void Matrix::Input() { cout<<"请输入A:"<<endl; for(int i=0;i<size;i++) for(int j=0;j<size;j++){ cout<<"第"<<i+1<<"行"<<"第"<<j+1<<"列:"<<endl; cin>>A[i][j]; } cout<<"请输入b:"<<endl; for(int j=0;j<size;j++){ cout<<"第"<<j+1<<"个:"<<endl; cin>>b[j]; } } double* Dooli(Matrix& A) { double *Xn=new double [A.size]; Matrix L(A.size),U(A.size); //分别求得U,L的第一行与第一列 for(int i=0;i<A.size;i++) U.A[0][i]=A.A[0][i]; for(int j=1;j<A.size;j++) L.A[j][0]=A.A[j][0]/U.A[0][0]; //分别求得U,L的第r行,第r列 double temp1=0,temp2=0; for(int r=1;r<A.size;r++){ //U for(int i=r;i<A.size;i++){ for(int k=0;k<r-1;k++) temp1=temp1+L.A[r][k]*U.A[k][i]; U.A[r][i]=A.A[r][i]-temp1; } //L for(int i=r+1;i<A.size;i++){ for(int k=0;k<r-1;k++) temp2=temp2+L.A[i][k]*U.A[k][r]; L.A[i][r]=(A.A[i][r]-temp2)/U.A[r][r]; } } cout<<"计算U得:"<<endl; U.Disp(); cout<<"计算L的:"<<endl; L.Disp(); double *Y=new double [A.size]; Y[0]=A.b[0]; for(int i=1;i<A.size;i++ ){ double temp3=0; for(int k=0;k<i-1;k++) temp3=temp3+L.A[i][k]*Y[k]; Y[i]=A.b[i]-temp3; } Xn[A.size-1]=Y[A.size-1]/U.A[A.size-1][A.size-1]; for(int i=A.size-1;i>=0;i--){ double temp4=0; for(int k=i+1;k<A.size;k++) temp4=temp4+U.A[i][k]*Xn[k]; Xn[i]=(Y[i]-temp4)/U.A[i][i]; } return Xn; } int main() { Matrix B(4); B.Input(); double *X; X=Dooli(B); cout<<"~~~~解得:"<<endl; for(int i=0;i<B.size;i++) cout<<"X["<<i<<"]:"<<X[i]<<" "; cout<<endl<<"呵呵呵呵呵"; return 0; }
标签: 道理特分解法
上传时间: 2018-05-20
上传用户:Aa123456789
移动通信深刻地改变了人们的生活,面向2020年,为了应对未来爆炸式的流量增长、海量的设备连接和不断涌现的新业务新场景,第五代移动通信系统应运而生。2015年6月ITU定义的5G未来移动应用包括以下三大领域:» 增强型移动宽带 (eMBB):人的通信是移动通信需要优先满足的基础需求。未来eMBB将通过更高的带宽和更短的时延继续提升人类的视觉体验;» 大规模机器类通信(mMTC):针对万物互联的垂直行业,IoT产业发展迅速,未来将出现大量的移动通信传感器网络,对接入数量和能效有很高要求;» 高可靠低时延通信(uRLLC):针对特殊垂直行业,例如自动驾驶、远程医疗、智能电网等需要高可靠性+低时延的业务需求。
上传时间: 2022-06-12
上传用户:d1997wayne
用Matlab软件以及雅克比迭代和高斯-赛德尔迭代解方程组Ax=b,分析、比较其结果
上传时间: 2015-04-04
上传用户:123456wh
高斯亚当消去法 GAUSSJ(A[],N,B[])用这个子过程实现高斯亚当消去法
上传时间: 2015-08-29
上传用户:541657925
// 带有列主元的高斯消元法 // 功能: 求解线性方程组 Ax = b // 参数: A - 指向n*n系数矩阵的指针 // b - 常数向量的指针 // n - 方程组的维数 // 返回值:0 - 如果成功。线性方程组的解保存在 b 中 // 1 - 求解失败
上传时间: 2013-12-18
上传用户:xcy122677
用全选主元高斯消去法求解N复系数阶线性方程组AX=B
上传时间: 2015-11-25
上传用户:ggwz258
第一章 有关数论的算法 1.1最大公约数与最小公倍数 1.2有关素数的算法 1.3方程ax+by=c的整数解及应用 1.4 求a^b mod n 第二章 高精度计算 2.1高精度加法 2.2高精度减法 2.3高精度乘法 2.4 高精度除法 练习 第三章 排列与组合 3.1加法原理与乘法原理 练习 3. 2 排列与组合的概念与计算公式 练习 3.3排列与组合的产生算法 练习 第四章 计算几何 4.1 基础知识 4.2 线段的相交判断 4.3寻找凸包算法 练习 第五章 其它数学知识及算法 5.1 鸽巢原理 5.2 容斥原理及应用 5.3 常见递推关系及应用
上传时间: 2016-01-05
上传用户:frank1234
小信号放大器的设计 1. 放大器是射频/微波系统的必不可少的部件。 2. 放大器有低噪声、小信号、高增益、中功率、大功率等。 3. 放大器按工作点分有A、AB、B、C、D…等类型。 4. 放大器指标有:频率范围、动态范围、增益、噪声系数、工作效率、1dB压缩点、三阶交调等。
上传时间: 2016-02-10
上传用户:ggwz258
基于MSP430单片机TimerB的数字->模拟信号转换的设计.利用MSP430定时器B产生PWM,然后再通过RC滤波,得到直流或交流电压信号.此方法成本低廉,可靠性高,易于使用.
上传时间: 2013-11-26
上传用户:lanjisu111
< B语言与方法:实用形式化开发指南>> 本书介绍了B抽象机符号语言以及用于支持形式化规格说明和高集成 系统开发的方挂。首先,介绍了B 语言的发展历史及与其他语言的关系,然 后,从集合、序列等基本数学符号表示到B 语言的结构化机制,再到它所支 持的大型程序设计方法,全面地介细了B 符号语言的描述方法。
上传时间: 2014-11-29
上传用户:康郎