?? fenduanpowu.cpp
字號:
//分段拋物插值算法源程序:
#include<iostream.h>
#define SIZE 10
void main()
{
int n,i=1,j=1;
double xx,yy=1,result=0;
double x[SIZE];
double y[SIZE];
cout<<"**********分段拋物插值**********"<<endl<<endl;
cout<<"輸入已知插值結點總數目(未剔除時應當大于3): ";
cin>>n;
while(n<3)
{
cout<<"輸入錯誤,點的數目必須大于3!請重新輸入: ";
cin>>n;
}
cout<<"依次輸入第結點的坐標: x y"<<endl;
while(i<=n)
{
cout<<"第 "<<i<<" 個點的坐標為 ";
cin>>x[i]>>y[i];
i++;
}
cout<<"輸入所求插值結點x坐標: ";
cin>>xx;
if(xx>=x[n-1])
{
x[1]=x[n-2];
x[2]=x[n-1];
x[3]=x[n];
y[1]=y[n-2];
y[2]=y[n-1];
y[3]=y[n];
}
{
for(j=1;j<n;j++)
{
if(xx>=x[j]&&xx<=x[j+1])
{
if((xx-x[j-1])<=(x[j+2]-xx))
{
x[1]=x[j-1];
x[2]=x[j];
x[3]=x[j+1];
y[1]=y[j-1];
y[2]=y[j];
y[3]=y[j+1];
}
else
{
x[1]=x[j];
x[2]=x[j+1];
x[3]=x[j+2];
y[1]=y[j];
y[2]=y[j+1];
y[3]=y[j+2];
}
}
}
}
cout<<"自動篩選后坐標為: "<<x[1]<<","<<y[1]<<" "<<x[2]<<","<<y[2]<<" "<<x[3]<<","<<y[3]<<endl;
for(i=1;i<=3;i++)
{
for(j=1,yy=1;j<=3;j++)
if(j!=i)yy=yy*(xx-x[j])/(x[i]-x[j]);
result=result+yy*y[i];
}
cout<<"所求y坐標為: "<<result;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -