正弦拟合c代码以及正弦拟合算法原理
一、正弦拟合基本原理
二、完整c代码
#include
#include
#include
#define n 201
#define pi 3.1416
using namespace std;
double byangtiao(double x[], double y[], int count);//样条插值
double sinnihe(double x[], double y[], int count);//正弦拟合
int gssd(double *a,double *b,double *x,int count,double eps,int iter);//线性方程组求解
double *pu;
double *pv;
int main()
{
double x[8]={21., 59. ,93., 135.824 ,195.16483516483515, 250.54945054945054 ,303.29670329670330 ,340.2197821978020};
double y[8]={3036.1252441406250 ,3036.12 ,3036.10 ,3036.1103515625000 ,3036.10 ,3036.1235351562500, 3036.1252441406250 ,3036.1252441406250};
for(int i=0;i<9;i++)
x[i]=x[i]*pi/180;
byangtiao(x, y, (sizeof x) / (sizeof x[0]));
sinnihe(pu, pv, ((sizeof x) / (sizeof x[0]) - 1)*n);
delete[]pu; delete[]pv;
return 0;
}
double byangtiao(double a[], double b[], int count)
{
double *x; double*y;int i=0;int j=0;
x = new double[count + 2];
y = new double[count + 2];
x[0] = a[0]; y[0] = b[0];
x[count + 1] = a[count - 1]; y[count + 1] = b[count - 1];
for ( i = 0; i eps)&&(piterfr)
fr=t;
}
for(i=0;i