《数值分析 B》课计算实习第二次编程作业
for(i=floor((x[10]+x[11])/2)+1;i<=190;i++)
{
a[i]=i;
b[i]=(i-x[k+1])*(i-x[k+2])*y[k]/a1+(i-x[k])*(i-x[k+2])*y[k+1]/b1+(i-x[k+1])*(i-x[k])*y[k+2]/c1;
}
}
else
{
for(i=floor((x[k]+x[k+1])/2)+1;i<=floor((x[k+1]+x[k+2])/2);i++)
{
a[i]=i;
b[i]=(i-x[k+1])*(i-x[k+2])*y[k]/a1+(i-x[k])*(i-x[k+2])*y[k+1]/b1+(i-x[k+1])*(i-x[k])*y[k+2]/c1;
}
}
}
cout<<"分段二次多项式插值法结果:"<<endl;
for(i=0;i<190;i=i+5)
cout<<a[i]<<" "<<b[i]<<" "<<a[i+1]<<" "<<b[i+1]<<" "<< a[i+2]<<" "<<b[i+2]<<" "<< a[i+3]<<" "<<b[i+3]<<"
"<<a[i+4]<<" "<<b[i+4]<< endl;
cout<<a[190]<<" "<<b[190]<<endl;
cout<<endl;
//分段三次多项式插值
for(k=0;k<10;k++)
{ //计算各系数分母
a1=(x[k]-x[k+1])*(x[k]-x[k+2])*(x[k]-x[k+3]);
b1=(x[k+1]-x[k])*(x[k+1]-x[k+2])*(x[k+1]-x[k+3]);
c1=(x[k+2]-x[k])*(x[k+2]-x[k+1])*(x[k+2]-x[k+3]);
d1=(x[k+3]-x[k])*(x[k+3]-x[k+1])*(x[k+3]-x[k+2]);
if(k==0)
{
for(i=0;i<=floor((x[1]+x[2])/2);i++)
{
a[i]=i;
b[i]=(i-x[k+1])*(i-x[k+2])*(i-x[k+3])*y[k]/a1+(i-x[k])*(i-x[k+2])*(i-x[k+3])*y[k+1]/b1;
b[i]=b[i]+(i-x[k+1])*(i-x[k])*(i-x[k+3])*y[k+2]/c1+(i-x[k])*(i-x[k+1])*(i-x[k+2])*y[k+3]/d1;
}
}
if(k==9)
{
for(i=floor((x[9]+x[10])/2)+1;i<=190;i++)
{
a[i]=i;
b[i]=(i-x[k+1])*(i-x[k+2])*(i-x[k+3])*y[k]/a1+(i-x[k])*(i-x[k+2])*(i-x[k+3])*y[k+1]/b1;
- 3 -