拉格朗⽇多项式
usingSystem;
c;
;
;
namespaceCsTest
{//可以确定的是n个插值点的拉格朗⽇多项式的最⼤次数为n
publicclassPloy//多项式
{
publicdouble[]a;//系数,指数即索引值
publicPloy(intn=1)
{
a=newdouble[n];//当未给数组中的每⼀项赋值时,其值为0
}
publicstaticPloyoperator+(Ploya1,Ployb1)//多项式a1和b1的项数相同
{
Ployp=newPloy();
for(inti=0;i<;i++)
{
p.a[i]=a1.a[i]+b1.a[i];//系数相加
}
returnp;
}
publicstaticPloyoperator*(Ploya1,Ployb1)
{
Ployp=newPloy();
for(inti=0;i<;i++)
{
if(a1.a[i]==0)
{
continue;//此项系数为0
}
for(intj=0;j<;j++)
{
if(b1.a[j]==0)//此项系数为0
{
continue;
}
if(i+j>)
{
ine("运算出现错误");
break;
}
p.a[i+j]+=a1.a[i]*b1.a[j];
}
}
returnp;
}
}
classProgram
{
staticvoidMain(string[]args)
{
intn=4;
//获取⽂件中的x值得数量并赋给n
//int[]X=newint[n];//横坐标数组
//int[]Y=newint[n];//纵坐标数组
int[]X={0,1,2,3};
int[]Y={2,-1,4,3};
Ploylag=newPloy(n);//拉格朗⽇多项式
for(inti=0;i
{
Ploypy=newPloy();
py.a[0]=Y[i];
Ploypx=newPloy();
px.a[0]=1;
for(intk=0;k<;k++)
{
if(i!=k)
{
px.a[0]*=X[i]-X[k];
}
}
py.a[0]/=px.a[0];
Ploymul=newPloy(n);
mul.a[0]=1;
for(intj=0;j
{
Ploytemp=newPloy(n);
temp.a[1]=1;
Ploytemp2=newPloy(n);
if(i==j)
{
continue;
}
temp2.a[0]=-X[j];
mul*=temp+temp2;
}
lag+=py*mul;
}
//输出拉格朗⽇多项式
for(inti=n-1;i>=0;i--)
{
if(lag.a[i]==0)
continue;
("{0}x^{1}+",lag.a[i],i);
}
}
}
}
本文发布于:2022-11-15 11:26:47,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/88/23982.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |