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

📄

📁 收集的C语言算法程序
💻
字号:
样条插值2007-07-16 18:58#include<iostream>
using namespace std;
#define N 5            //以五点为例

void main()
{
int i,n=N;
float x[N],y[N],h[N],a[N],b[N],A[N],B[N],m[N],s=0,xx;
cout<<"Please input the array of x:\n";
for(i=0;i<N;i++) cin>>x[i];
cout<<"Please input the array of y:\n";
for(i=0;i<N;i++) cin>>y[i];
cout<<"Please input xx:\n";
cin>>xx;

for(i=0;i<N;i++) h[i]=x[i+1]-x[i];

a[0]=1;
b[0]=3/h[0]*(y[1]-y[0]);
for(i=1;i<N;i++) 
{
a[i]=h[i-1]/(h[i-1]+h[i]);
b[i]=3*((1-a[i])/h[i-1]*(y[i]-y[i-1])+a[i]/h[i]*(y[i+1]-y[i]));
}

A[0]=-a[0]/2;
B[0]=b[0]/2;
for(i=1;i<N;i++)
{
A[i]=(-a[i]/(2+(1-a[i])*A[i-1]));
B[i]=(b[i]-(1-a[i])*B[i-1])/(2+(1-a[i])*A[i-1]);
}

m[n]=(b[n]-(1-a[n])*B[n-1])/(2+(1-a[n])*A[n-1]);
for(i=N;i>=0;i--)
m[i]=A[i]*m[i+1]+B[i];

for(i=0;i<N;i++)
{ if((xx>=x[i])&&(xx<=x[i+1]))
    s=(1+2*(xx-x[i])/(x[i+1]-x[i]))*((xx-x[i+1])/(x[i]-x[i+1]))*((xx-x[i+1])/(x[i]-x[i+1]))*y[i]+(1+2*(xx-x[i+1])/(x[i]-x[i+1]))*((xx-x[i])/(x[i+1]-x[i]))*((xx-x[i])/(x[i+1]-x[i]))*y[i+1]+(xx-x[i])*((xx-x[i+1])/(x[i]-x[i+1]))*((xx-x[i+1])/(x[i]-x[i+1]))*m[i]+(xx-x[i+1])*((xx-x[i])/(x[i+1]-x[i]))*((xx-x[i])/(x[i+1]-x[i]))*m[i+1];
else continue;}
cout<<"The final result is:\n";
cout<<s;
cout<<"\n";
}
 

⌨️ 快捷键说明

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