最小二乘法求多项式拟合曲线

本文介绍了如何运用最小二乘法来实现多项式曲线的拟合,通过Crv_fit.h、crv_fit_file.h和crv_fit.cpp三个文件详细阐述了算法的实现过程,并提供了验证结果。
摘要由CSDN通过智能技术生成

Crv_fit.h

//多项式曲线拟合 f(x)=a0+a1x+a2x^2+a3x^3+...anx^n
class Crv_fit {
public :
	Crv_fit(void);
	void clear(void);
	//~Crv_fit(void);

public :
	void init_ary(int m); //m为样本点个数; 初始化数组ary_x, ary_y; 初始化ary_x_cp,之后和ary_x共同为计算ary_A提供数据
	void cal_ary (int n); //n+1矩阵A的阶数; 计算矩阵中元素,分别存放在ary_A, ary_b中
	void init_matA(void); //初始化系数矩阵(对称方阵)mat_A
	void cal_mat (); //求解非齐次线性方程组Ax=b
	
private :
	int M, N; //M为样本个数,N+1为方阵(对角阵)的阶
	double *ary_x, *ary_x_cp, *ary_y; //ary_x存放样本x, ary_y存放样本y
	double *ary_A, *ary_b; //ary_A存放方阵A中元素,ary_b存放矩阵b元素
	double **mat_A; //系数矩阵(对称方阵)
	double *result; //结果数组
};

 crv_fit_file.h

#include <iostream>
#include <math.h>
#include <malloc.h>

#include "crv_fit.h"

Crv_fit::Crv_fit() {
	M=0;	N=0;
	ary_x=NULL; ary_x_cp=NULL;	ary_y&
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值