You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kev/Drawer/SSBase/PlatBase/LinearFitting.h

59 lines
1.4 KiB
C

1 month ago
#pragma once
#ifndef LinearFitting_h__
#define LinearFitting_h__
namespace NChart
{
class AFX_EXT_CLASS CLinearFitting
{
public:
CLinearFitting();
virtual ~CLinearFitting();
//////////////////////////////////////////////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B9B9>
struct Matrix
{
int m,n;//mΪ<6D><CEAA><EFBFBD><EFBFBD>,nΪ<6E><CEAA><EFBFBD><EFBFBD>
double **pm;//ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ά<EFBFBD><CEAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
};
//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>mt<6D><74><EFBFBD><EFBFBD><EFBFBD>þ<EFBFBD><C3BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊm<CEAA><6D><EFBFBD><EFBFBD>Ϊn
void InitMatrix(struct Matrix *mt,int m,int n);
//<2F><>0<EFBFBD><30>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>mt<6D><74><EFBFBD><EFBFBD><EFBFBD>þ<EFBFBD><C3BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊm<CEAA><6D><EFBFBD><EFBFBD>Ϊn
void InitMatrix0(struct Matrix *mt,int m,int n);
//<2F><><EFBFBD>پ<EFBFBD><D9BE><EFBFBD>mt
void DestroyMatrix(struct Matrix *mt);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>mt3=mt1*mt2
//<2F>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31>ʧ<EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD>0
int MatrixMul(Matrix *mt1,Matrix *mt2,Matrix *mt3);
//<2F><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>mt2=T(mt1)
//<2F>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31>ʧ<EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD>0
int MatrixTran(Matrix *mt1,Matrix *mt2);
//////////////////////////////////////////////////////////////////////////////////////////
//Guass<73><73><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2B7BD>Ax=b,a=(A,b)
int Guassl(double **a,double *x,int n);
///////////////////////////////////////////////////////////////////////////////////////////
//<2F><>С<EFBFBD><D0A1><EFBFBD>˷<EFBFBD><CBB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ax=b
int MinMul(Matrix A,Matrix b,double *x);
int MinMul(double **A,double *b,int m,int n,double *x);
//<2F><><EFBFBD><EFBFBD>̨<EFBFBD><CCA8>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>mt
void ConsoleShowMatrix(Matrix *mt);
//<2F><>С<EFBFBD><D0A1><EFBFBD>˷<EFBFBD> x,yΪx,y<><79><EFBFBD>飬num Ϊ<><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>result<6C><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void LinearFitting(double* x, double* y, int num, double* result); //<2F>ֱ<EFBFBD><D6B1><EFBFBD>x,y<><79><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD><CDB8><EFBFBD>
};
}//namespace
#endif // LinearFitting_h__