⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 yl1.cpp

📁 三次样条插值逼近函数
💻 CPP
字号:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>

void main()
{
	float x[30],y[30],m[30],h[29],u[29],v[29],d[30],b[30],r[29],l[30],s[30];
	int i,N;
	printf("Please input the number of the insert point\n");
	scanf("%d",&N);
	printf("Please input parametres of the insert point:\n");
    for(i=0;i<N;i++)
	{
		scanf("%f",&x[i]);
		scanf("%f",&y[i]);
	}
	printf("Please input intial facto:\n");
	scanf("%f",&m[0]);
	scanf("%f",&m[N-1]);
	for(i=1;i<=N-1;i++)
		h[i-1]=x[i]-x[i-1];
	for(i=1;i<=N-2;i++)
	{
		u[i-1]=h[i-1]/(h[i-1]+h[i]);
		v[i]=1-u[i-1];
	}
	u[N-2]=v[0]=0;
	b[0]=b[N-1]=1;
	for(i=1;i<N-1;i++)
		b[i]=2;
	d[0]=m[0];
	d[N-1]=m[N-1];
	for(i=1;i<=N-2;i++)
		d[i]=6/(h[i-1]+h[i])*(((y[i+1]-y[i])/h[i])-((y[i]-y[i-1])/h[i-1]));
	l[0]=b[0];
	s[0]=d[0]/l[0];
	for(i=1;i<N;i++)
	{
		r[i-1]=v[i-1]/l[i-1];
		l[i]=b[i]-u[i-1]*r[i-1];
		s[i]=(d[i]-u[i-1]*s[i-1])/l[i];
	}
	m[N-1]=s[N-1];
	for(i=N-2;i>=0;i--)
		m[i]=s[i]-r[i]*m[i+1];
	for(i=0;i<N;i++)
		printf("%f\n",m[i]);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -