|
|
|
|
|
#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__
|