高斯拟合.docx
- 文档编号:15961721
- 上传时间:2023-07-09
- 格式:DOCX
- 页数:16
- 大小:118.79KB
高斯拟合.docx
《高斯拟合.docx》由会员分享,可在线阅读,更多相关《高斯拟合.docx(16页珍藏版)》请在冰点文库上搜索。
高斯拟合
高斯拟合(GaussianFitting)即使用形如:
Gi(x)=Ai*exp((x-Bi)^2/Ci^2)
的高斯函数对数据点集进行函数逼近的拟合方法。
其实可以跟多项式拟合类比起来,不同的是多项式拟合是用幂函数系,
而高斯拟合是用高斯函数系。
使用高斯函数来进行拟合,优点在于计算积分十分简单快捷。
这一点
在很多领域都有应用,特别是计算化学。
著名的化学软件Gaussian98
就是建立在高斯基函数拟合的数学基础上的。
高斯拟合算法解决思路
www.MyException.Cn 发布于:
2014-02-2523:
11:
14 浏览:
0次
0
高斯拟合算法
请问,如何用c++实现高斯拟合算法?
------解决方案--------------------
#include
#include
#include
#include
double f(int n,double x){ //f(n,x)用来返回x的n次方
double y=1.0;
if(n==0)return 1.0;
else{
for(int i=0;i return y; } } int xianxingfangchengzu(double **a,int n,double *b,double *p,double dt)//用高斯列主元法来求解法方程组 { int i,j,k,l; double c,t; for(k=1;k<=n;k++) { c=0.0; for(i=k;i<=n;i++) if(fabs(a[i-1][k-1])>fabs(c)) { c=a[i-1][k-1]; l=i; }if(fabs(c)<=dt) return(0); if(l! =k) { for(j=k;j<=n;j++) { t=a[k-1][j-1]; a[k-1][j-1]=a[l-1][j-1]; a[l-1][j-1]=t; } t=b[k-1]; b[k-1]=b[l-1]; b[l-1]=t; } c=1/c; for(j=k+1;j<=n;j++) { a[k-1][j-1]=a[k-1][j-1]*c; for(i=k+1;i<=n;i++) a[i-1][j-1]-=a[i-1][k-1]*a[k-1][j-1]; } b[k-1]*=c; for(i=k+1;i<=n;i++) b[i-1]-=b[k-1]*a[i-1][k-1]; } for(i=n;i>=1;i--) for(j=i+1;j<=n;j++) b[i-1]-=b[j-1]*a[i-1][j-1]; cout.precision(12); for(i=0;i } double** create(int a,int b)//动态生成数组 { double **P=new double *[a]; for(int i=0;i P[i]=new double[b]; return P; } void zuixiaoerchengnihe(double x[],double y[],int n,double a[],int m) { int i,j,k,l; double **A,*B; A=create(m,m); B=new double[m];
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 拟合