• 大小: 1.08MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-08-29
  • 语言: C/C++
  • 标签: spline  

资源简介

C语言通用范例开发金典+源代码 里的一段 三次样条 算法。 很好用。 找它费了我3天时间。 你可以节省时间了

资源截图

代码片段和文件信息

// spline.cpp : Defines the entry point for the DLL application.
//

#include “stdafx.h“
#include “spline.h“
#include 
#include 
#include 
#include “interpolation.h“

const  SD_COUNT=16;
const  T_COUNT=960;


BOOL APIENTRY DllMain( HANDLE hModule 
                       DWORD  ul_reason_for_call 
                       LPVOID lpReserved
 )
{
    switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
    }
    return TRUE;
}


//////////////////////////////////////////////////////////
//////最多16标准品
int    sdCount=0;    
double x[SD_COUNT]={0};
double y[SD_COUNT]={0};
double dy[SD_COUNT]={0};
double ddy[SD_COUNT]={0};
//////最多960差值
int    tCount=0;
double t[T_COUNT]={0};
double z[T_COUNT]={0};
double dz[T_COUNT]={0};
double ddz[T_COUNT]={0};
//////////////////////////////////////////////////////////
double cubic_spline_third(CSINTEP cp)

int nmij;
double *x*y*dy*ddy*t*z*dz*ddz;
double h0y0h1y1alphabetaug*s;

n=cp->n; m=cp->m;
x=cp->x; y=cp->y; dy=cp->dy; ddy=cp->ddy;
t=cp->t; z=cp->z; dz=cp->dz; ddz=cp->ddz;
s=(double*)malloc(n*sizeof(double));
h0=x[n-1]-x[n-2];
y0=y[n-1]-y[n-2];
dy[0]=0.0; ddy[0]=0.0; ddy[n-1]=0.0;
s[0]=1.0; s[n-1]=1.0;
for (j=1;j h1=h0; y1=y0;
h0=x[j]-x[j-1];
y0=y[j]-y[j-1];
alpha=h1/(h1+h0);
beta=3.0*((1.0-alpha)*y1/h1+alpha*y0/h0);
if (j u=2.0+(1.0-alpha)*dy[j-1];
dy[j]=-alpha/u;
s[j]=(alpha-1.0)*s[j-1]/u;
ddy[j]=(beta-(1.0-alpha)*ddy[j-1])/u;
}
}
for (j=n-2;j>0;j--){ 
s[j]=dy[j]*s[j+1]+s[j];
ddy[j]=dy[j]*ddy[j+1]+ddy[j];
}
dy[n-2]=(beta-alpha*ddy[1]-(1.0-alpha)*ddy[n-2])/
(alpha*s[1]+(1.0-alpha)*s[n-2]+2.0);
for (j=2;j dy[j-2]=s[j-1]*dy[n-2]+ddy[j-1];
dy[n-1]=dy[0];
for (j=0;j s[j]=x[j+1]-x[j];
for (j=0;j h1=s[j]*s[j];
ddy[j]=6.0*(y[j+1]-y[j])/h1-2.0*(2.0*dy[j]+dy[j+1])/s[j];
}
h1=s[n-2]*s[n-2];
ddy[n-1]=6.*(y[n-2]-y[n-1])/h1+2.*(2.*dy[n-1]+dy[n-2])/s[n-2];
g=0.0;
for (i=0;i h1=0.5*s[i]*(y[i]+y[i+1]);
h1-=s[i]*s[i]*s[i]*(ddy[i]+ddy[i+1])/24.0;
g+=h1;
}
for (j=0;j h0=t[j];
while (h0>=x[n-1]) h0=h0-(x[n-1]-x[0]);
while (h0 i=0;
while (h0>x[i+1]) i++;
u=h0;
h1=(x[i+1]-u)/s[i];
h0=h1*h1;
z[j]=(3.0*h0-2.0*h0*h1)*y[i];
z[j]+=s[i]*(h0-h0*h1)*dy[i];
dz[j]=6.0*(h0-h1)*y[i]/s[i];
dz[j]+=(3.0*h0-2.0*h1)*dy[i];
ddz[j]=(6.0-12.0*h1)*y[i]/(s[i]*s[i]);
ddz[j]+=(2.0-6.0*h1)*dy[i]/s[i];
h1=(u-x[i])/s[i];
h0=h1*h1;
z[j]+=(3.0*h0-2.0*h0*h1)*y[i+1];
z[j]-=s[i]*(h0-h0*h1)*dy[i+1];
dz[j]-=6.0*(h0-h1)*y[i+1]/s[i];
dz[j]+=(3.0*h0-2.0*h1)*dy[i+1];
ddz[j]+=(6.0-12.0*h1)*y[i+1]/(s[i]*s[i]);
ddz[j]-=(2.0-6.0*h1)*dy[i+1]/s[i];
}
free(s);/*释放动态分配的内存*/
return(g);
}

double cubic_spline

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       3627  2013-07-01 14:00  三次样条VC\spline\interpolation.h

     文件       1247  2013-07-01 16:02  三次样条VC\spline\ReadMe.txt

     文件    1434624  2013-07-02 10:21  三次样条VC\spline\Release\spline.bsc

     文件      40960  2013-07-02 10:21  三次样条VC\spline\Release\spline.dll

     文件       1671  2013-07-02 10:21  三次样条VC\spline\Release\spline.exp

     文件       3792  2013-07-02 10:21  三次样条VC\spline\Release\spline.lib

     文件      11373  2013-07-02 10:21  三次样条VC\spline\Release\spline.obj

     文件    2182832  2013-07-02 08:34  三次样条VC\spline\Release\spline.pch

     文件          0  2013-07-02 10:21  三次样条VC\spline\Release\spline.sbr

     文件        284  2013-07-02 08:34  三次样条VC\spline\Release\StdAfx.obj

     文件     435830  2013-07-02 08:34  三次样条VC\spline\Release\StdAfx.sbr

     文件      41984  2013-07-02 10:21  三次样条VC\spline\Release\vc60.idb

     文件       8446  2013-07-02 10:20  三次样条VC\spline\spline.cpp

     文件       4360  2013-07-02 08:37  三次样条VC\spline\spline.dsp

     文件        537  2013-07-01 16:09  三次样条VC\spline\spline.dsw

     文件       1319  2013-07-02 10:21  三次样条VC\spline\spline.h

     文件      58368  2013-07-02 10:24  三次样条VC\spline\spline.ncb

     文件      53760  2013-07-02 10:24  三次样条VC\spline\spline.opt

     文件       1481  2013-07-02 10:21  三次样条VC\spline\spline.plg

     文件        293  2013-07-01 16:02  三次样条VC\spline\StdAfx.cpp

     文件        802  2013-07-01 16:02  三次样条VC\spline\StdAfx.h

     目录          0  2013-07-02 10:03  三次样条VC\spline\Release

     目录          0  2013-07-02 10:24  三次样条VC\spline

     目录          0  2013-07-01 16:45  三次样条VC

----------- ---------  ---------- -----  ----

              4287590                    24


评论

共有 条评论