在已知曲线函数的情况下,对已知数据使用最小二乘法进行参数求解,从而实现曲线拟合的方法最为简便高效。
数据如下,匹配函数为 y = a0+a1*x .
0 | 1 | 2 | 3 | 4 | 5 |
x | 1.5 | 2.5 | 3.5 | 4.5 | 5.5 |
y | 4 | 6 | 8 | 10 | 12 |
高斯消元法的声明文件头
#ifndef GAUSSEQUATION_H
#define GAUSSEQUATION_H
#include <vector>
class GaussEquation
{
public:
GaussEquation();
GaussEquation(int M,double *matrix,double *b);
virtual ~GaussEquation();
bool Resolve(std::vector<double>& xValue);
protected:
private:
double *m_matrixA;
int m_DIM;
double *m_bVal;
int SelectPivotalElement(int col); //find the row number of max value in column i;
bool IsPrecisionZero(double aij);
void SimplePivotalRow(int i,int j);
void SwapRow(int i,int j);
void RowElimination(int i,int j,int k);
};
#endif // GUASSEQUATION_H
高斯消元法的类定义源文件
#include "GaussEquation.h"
#include <cassert>
#include <cmath>
GaussEquation::GaussEquation()
{
//ctor
}
GaussEquation::~GaussEquation()
{