分段插值

//分段线性插值,在这里以y=1-x*x为例

#include< iostream >
#include
using namespace std;
double X,Y;
//第一步:就是设置一个起点然后以固定的步长移动,直到找到最接近待求值的那一段
//第二步:设那一段的起始点为Xa,终点为Xb,分别求出a、b两点的值Ya、Yb
//第三步:设待求点为c,插值公式为[(c-Xa)*Yb+(Xa-c)*Ya]/footstep,求出Yc。

double count(double x)
{
return 1-x*x;//可替换表达式
}

int judge(int x)//判断x大于0还是小于0,大于返回1,小于返回0
{
cout<<“已判断”< return x>0?1:0;
}

double search(double a,double b)//寻找离插值点最近的两个点,a为起点,b步长
{
double i,c;
for(i=a;;i=i+b)
{
c=i+b;
if(pow(i,2)<=pow(X,2)&&pow(X,2)<=pow(c,2))
break;
}
return i;

}

void fenduan()//计算分段插值的结果
{
cout<<“calculating…”< double y1,y2,x1,x2,footstep;
if(judge(X))
footstep=0.003;//步长可换
else
footstep=-0.003;
x1=search(0,footstep);
x2=x1+footstep;
y1=count(x1);
y2=count(x2);
cout<<“两点已找到 x1=”<

你可能感兴趣的:(插值,程序,分段插值)