十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
我的程序是牛顿插值和拉格朗日插值合起来,你自己看下,用的是C++
临河网站建设公司成都创新互联,临河网站设计制作,有大型网站制作公司丰富经验。已为临河近1000家提供企业网站建设服务。企业网站搭建\成都外贸网站制作要多少钱,请找那个售后服务好的临河做网站的公司定做!
#include iostream
#include iomanip
#include stdlib.h
using namespace std;
#define N 100
void lagrange()
{
int n,k,m,q=1;
float x[N],y[N],xx,yyy1,yyy2,yy1,yy2,yy3;
cout"请输入X的个数:";
cinn;
for(k=0;k=n-1;k++)
{
cout"请输入X"k"的值:";
cinx[k];
cout"请输入Y"k"的值:";
ciny[k];
}
system("cls");
cout"则Xi与Yi表格如下:"endl;
cout"Xi"" ";for(k=0;k=n-1;k++)coutsetiosflags(ios::left)setw(10)x[k];
coutendl;
cout"Yi"" ";for(k=0;k=n-1;k++)coutsetiosflags(ios::left)setw(10)y[k];
coutendl;
while(q)
{
cout"请输入所求x的值:";
cinxx;
while(xxx[k-1]||xxx[0])
{
cout"输入错误,请重新输入:";
cinxx;
}
for(k=0;k=n-1;k++)
{
if(xxx[k])
{
m=k-1;
k=n-1;
}
}
yyy1=y[m]*((xx-x[m+1])/(x[m]-x[m+1]))+y[m+1]*((xx-x[m])/(x[m+1]-x[m]));
cout"则拉格朗日分段线性插值为:"yyy1endl;
for(k=0;k=n-1;k++)
{
if(xxx[k])
{
m=k-1;
k=n-1;
}
}
if((xx-x[m])(x[m+1]-xx))m=m+1;
else m=m;
yy1=y[m-1]*((xx-x[m])*(xx-x[m+1]))/((x[m-1]-x[m])*(x[m-1]-x[m+1]));
yy2=y[m]*((xx-x[m-1])*(xx-x[m+1]))/((x[m]-x[m-1])*(x[m]-x[m+1]));
yy3=y[m+1]*((xx-x[m-1])*(xx-x[m]))/((x[m+1]-x[m-1])*(x[m+1]-x[m]));
yyy2=yy1+yy2+yy3;
cout"则拉格朗日分段二次插值为:"yyy2endl;
cout"是否输入其余要求x的值[是(1),否(0)]:";
cinq;
}
system("cls");
}
void main()
{
lagrange();
}
function =lagrange(x1,y1,xx)
%本程序为Lagrange1插值,其中x1,y1
%为插值节点和节点上的函数值,输出为插值点xx的函数值,
%xx可以是向量。
syms x
n=length(x1);
for i=1:n
t=x1;t(i)=[];L(i)=prod((x-t)./(x1(i)-t));% L向量用来存放插值基函数
end
u=sum(L.*y1);
p=simplify(u) % p是简化后的Lagrange插值函数(字符串)
=subs(p,x,xx);
clf
plot(x1,y1,'ro',xx,,'*')
#includestdio.h
#includestring.h
#define N 100
typedef struct tag{
double x;
double y;
}POINT;
void main()
{
int i,j,n;
double x,temp,Ln=0;
POINT pt[N];
printf("请输入你要输入点的个数,,1=n=%d:\n",N);
printf("n=");
scanf("%d",n);
printf("\n");
printf("\n请输入对应的点数\n");
for(i=0;in;i++)
scanf("%lf,%lf",pt[i].x,pt[i].y);
printf("\n");
printf("输入插值点x的值:\n");
scanf("%lf",x);
printf("\n");
for(i=0;in;i++)
{
for(j=0,temp=1;jn;j++)
{
if(j!=i)
temp=temp*(x-pt[j].x)/(pt[i].x-pt[j].x);
}
Ln=Ln+temp*pt[i].y;
}
printf("输出:\nLn(%lf)=%lf\n",x,Ln);
}