勒让德多项式
问题描述 勒让德多项式的递推公式为 P0(x)=1,P1(x)=x,P2(x)=1.5*x2 -0.5,...... , n*Pn(x) = (2n-1)*x*Pn-1(x) – (n-1)*Pn-2(x) ,输入阶数 n(1<n<10)和变量 x 的值(0.0<x<1.0),计算 1 到 n 阶勒让德多项式的和 P1(x)+P2(x)+...+Pn(x)并输出,结果保留小数点后 4 位。
输入说明
输入数据只有一行,包括一个正整数和一个正实数。其中正整数n表示阶数,而正实数表示变量x。输出说明
输出为一个实数(保留小数点后4位),表示1到n阶勒让德多项式的和。
输入样例 2 0.5
输出样例
0.3750
#include <stdio.h>
double rerand(int n,double x)
{
if(n==0)
return 1;
else if(n==1)
return x;
else
return ((2*n-1)*x*rerand(n-1,x)-(n-1)*rerand(n-2,x))/n;
}
int main()
{
double j,k,x;
int n,i;
scanf("%d %lf",&n,&x);
double ret = 0.00;
for(i=0;i<=n;i++)
{
if(i!=0)
ret+=rerand(i,x);
}
printf("%.4lf",ret);
return 0;
}