⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 matrix.h

📁 GPS 定位授时源码
💻 H
📖 第 1 页 / 共 2 页
字号:
//matrix.h

#ifndef MATRIX_H
#define MATRIX_H

class vector;
class matrix;

typedef double(*pfun)(double t);
typedef void (*fun_group)(double t,vector& y);
typedef double(*pfun2)(double t,double x);
typedef double(*pfun_arg)(double t,vector& x);
typedef void (*vector_map)(double t,vector& x,vector& y);
typedef double (*pFUN)(vector& x);
typedef void (*Fun_group)(vector& x,vector& y);
enum POSITION_STS{LT,RT,LB,RB};

_declspec(dllexport) double Gauss(pfun pf,double a,double b,int n=1);
_declspec(dllexport) double Gauss(pfun2 pf,double a,double b,double x,int n=1);
_declspec(dllexport) double Romberg(pfun pf,double a,double b,double error=1E-10);
_declspec(dllexport) double Romberg(pfun2 pf,double a,double b,double x,double error=1E-10);
_declspec(dllexport) double RK(pfun2 pf,double t0,double x0,double T,double error);
_declspec(dllexport) double Deriv1(pfun pf,double x);
_declspec(dllexport) double Deriv2(pfun pf,double x);
_declspec(dllexport) double ZeroPoint(pfun pf,double x0,double error);
_declspec(dllexport) double MinPoint1(pfun pf,double x0,double error=1E-6);
_declspec(dllexport) double MinPoint2(pfun pf,double x0,double error=1E-10);
_declspec(dllexport) void   FFT(vector& Real,vector& Imag,vector& real,vector& imag,int what);
_declspec(dllexport) void   FFT(vector& Real,vector& real,vector& imag);
_declspec(dllexport) double Mult(vector& x,matrix& A,vector& y);
_declspec(dllexport) void Plot(vector& t,vector& x);
_declspec(dllexport) void Plot(pfun pf,double a,double b,int n=100);
_declspec(dllexport) void Plot(pfun pf1,pfun pf2,double a,double b,int n=100);
_declspec(dllexport) void Plot(pfun pf1,pfun pf2,pfun pf3,double a,double b,int n=100);
_declspec(dllexport) double ED(vector& x,vector& y);

