1、曲线用直线逼近
任何曲线都可以由无数条直线无限逼近。对于任意给定的误差,总能找到一组直线和曲线的差距小于此误差。完全没有误差的情况是少数,比如直线本身就可以被直线无误差逼近。但是这些无规律的直线不好把控,对实物的分析并无益处。
2、曲线用多项式逼近
足够平滑的曲线可以用多项式逼近。相对于1中的直线组,此时的多项式组已经有规律可循。
3、曲线用三角函数逼近
既然曲线能用多项式函数逼近,那还能用别的函数逼近吗?首先要大胆的假设,任何函数组都可以用来逼近曲线。然后对基本函数逐个分析,指数函数、对数函数、幂函数、三角函数等怎么逼近呢?大胆假设的基础上要理性的分析,那种函数逼近简单呢,对指导生产生活有帮助呢(很多理论是在实践的需求下催生的)。
4、离散傅里叶变换:加权计算相似度
int DFT(int dir,int m, double x1,double y1)
{
long i,k;
double arg;
double cosarg,sinarg;
double x2=NULL , y2=NULL;
x2=malloc(msizeof(double));
y2=malloc(msizeof(double));
if (x2=NULL || y2=NULL)
return (FALSE);
for (i=0;i<m;i++)
{ x2[i]=0;
y2[i]=0;
arg=-dir2.03.(double)i/(double)m;
for(k=0;k<m;k++)
{
cosarg=cos(karg);
sinarg=sin(k*arg);
x2[i]+=(x1[k]*cosarg-y1[k]*sinarg);
y2[i]+=(x1[k]*sinarg+y1[k]*cosarg);
}
}
if (dir==1)
{ for (i=0;i<m;i++)
{ x1[i]=x2[i]/(double)m;
y1[i]=y2[i]/(double)m;
}
}
else
{ for (i=0;i<m;i++)
{ x1[i]=x2[i];
y1[i]=y2[i];
}
}
free (x2);
free (y2);
return (TRUE);
}