📄 lag.cpp
字号:
#include<iostream>
using namespace std;
#include<stdio.h>
#include<math.h>
#define n 4
#define pi 3.1415926
void main()
{double x[n+1],y[n+1],t,x1,y1; int i,j,k;
x[0]=0;x[1]=pi/6;x[2]=pi/4;x[3]=pi/3;x[4]=pi/2;
for(i=0;i<=n;i++)
y[i]=sin(x[i]);
x1=pi/12;
y1=0;k=0;
while(k<=n)
{ t=1;
for(j=0;j<=n;j++) if(j!=k) t=(x1-x[j])/(x[k]-x[j])*t;cout<<"t="<<t<<endl;
y1=y1+t*y[k];
k++;
}
cout<<"lag插值y是"<<y1<<endl;
x[0]=0;x[1]=pi/6;x[2]=pi/4;x[3]=pi/3;x[4]=pi/2;
for(i=0;i<=n;i++)
y[i]=sin(x[i]);
x1=pi/12;
y1=y[0];t=1;
for(j=1;j<=n;j++)
{ t=t*(x1-x[j-1]);
for(i=0;i<=n-j;i++)
y[i]=(y[i+1]-y[i])/(x[j+i]-x[i]);
y1=y1+y[0]*t;cout<<"yo="<<y[0]<<endl;
}
cout<<"newton插值"<<y1<<endl;
x[0]=0;x[1]=pi/6;x[2]=pi/4;x[3]=pi/3;x[4]=pi/2;
for(i=0;i<=n;i++)
y[i]=sin(x[i]);
x1=pi/12;
k=1;
while(k!=n+1)
{
for(i=k;i<=n;i++)
y[i]=y[k-1]+(y[i]-y[k-1])*(x1-x[k-1])/(x[i]-x[k-1]);cout<<"p="<<y[k]<<endl;
k++;
}
cout<<"aitken插值y是"<<y[n];
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -