标题:求助拟合曲线的多项式拟合函数
只看楼主
ting8898
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2007-9-20
 问题点数:0 回复次数:6 
求助拟合曲线的多项式拟合函数


我这里有一个拟合函数,不过得把x转换成对称坐标,有哪个高手能帮我改改这个程序,或者给我一个不是对称坐标也能用的拟合函数!
函数如下:
void iapcir(double x[],double y[],int n,double a[],int m)
{
int i,j,k;
double z,p,c,g,q,d1,d2,s[20],t[20],ba[20],dt[3];
for(i=0;i<=m-1;i++)
a[i]=0.0;
if(m>n) n=m;
if(m>20) m=20;
z=0.0;
for(i=0;i<=n-1;i++) z=z+x[i]/(1.0*n);
ba[0]=1.0;d1=1.0*n;p=0.0;c=0.0;
for(i=0;i<=n-1;i++)
{ p=p+(x[i]-z);c=c+y[i];}
c=c/d1;p=p/d1;
a[0]=c*ba[0];
if(m>1)
{ t[1]=1.0;t[0]=-p;
d2=0.0;c=0.0;g=0.0;
for(i=0;i<=n-1;i++)
{q=x[i]-z-p;d2=d2+q*q;
c=c+y[i]*q;
g=g+(x[i]-z)*q*q;
}
c=c/d2;p=g/d2;q=d2/d1;
d1=d2;
a[1]=c*t[1];a[0]=c*t[0]+a[0];
}
for(j=2;j<=m-1;j++)
{ s[j]=t[j-1];
s[j-1]=-p*t[j-1]+t[j-2];
if(j>=3)
for(k=j-2;k>=1;k--)
s[k]=-p*t[k]+t[k-1]-q*ba[k];
s[0]=-p*t[0]-q*ba[0];
d2=0.0;c=0.0;g=0.0;
for(i=0;i<=n-1;i++)
{ q=s[j];
for(k=j-1;k>=0;k--)
q=q*(x[i]-z)+s[k];
d2=d2+q*q;c=c+y[i]*q;
g=g+(x[i]-z)*q*q;
}
c=c/d2;p=g/d2;q=d2/d1;
d1=d2;
a[j]=c*s[j];t[j]=s[j];
for(k=j-1;k>=0;k--)
{ a[k]=c*s[k]+a[k];
ba[k]=t[k];t[k]=s[k];
}
}
dt[0]=0.0;dt[1]=0.0;dt[2]=0.0;
for(i=0;i<=n-1;i++)
{ q=a[m-1];
for(k=m-2;k>=0;k--)
q=a[k]+q*(x[i]-z);
p=q-y[i];
if(fabs(p)>dt[2]) dt[2]=fabs(p);
dt[0]=dt[0]+p*p;
dt[1]=dt[1]+fabs(p);
}
return;
}

x是我说得那个自变量,y是因变量,n是指用n个数进行拟合,a是拟合函数求出得多项式得系数,m是多项式得幂次.
现在得程序,必须得把x变成对称坐标,比如说用7个数拟合得话,-180,-170,-160,-150,-140,-130,-120,就必须变换成-30,-20,-10,0,10,20,30,然后带到上面得函数中算,否则用拟合出的a带到y=a0+a2*x*x+a4*x*x*x*x求出得y就会失真了!
求助啊!


[此贴子已经被作者于2007-10-23 19:22:04编辑过]

搜索更多相关主题的帖子: 拟合 函数 曲线 多项式 
2007-10-23 19:18
zyjunhua
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2007-10-23
得分:0 
2007-10-23 21:25
ting8898
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2007-9-20
得分:0 

怎么都没有人会吗?我很急啊,强人帮帮忙啊!

2007-10-25 16:03
daat
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-3-5
得分:0 
我也在找这个程序。。。
2007-10-25 19:10
tutan
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2007-10-26
得分:0 

这个...应该是有办法解决的.....

2007-10-26 23:16
ting8898
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2007-9-20
得分:0 
2007-11-06 19:40
wdyllff
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2007-6-26
得分:0 
帮不上忙
2007-11-06 20:03



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-180177-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.137366 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved