在此之前我们再回顾下上一篇文章中的系数求解公式。二次拟合曲线的方程为:
系数行列式为:
另外:
所求系数为:
使用C实现最小二乘法为:
#include
#include
#include
#define DATA_NUM (6)
#define DOUBLE_PRECISION (1e-15)
double x[DATA_NUM]={0,2,4,6,8,10};
double y[DATA_NUM]={0,6,25,42,70,110};
//y = a*x^2 + b*x + c
bool LeastSquares(double *x, double *y, unsigned int data_num, double *a, double *b, double *c) {
double sumx=0,sumx2=0,sumx3=0,sumx4=0,sumy=0,sumxy=0,sumx2y=0;
double D=0;
if(!data_num) return false;
for(int i=0;i
上述在求解行列式值的时候使用的是代数余子式方法求解。即用某一个列与代数余子式相乘。
往期推荐
留言与评论(共有 0 条评论) “” |