class matrix
{ 	 
 public:	 
	 friend class vector;
	 friend double Mult(vector& x,matrix& A,vector& y);
	 friend void Plot(pfun pf,double a,double b,int n);
	 friend void Plot(pfun pf1,pfun pf2,double a,double b,int n);
	 friend void Plot(pfun pf1,pfun pf2,pfun pf3,double a,double b,int n);
	 _declspec(dllexport) matrix();
	 _declspec(dllexport) matrix(int m0,int n0);	 
	 _declspec(dllexport) matrix(const matrix &ob);	 	 
	 _declspec(dllexport) ~matrix();
	 _declspec(dllexport) void Set(int m0,int n0);
	 _declspec(dllexport) void Destroy(void);
	 _declspec(dllexport) int LineSize(void); 
	 _declspec(dllexport) int ColumSize(void);	 
	 _declspec(dllexport) void DelLine(int k);
     _declspec(dllexport) void DelColum(int k);
	 _declspec(dllexport) void AddLine(vector& x);
	 _declspec(dllexport) void AddLine();
	 _declspec(dllexport) void AddColum(vector& x);
	 _declspec(dllexport) void AddColum();
	 _declspec(dllexport) void InsLine(int k,vector& x);
     _declspec(dllexport) void InsLine(int k);
	 _declspec(dllexport) void InsColum(int k,vector& x);	 
	 _declspec(dllexport) void InsColum(int k);	 
	 _declspec(dllexport) void SetColum(vector& x,int j); 
	 _declspec(dllexport) void SetLine(vector& x,int i); 
	 _declspec(dllexport) void LineSum(vector& x);
	 _declspec(dllexport) void ColumSum(vector& x);
	 _declspec(dllexport) void DiagPlus(double a);	 
	 _declspec(dllexport) void DiagPlus(vector& d);
	 _declspec(dllexport) void DiagSub(vector& d);	 
	 _declspec(dllexport) void ExchangeLine(int i,int j);
	 _declspec(dllexport) void ExchangeColum(int i,int j);
	 _declspec(dllexport) void LineTimes(int k,double landa);
	 _declspec(dllexport) void ColumTimes(int k,double landa);
	 _declspec(dllexport) void LineTimesPlus(int i,double landa,int j);
	 _declspec(dllexport) void ColumTimesPlus(int i,double landa,int j);
	 _declspec(dllexport) void TimesPlus(matrix& ob,double landa);
	 _declspec(dllexport) void GetBlock(matrix &A,int p,int q,int *u,int *v);
 	 _declspec(dllexport) void GetBlock(matrix &A,int lnum,int cnum,POSITION_STS where);	  
	 _declspec(dllexport) void GetLineBlock(matrix& A,int top,int bottom);
	 _declspec(dllexport) void GetColumBlock(matrix& A,int left,int right);
	 _declspec(dllexport) void FillIn(matrix &A,POSITION_STS where);     
	 _declspec(dllexport) void FillIn(matrix &A,int left,int top);     
 	 _declspec(dllexport) void RightLink(matrix &A,matrix &B);
	 _declspec(dllexport) void RightLink(matrix &B);
	 _declspec(dllexport) void DownLink(matrix &B);
	 _declspec(dllexport) void DownLink(matrix &A,matrix &B);	 
	 _declspec(dllexport) double AbsMax(int &r,int &s);
	 _declspec(dllexport) double AbsMax();
	 _declspec(dllexport) double AbsMin(int &r,int &s);
	 _declspec(dllexport) double AbsMin();
	 _declspec(dllexport) double Max(int &r,int &s);
	 _declspec(dllexport) double Max();
	 _declspec(dllexport) double Min(int &r,int &s);
	 _declspec(dllexport) double Min();
	 _declspec(dllexport) double Mean();
	 _declspec(dllexport) void CoVar(matrix& B);//B=((x1-mu)*(x1-mu)'+...+(xn-um)*(xn-mu)')/n
	 _declspec(dllexport) double Trace(void);
	 _declspec(dllexport) void Unit();
	 _declspec(dllexport) void Zero();
	 _declspec(dllexport) void Negative();
	 _declspec(dllexport) void DelError(double error);
	 _declspec(dllexport) void Unit(int n);
	 _declspec(dllexport) void Init(double first,...);	 
	 _declspec(dllexport) void Random(double a=0,double b=1);
	 _declspec(dllexport) void RandomGauss(vector& mu,matrix& sigama);
	 _declspec(dllexport) void RandomInt(int scope);
	 _declspec(dllexport) matrix& Plus(matrix &A,matrix &B,bool FirstTurn=0,bool SecondTurn=0);
	 _declspec(dllexport) matrix& Sub(matrix &A,matrix &B,bool FirstTurn=0,bool SecondTurn=0);     
     _declspec(dllexport) matrix& Mult(matrix &A,matrix &B,bool FirstTurn=0,bool SecondTurn=0);//////need modify
	 _declspec(dllexport) matrix& Mult(matrix &A,double landa,bool Turn=0);
	 _declspec(dllexport) matrix& Mult(vector& x,vector& y);	 	 
	 _declspec(dllexport) matrix& Turn(void);
	 _declspec(dllexport) matrix& Turn(matrix &ob);	 
	 _declspec(dllexport) void MatrixPoly(vector& p,matrix& A,bool duicheng=0);	 
	 _declspec(dllexport) double Det();	 	 
	 _declspec(dllexport) int Rank(void);
	 _declspec(dllexport) int Rang(matrix& B);
	 _declspec(dllexport) int Null(matrix& N);
	 _declspec(dllexport) bool Invers(matrix &A);	 
	 _declspec(dllexport) void PInvers(matrix& A);
	 _declspec(dllexport) bool Cholesky1(matrix& L,vector& d);
	 _declspec(dllexport) void Cholesky2(matrix& L,vector& d);
	 _declspec(dllexport) void QR(matrix &Q,matrix &R);//A=QR	 
	 _declspec(dllexport) void Eig(vector& real,vector& imag);	 
	 _declspec(dllexport) double Eig(double landa,vector& ksai);	 
	 _declspec(dllexport) double Eig(double a,double b,vector& real,vector& imag);
	 _declspec(dllexport) void Eig(vector& root,matrix& Q);//Q'AQ=diag(root[1]...root[n])
	 _declspec(dllexport) void Eig(vector& root);	 	 	 
	 _declspec(dllexport) int SVD(vector& singalvalue);
	 _declspec(dllexport) int SVD(matrix& U,matrix& S,matrix& V);//U'AV=S	 
	 _declspec(dllexport) double Norm1(void);	 
	 _declspec(dllexport) double NormInf(void);	
	 _declspec(dllexport) double Norm2(void);
	 _declspec(dllexport) double Cond(void);	 
	 _declspec(dllexport) void RK(matrix& A,double t0,vector& x0,double T,double error);	 
	 _declspec(dllexport) void RK(matrix& A,matrix& B,fun_group u,double t0,vector& x0,double T,double error);	 
	 _declspec(dllexport) void RK(pfun2 pf,double t0,double x0,double T,double error);
	 _declspec(dllexport) void RK(vector_map v_map,double t0,vector& x0,double T,double error);	 
	 _declspec(dllexport) void Hessain(pFUN pf,vector& x);	 	 
	 _declspec(dllexport) void Jacobi(Fun_group fj,int mm,vector& x);
	 _declspec(dllexport) void Exp(matrix& A,double t);
	 _declspec(dllexport) void Save(char *pathname);
	 _declspec(dllexport) void Read(char *pathname);	 
	 _declspec(dllexport) void Print(int byte=6);
	 _declspec(dllexport) void Plot();
	 _declspec(dllexport) void SplineBuild(vector& x0,vector& y0);	 
	 _declspec(dllexport) double SplineValue(double x);
	 _declspec(dllexport) void SplineValue(vector& xx,vector& yy);
	 _declspec(dllexport) double SplineDeriv(double x);
	 _declspec(dllexport) void SplineDeriv(vector& xx,vector& yy);
	 _declspec(dllexport) double SplineIntegral(double x);
	 _declspec(dllexport) double& operator()(int i,int j);	 
	 _declspec(dllexport) matrix& operator=(matrix& ob);	 	
	 _declspec(dllexport) matrix& operator+=(matrix &ob);	 
	 _declspec(dllexport) matrix& operator-=(matrix &ob);	 
	 _declspec(dllexport) matrix& operator+=(double a);	 
	 _declspec(dllexport) matrix& operator*=(matrix &ob);
  	 _declspec(dllexport) matrix& operator*=(double a);
	 _declspec(dllexport) matrix& operator/=(double a);
	 _declspec(dllexport) void    operator>>(vector& x); 
	 _declspec(dllexport) void    operator>>(double *p);
 	 _declspec(dllexport) void    operator<<(double *p);
     _declspec(dllexport) matrix  operator*(matrix& ob); 	 
	 _declspec(dllexport) matrix  operator+(matrix& ob);
	 _declspec(dllexport) matrix  operator-(matrix& ob);
	 _declspec(dllexport) vector  operator*(vector& ob); 	  	 
 private:
	 int m,n;
	 double* *start;  	 
 private:	 
	 void Hessenberg(matrix& Q);	
	 void Hessenberg(void);         
     void DoubleMove();             
	 void TQR(matrix& Q,int N,int tline);      	                        
	 void TQR(); 	                           	                           	 
	 void SvdStep1(matrix& P,matrix& Q); 
	 void SvdStep1();	   
	 void SvdStep2(matrix& P,matrix& Q,int pos,int p,int q); 	 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -