資源簡介
三次樣條插值法的程序代碼,保證了曲線的二階光滑度。
代碼片段和文件信息
#include
#include
#define?N?19
#define?X?12
int?Find(double?*adouble?x);
double?calcudet(double?a[N][N]);
int?main(void)
{
int?ijpqk;
int?x[]={24612163060110180280400515};
double?a[N]b[N]h[N]u[N]l[N]g[N];
double?y[X];
double?b_[]={1.86548-0.046115};
double?A[N][N]={0}B[N][N]={0}C[N][N]={0};
double?M[N];
double?denonume;
FILE?*fp;
/*從文件讀取數據到數組*/
fp=fopen(“Points.txt““r“);
for(i=0;i fscanf(fp“%lf%lf“&a[i]&b[i]);
fclose(fp);
/*計算所需要的數據*/
for(i=1;i h[i]=a[i]-a[i-1];
for(i=1;i u[i]=h[i]/(h[i]+h[i+1]);
for(i=1;i ????l[i]=1-u[i];
for(i=1;i g[i]=6*((b[i+1]-b[i])/h[i+1]-(b[i]-b[i-1])/h[i])/(h[i]+h[i+1]);
g[0]=6*((b[1]-b[0])/h[1]-b_[0])/h[1];
g[N-1]=6*(b_[1]-(b[N-1]-b[N-2])/h[N-1])/h[N-1];
/*系數行列式的初始化*/
for(i=0;i ????for(j=0;j ????????A[i][j]=0;
for(i=0;i ????A[i][i]=2;
A[0][1]=A[N-1][N-2]=1;
for(i=1;i A[i][i+1]=l[i];
A[i][i-1]=u[i];
}
for(i=0;i ????for(j=0;j ????????C[i][j]=A[i][j];
/*Cramer法則計算線性方程組*/
deno=calcudet(A);
for(j=0;j for(p=0;p ????????for(q=0;q ????????????B[p][q]=C[p][q];
for(i=0;i ????B[i][j]=g[i];
nume=calcudet(B);
M[j]=nume/deno;
}
/*計算S(x)*/
for(i=0;i k=Find(ax[i]);
y[i]=M[k-1]*pow((a
- 上一篇:VMwareESXi5.1.0.txt
- 下一篇:Opencv灰度變化
評論
共有 條評論