关于三次样条插值算法` 哪位大虾能把三次样条插值算法给我说明一下呢~~ 小弟不懂`~最好有书~ 发到或者是 0QQ33890236 联系` 谢谢谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 看http://expert.csdn.net/Expert/topic/1684/1684858.xml?temp=.2828943 visual c++常用数值算法集,何光渝编著,科学出版社 还是给你打上去吧,不多。void spline(double x[],double y[],int n,double yp1,double ypn,double y2[]){ double u[100],aaa,sig,p,bbb,ccc,qn,un; int i,k; if(yp1>9.9e + 29) { y2[1] = 0; u[1] = 0; } else { y2[1] = - 0.5; aaa = (y[2] - y[1])/(x[2] - x[1]); u[1] = (3.0/(x[2] - x[1]))*(aaa- yp1); } for(i = 2;i<=n-1;i++) { sig = (x[i] - x[i-1])/(x[i+1] - x[i-1]); p = sig*y2[i-1] + 2.0; y2[i] = (sig-1.0)/p; aaa = (y[i+1] - y[i])/(x[i+1]-x[i-1]); bbb = (y[i] - y[i-1])/(x[i]-x[i-1]); ccc = x[i+1] - x[i-1]; u[i] = (6.0*(aaa-bbb)/ccc-sig*u[i-1])/p; } if(ypn>9.9e = 29) { qn = 0.0; un = 0.0; } else { qn = 0.5; aaa = ypn - (y[n] - y[n-1])/x[n]-x[n-1]); un = (3.0/(x[n] - x[n-1]))*aaa; } y2[n] =(un-qn*u[n-1])/(qn*y2[n-1] + 1.0); for(k = n-1;k>=1;k--) y2[k] = y2[k]*y2[k+1] + u[k]; } void splint(double xa[],double ya[];double y2a[],int n,double& x,double& y){ int klo,khi,k; double h,a,b,aaa,bbb; klo = 1; khi = n; loop:if(khi-klo>1) { k = (khi+klo)/2; if(xa[k]>x) khi = k; else { klo = k; } goto loop; } h = xa[khi] - xa[klo]; if(h==0) { cout<<"pause 'bad xa input'"<<endl; return; } a = (xa[khi] - x)/h; b = (x-xa[klo])/h; aaa = a*ya[klo] + b*ya[khi]; bbb = (a*a*a - a)*y2a[klo] + (b*b*b - b)*y2a[khi]; y = aaa + bbb*h*h/6.0;} astroboy()给的例子不错可以看看lblyy76(yibo) 程序没有变量和函数的说明看起来有点费劲我现在也在作三次样条插值,但是我要求的是非均匀的。 GetPixel怎么取客户区颜色 有人吗?有人吗?帮我看个算法题~~~~~~~ 关于设置后台线程优先级。大家帮我拿拿主意。 对票据打印机编程 没有返回值的函数(void),是否一定要加return ?? 传送和接收大量数据,是使用进程好,还是线程好呢?为什么? 请问用ado如何创建表? 如何对分割窗口进行初始化 如何操作其他进程的窗口? jpeg2000的源码有吗?用我所有的分相交换!!! Urgent Help! A Question For Win32 API-----About ChildWindow installshield6.22的问题,急急!在线等待
void spline(double x[],double y[],int n,double yp1,double ypn,double y2[])
{
double u[100],aaa,sig,p,bbb,ccc,qn,un;
int i,k;
if(yp1>9.9e + 29)
{
y2[1] = 0;
u[1] = 0;
}
else
{
y2[1] = - 0.5;
aaa = (y[2] - y[1])/(x[2] - x[1]);
u[1] = (3.0/(x[2] - x[1]))*(aaa- yp1);
}
for(i = 2;i<=n-1;i++)
{
sig = (x[i] - x[i-1])/(x[i+1] - x[i-1]);
p = sig*y2[i-1] + 2.0;
y2[i] = (sig-1.0)/p;
aaa = (y[i+1] - y[i])/(x[i+1]-x[i-1]);
bbb = (y[i] - y[i-1])/(x[i]-x[i-1]);
ccc = x[i+1] - x[i-1];
u[i] = (6.0*(aaa-bbb)/ccc-sig*u[i-1])/p;
}
if(ypn>9.9e = 29)
{
qn = 0.0;
un = 0.0;
}
else
{
qn = 0.5;
aaa = ypn - (y[n] - y[n-1])/x[n]-x[n-1]);
un = (3.0/(x[n] - x[n-1]))*aaa;
}
y2[n] =(un-qn*u[n-1])/(qn*y2[n-1] + 1.0);
for(k = n-1;k>=1;k--)
y2[k] = y2[k]*y2[k+1] + u[k];
}
void splint(double xa[],double ya[];double y2a[],int n,double& x,double& y)
{
int klo,khi,k;
double h,a,b,aaa,bbb;
klo = 1;
khi = n;
loop:if(khi-klo>1)
{
k = (khi+klo)/2;
if(xa[k]>x)
khi = k;
else
{
klo = k;
}
goto loop;
}
h = xa[khi] - xa[klo];
if(h==0)
{
cout<<"pause 'bad xa input'"<<endl;
return;
}
a = (xa[khi] - x)/h;
b = (x-xa[klo])/h;
aaa = a*ya[klo] + b*ya[khi];
bbb = (a*a*a - a)*y2a[klo] + (b*b*b - b)*y2a[khi];
y = aaa + bbb*h*h/6.0;
}
可以看看
lblyy76(yibo) 程序没有变量和函数的说明
看起来有点费劲
我现在也在作三次样条插值,但是我要求的是非均匀的。