13.用递归方法求n阶勒让德多项式的值,递归公式为
Pn(x)=1,当(n=0)
Pn(x)=x,当(n=1)
Pn(x)=(2n-1)×x-Pn-1(x)-(n-1)×Pn-2(x))/n,当(n≥1)
#include <stdio.h>
// 递归求勒让德多项式
double legendre_polynomial(int n, double x) {
if (n == 0) return 1;
if (n == 1) return x;
return ((2*n - 1)*x*legendre_polynomial(n - 1, x) - (n - 1)*legendre_polynomial(n - 2, x)) / n;
}
int main() {
int n;
double x;
printf("输入勒让德多项式的阶数和x的值:");
scanf("%d %lf", &n, &x);
double result = legendre_polynomial(n, x);
printf("%d阶勒让德多项式在x=%.2f时的值为:%.6f\n", n, x, result);
return 0;
}
解释说明:
递归求勒让德多项式:
- 函数
legendre_polynomial
根据递归公式计算n阶勒让德多项式Pn(x)
的值。 - 主函数从键盘输入阶数
n
和x
的值,调用legendre_polynomial
函数并输出计算结果。