📄 matrix.h
字号:
void SvdStep2();
int svd(matrix& U,matrix& S,matrix& V);
int svd(vector& singalvalue);
int rank(int* del_set=0);
void Hermit(vector& x,vector& y,vector& dy);
};
class vector
{
public:
friend class matrix;
friend double Mult(vector& x,matrix& A,vector& y);
friend double ED(vector& x,vector& y);
friend void FFT(vector& Real,vector& Imag,vector& real,vector& imag,int what);
friend void FFT(vector& Real,vector& real,vector& imag);
_declspec(dllexport) vector();
_declspec(dllexport) vector(int n0);
_declspec(dllexport) ~vector();
_declspec(dllexport) vector(const vector &ob);
_declspec(dllexport) void Set(int n0);
_declspec(dllexport) void Destroy();
_declspec(dllexport) void Zero();
_declspec(dllexport) void DelError(double error);
_declspec(dllexport) void Unit(int m,int pos);
_declspec(dllexport) void Init(double first,...);
_declspec(dllexport) void Const(double a);
_declspec(dllexport) void Cut(double a,double b,int m);
_declspec(dllexport) void Cal(pfun pf,vector& t);
_declspec(dllexport) void Random(double a=0,double b=1);
_declspec(dllexport) void RandomGauss(double mu=0,double xigama=1);
_declspec(dllexport) void RandomGamma(double aphe,double landa);
_declspec(dllexport) void RandomBeta(double aphe,double beta);
_declspec(dllexport) void Frequency(vector& ob);
_declspec(dllexport) void RandomInt(int scope);
_declspec(dllexport) int Size();
_declspec(dllexport) double& operator[](int i);
_declspec(dllexport) void operator>>(double *p);
_declspec(dllexport) void operator<<(double *p);
_declspec(dllexport) vector& operator=(vector &ob);
_declspec(dllexport) vector& operator+=(vector &ob);
_declspec(dllexport) vector operator+(vector &ob);
_declspec(dllexport) vector& operator-=(vector &ob);
_declspec(dllexport) vector operator-(vector &ob);
_declspec(dllexport) vector& operator+=(double a);
_declspec(dllexport) vector& operator-=(double a);
_declspec(dllexport) vector operator*(double a);
_declspec(dllexport) vector& operator*=(double a);
_declspec(dllexport) vector& operator/=(double a);
_declspec(dllexport) vector operator*(matrix& ob);
_declspec(dllexport) double operator*(vector& ob);
_declspec(dllexport) void operator>>(matrix& A);
_declspec(dllexport) void operator>>(int m);
_declspec(dllexport) void operator<<(int m);
_declspec(dllexport) double Length();
_declspec(dllexport) void Com(int m);
_declspec(dllexport) double Mean();
_declspec(dllexport) double Var();
_declspec(dllexport) void Invers();
_declspec(dllexport) vector& Link(vector& x,vector& y);
_declspec(dllexport) vector& Link(vector& ob);
_declspec(dllexport) vector& GetLeft(vector& ob,int length);
_declspec(dllexport) vector& GetRight(vector& ob,int length);
_declspec(dllexport) vector& GetMid(vector& ob,int pos,int length);
_declspec(dllexport) void FillIn(vector& y,int pos);
_declspec(dllexport) vector& Plus(vector& x,vector& y);
_declspec(dllexport) vector& Plus(vector& x,double a);
_declspec(dllexport) vector& TimesPlus(vector& ob,double t);
_declspec(dllexport) vector& Sub(vector& x,vector& y);
_declspec(dllexport) vector& Mult(vector& x,matrix& A);
_declspec(dllexport) vector& Mult(matrix& A,vector& x);
_declspec(dllexport) vector& Mult(vector& x,double a);
_declspec(dllexport) vector& GetLine(matrix& ob,int i);
_declspec(dllexport) vector& GetColum(matrix& ob,int j);
_declspec(dllexport) vector& GetDiag(matrix& ob);
_declspec(dllexport) void SetDiag(matrix& ob);
_declspec(dllexport) double AbsMax(int &pos);
_declspec(dllexport) double AbsMax();
_declspec(dllexport) double AbsMin(int &pos);
_declspec(dllexport) double AbsMin();
_declspec(dllexport) double Max(int &pos);
_declspec(dllexport) double Max();
_declspec(dllexport) double Min(int &pos);
_declspec(dllexport) double Min();
_declspec(dllexport) vector& Add(double a);
_declspec(dllexport) vector& Del(int pos);
_declspec(dllexport) vector& Ins(double a,int pos);
_declspec(dllexport) void SmallToBig();
_declspec(dllexport) void BigToSmall();
_declspec(dllexport) int Local(double x);
_declspec(dllexport) double PolyValue(double landa);
_declspec(dllexport) void PolyDeriv(vector& x);
_declspec(dllexport) void PolyIntegral(vector& x);
_declspec(dllexport) void PolyPlus(vector& p1,vector& p2);
_declspec(dllexport) void PolySub(vector& p1,vector& p2);
_declspec(dllexport) void PolyMult(vector& p1,vector& p2);
_declspec(dllexport) void PolyDiv(vector& x,vector& y,vector& r);
_declspec(dllexport) void HPoly(int n);
_declspec(dllexport) void LPoly(int n);
_declspec(dllexport) void T1Poly(int n);
_declspec(dllexport) void T2Poly(int n);
_declspec(dllexport) void PolyRoot(vector& real,vector& imag);
_declspec(dllexport) void PolyCoef(vector& real);
_declspec(dllexport) void PolyCoef(vector& real,vector& imag);
_declspec(dllexport) void PolyMaxMin(double a,double b,double& x_max,double& x_min);
_declspec(dllexport) void Save(char *pathname);
_declspec(dllexport) void Read(char *pathname);
_declspec(dllexport) void Print(int byte=6);
_declspec(dllexport) double LE(matrix& A,vector& b);
_declspec(dllexport) double PLE(matrix& A,vector& b);
_declspec(dllexport) void ThreeDiag(vector& a,vector& b,vector& c,vector& d);
_declspec(dllexport) bool SqrtRoot(matrix& A,vector& b);
_declspec(dllexport) void Gauss(matrix& A,vector& b);
_declspec(dllexport) void GaussSeidel(matrix& A,vector& b);
_declspec(dllexport) int LP(matrix& A,vector& b,vector& C);
_declspec(dllexport) void Grad(pFUN pf,vector& x);
_declspec(dllexport) double DFP(pFUN pf,double stop_error=1E-5);
_declspec(dllexport) double BFGS(pFUN pf,double stop_error=1E-5);
_declspec(dllexport) double FR(pFUN pf,double stop_error=1E-10);
_declspec(dllexport) double Powell(pFUN pf,double stop_error=1E-14);
_declspec(dllexport) double Newton(pFUN pf,double stop_error=1E-5);
_declspec(dllexport) double Hook(pFUN pf,double stop_error=1E-14);
_declspec(dllexport) double Rosen(pFUN pf,double stop_error=1E-10);
_declspec(dllexport) double Simplex(pFUN pf,double stop_error=1E-14);
_declspec(dllexport) double TR(pFUN pf,double stop_error=1E-5);
_declspec(dllexport) double LMF(Fun_group rj,int rnum,double stop_error=1E-8);
_declspec(dllexport) double Lagrange(pFUN pObj,Fun_group g_group,int g_num,Fun_group h_group,int h_num,double punish=10);
_declspec(dllexport) double Lagrange1(pFUN pObj,Fun_group g_group,int g_num,double punish=10);
_declspec(dllexport) double Lagrange2(pFUN pObj,Fun_group h_group,int h_num,double punish=10);
_declspec(dllexport) double SQP(pFUN pObj,Fun_group g_group,int g_num,Fun_group h_group,int h_num);
_declspec(dllexport) double SQP1(pFUN pObj,Fun_group g_group,int g_num);
_declspec(dllexport) double SQP2(pFUN pObj,Fun_group h_group,int h_num);
_declspec(dllexport) double Gauss(pfun_arg pf,double a,double b,int n=1);
_declspec(dllexport) double Romberg(pfun_arg pf,double a,double b,double error=1E-10);
_declspec(dllexport) void RK(vector_map v_map,double t0,vector& x0,double T,double error);
_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 QLB(pfun pf,pfun qf,pfun rf,double a,double b,double y_a,double y_b,int N);
_declspec(dllexport) void SplineValue(matrix& A,vector& x);
_declspec(dllexport) void SplineDeriv(matrix& A,vector& x);
_declspec(dllexport) double PolyOUA(pfun pf,int n);
_declspec(dllexport) double PolyLSA(pfun pf,int n);
_declspec(dllexport) double PolyFit(vector& x,vector& y,int n);
_declspec(dllexport) void LConvolute(vector& x,vector& y);
private:
int n;
double* head;
private:
double d3p2find(pFUN pf,vector& x);
double goldfind(pFUN pf,vector& x);
void DelZero();
bool LPInitPoint(matrix& A,vector& b);
bool QPInitPoint(matrix& A,vector& a,matrix& E,vector& e);
bool QPInitPoint(matrix& A,vector& a);
bool QP(matrix& G,vector& g,matrix& A,vector& a,matrix& E,vector& e,vector& Landa,vector& Mu);
bool QP1(matrix& G,vector& g,matrix& A,vector& a,vector& Mu);
bool QP2(matrix& G,vector& g,matrix& E,vector& e,vector& Landa);
bool CurvatureDirection(matrix& H,matrix& L,vector& d);
bool CheckRound(pFUN pf,vector& x);
void detectI(pFUN pf,vector& begin,vector& end,double step);
void turn_direction(matrix& P,vector& d);
void RK(vector_map v_map,double t0,double T,double error);
void RK(matrix& A,double t0,double T,double error);
void RK(matrix& A,matrix& B,fun_group u,double t0,double T,double error);
void QLB(pfun pf,pfun qf,pfun rf,double a,double b,double y_a,double y_b);
double PolyLSA(pfun pf);
double PolyOUA(pfun pf);
double PolyFit(vector& x0,vector& y0);
static double Romberg_xn(pfun pf,int degree,double error=1E-10);
static double Romberg_qrt(pfun pf,double error=1E-10);
static double Chbixif(pfun pf,int k,double error=1E-10);
static double Gamma(double aphe);
void RK_SUBPRO(vector_map v_map,double t_cur,vector& x_cur,double h_cur,double error,double& t_next);
void RK_SUBPRO(matrix& A,double t_cur,vector& x_cur,double h_cur,double error,double& t_next);
void RK_SUBPRO(matrix& A,matrix& B,fun_group u,double t_cur,vector& x_cur,double h_cur,double error,double& t_next);
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -