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

📄 三次样条插值法.cpp

📁 这是我编的利用三次样条法进行函数插值的程序。
💻 CPP
字号:
#include <iostream.h>
#include <math.h>

double yy[12]={0,0,0,0,0,0,0,0,0,0,0,0};
//附加两个边值条件:y"=0 at |x|=1

void main()
{
	double x[12]={0,-1.0,-0.8,-0.6,-0.4,-0.2,0,0.2,0.4,0.6,0.8,1.0};
	double y[12]={0,1.0/26.0,1.0/17.0,0.1,0.2,0.5,1.0,0.5,0.2,0.1,1.0/17.0,1.0/26.0};

	double gama[11]={0,0,1.0/30.0,1.0/30.0,1.0/30.0,1.0/30.0,1.0/30.0,1.0/30.0,1.0/30.0,1.0/30.0,1.0/30.0};
	double beta[12]={0,1.0/15.0,1.0/15.0,1.0/15.0,1.0/15.0,1.0/15.0,1.0/15.0,1.0/15.0,1.0/15.0,1.0/15.0,1.0/15.0,1.0/15.0};
	double alpha[12]={0,0,1.0/30.0,1.0/30.0,1.0/30.0,1.0/30.0,1.0/30.0,1.0/30.0,1.0/30.0,1.0/30.0,1.0/30.0,0};
//y"的系数矩阵
    
	double b[12];
	for(int k=2;k<=10;k++)
	{
		b[k]=(y[k+1]+y[k-1]-2*y[k])*5.0;
		//cout<<b[k]<<endl;	
	}
	b[0]=b[1]=b[11]=0;
//右列向量

	double g[11];
	double h[11];

	g[10]=-alpha[11]/beta[11];
	h[10]=b[11]/beta[11];

	for(int i=10;i>=2;i--)
	{
		g[i-1]=-alpha[i]/(beta[i]+gama[i]*g[i]);
		h[i-1]=(b[i]-gama[i]*h[i])/(beta[i]+gama[i]*g[i]);
	}
	
	
	yy[1]=(b[1]-gama[1]*h[1])/(beta[1]+gama[1]*g[1]);

	for(int j=1;j<=10;j++)
	{
		yy[j+1]=g[j]*yy[j]+h[j];
	}

//以上求解y"

}

⌨️ 快捷键说明

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