yangtiao.c
来自「两种曲线拟合的算法」· C语言 代码 · 共 55 行
C
55 行
#include <stdio.h>
chashang(float x[],float y[],int n)
{int i,j;
for(i=1;i<n;i++)
for(j=n-1;j>=i;j--)
y[i]=(y[i]-y[i-1])/(x[j]-x[j-1]);
}
main()
{float x[20],y[20];
float M[20],h[20],d[20],u[20],r[20];
float a,b;
int i,j,n,type;
printf("请输入点的个数:");
scanf("%d",&n);
printf("\n");
printf("请输入各个点的x,y值:\n");
for(i=0;i<n;i++)
scanf("%f,%f",&x[i],&y[i]);
for(i=0;i<n;i++)
h[i]=x[i+1]-x[i];
printf("请输入边界问题类别:type=:");
scanf("%d",&type);
if(type==1)
{ printf("请输入y'0,y'n:");
scanf("%f,y'%f",&a,&b);
printf("\n");
r[0]=u[n-1]=1;
}
else
if(type==2)
{
printf("请输入y''0,y''n:");
scanf("%f,%f",&a,&b);
printf("\n");
r[0]=u[n-1]=0;
}
for(i=1;i<n-1;i++)
u[i]=1-r[i];
chashang(x,y,n);
if(type==1)
{ d[0]=6*(y[1]-a)/h[0];
d[n-2]=6*(b-y[n-1])/h[n-1];
for(i=1;i<n-2;i++)
d[i]=6*y[i+1];
}
else
if(type==2)
{
d[0]=2*a;
d[n-1]=2*b;
}
for(i=0;i<n-1;i++)
printf("%f ",d[i]);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?