📄 insert.cpp
字号:
//拉格朗日插值法
#include"Insert.h"
Lagrange::Lagrange(GivenPoint * inpoints,double inroot,int inlen)
{
points=inpoints;
root=inroot;
len=inlen;
cout<<"Construct completed!"<<endl;
}
double Lagrange::DoIt(void)
{
int length=len;//How to obtain an array's length?
double sum=0.0,temp=1.0;
//Main cycle
for(int i=0;i<=length-1;i++)
{
for(int j=0;j<=length-1;j++)
{
if(i!=j)
temp *= (root-points[j].X)/(points[i].X-points[j].X);
}
temp *= points[i].Y;
sum += temp;
temp = 1.0;
}
return sum;
}
//分段线性插值
void SepLinear::Separate(double * x,double * y,int len,double root)
{
int i;
if(root>x[len-1]||root<x[0])
{
cout<<"Root Overranged!"<<endl;
return;
}
for(i=0;i<=len-2;i++)
{
if(root>=x[i]&&root<=x[i+1])
break;
}
double result;
result=y[i]+(y[i+1]-y[i])*(root-x[i])/(x[i+1]-x[i]);
cout<<"Root:"<<root<<'\t'<<"Result:"<<result<<endl;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -