📄 legendp2.c
字号:
float p(int n, float x)
{/*求勒让德多项式值的非递归算法*/
float pre1,pre2,a,b,valuep;
int i;
if (n==0) return(1.0); /*n=0时直接输出勒让德多项式的值*/
else if (n==1) return(x); /*n=1时直接输出勒让德多项式的值*/
else { /*使用递推技术求第n阶勒让德多项式的值*/
pre1=1.0; /*pre1用于记录第i-2阶勒让德多项式的值*/
pre2=x; /*pre2用于记录第i-1阶勒让德多项式的值*/
for (i=2;i<=n;++i)
{
a=2*i-1;
b=i-1;
valuep=(a*pre2*x-b*pre1)/i; /*求第i阶勒让德多项式的值*/
pre1=pre2; /*用pre1跟踪pre2当前的值*/
pre2=valuep; /*用pre2跟踪valuep当前的值*/
}
return(valuep);
}
}
main()
{
int i,n;
float x,y;
printf("input n and x:");
scanf("%d",&n);
scanf("%f",&x);
for (i=0;i<=n;++i)
{ y=p(i,x);
printf("n=%d,p=%10.5f\n",i,y);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -