#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
jk-b交通信号控制机原理图
上传时间: 2013-07-13
上传用户:eeworm
专辑类-实用电子技术专辑-385册-3.609G jk-b交通信号控制机原理图-1.3M.zip
上传时间: 2013-08-02
上传用户:zhf1234
B/S权限控制的例子
标签: 权限控制
上传时间: 2014-01-11
上传用户:yoleeson
注塑机生产过程的微机控制系统设计本系统设计是通过8255A并行端口A、B传输数据控制12个LED发光二级管的亮灭来模拟控制两台注塑机的生产过程。其中端口A和B分别对应1号和2号注塑机,每一个LED代表一个工序。编程语言采用BORLAND C++语言。
上传时间: 2013-12-25
上传用户:叶山豪
计算机控制技术.了解步进电机控制的基本原理; b.掌握控制步进电机转动的编程方法。
上传时间: 2014-01-20
上传用户:咔乐坞
基于事件驱动的串口通讯控件 消息帧数据格式: 1 0 A B X X 其中 10 为消息标识, AB表示文本长度,L=A*100+B XX为配位字符,任意 控制帧数据格式 0 1 A B M N 其中 01为控制标识, AB为请求标识 MN为附加标识 11表示请求对方接收文件,M表示描述字串中文件名子串的长度 N表示描述字串中文件大小子串的长度 10通知对方放弃传输 00通知文件传输完毕 01请求对方发送数据, MN为10请求发送下一个 MN为00请求重发 数据帧数据格式 0 0 A B M N 其中 00 为数据标识, AB表示数据长度,L=A*100+B MN为校验,M*100+N=A+B
上传时间: 2015-10-06
上传用户:拔丝土豆
PWM控制电机,用PWM控制电机,熟悉定时器Timer A/B的编程方法。用Timer A作为脉宽调制信号产生的定时器.了一个函数F_Pwm(int a,int b) 用于PWM设置,传入两个参数第一个用于频率设置,第二个用于占空比设置。
上传时间: 2015-10-10
上传用户:athjac
交通灯控制,在A和B方向各用数码管显示剩余的时间.
上传时间: 2013-12-06
上传用户:jkhjkh1982
双曲线回归方程 HyperbolaRegress.cs 注意!该模型要求a与b的值要大于0!使用该模型时应注意验证这个限制条件。我在实现模型时未加入任何出错流程控制。X不能为0。 方程模型为 public override double[] buildFormula() 得到系数数组,存放顺序与模型系数相反,即该数组中系数的值依次是b,a。 public override double forecast(double x) 预测函数,根据模型得到预测结果。 public override double computeR2()
标签: HyperbolaRegress 模型 方程 cs
上传时间: 2014-11-30
上传用户:youke111