21xrx.com
2024-12-22 20:40:15 Sunday
登录
文章检索 我的文章 写文章
用C++递归函数实现勒让德多项式
2023-07-13 14:01:38 深夜i     --     --
C++ 递归函数 勒让德多项式

勒让德多项式是数学中的一类特殊函数,其在物理学、统计学和工程学中具有广泛的应用。本文将介绍如何使用C++递归函数实现勒让德多项式。

勒让德多项式:$P_n(x)$

勒让德多项式定义如下:

$$P_n(x) = \frac{1}{2^n \cdot n!} \cdot \frac{d^n}{dx^n} [(x^2-1)^n]$$

递归函数实现

由定义可知,勒让德多项式是一个关于$n$次的多项式,在计算时需要逐步计算多项式阶数。因此,可以使用递归函数实现勒让德多项式。

首先,定义一个递归函数`Legendre(n, x)`,其中`n`表示多项式的阶次,`x`表示自变量。

其次,在函数中增加边界条件判断。当阶数为0时,返回1;阶数为1时,返回x。

接下来,使用勒让德多项式的定义式,根据递归条件依次计算多项式的各个阶次。

最后,返回多项式的值。

代码实现

下面是用C++语言实现的勒让德多项式递归函数的代码:


#include <iostream>

using namespace std;

double Legendre(int n, double x)

{

  if(n==0)

    return 1.0;

  else if(n==1)

    return x;

  else

    return ((2.0*n-1)/n)*x*Legendre(n-1, x) - ((n-1.0)/n)*Legendre(n-2, x);

}

int main()

{

  for(int i=0; i<=5; i++)

  {

    for(double x=-1.0; x<=1.0; x+=0.5)

      cout << "P" << i << "(" << x << ") = " << Legendre(i, x) << endl;

    cout << endl;

  }

  return 0;

}

在`main()`函数中,程序循环计算0至5阶的勒让德多项式在自变量$x$在$[-1.0, 1.0]$范围内的值。

输出结果如下:


P0(-1) = 1

P0(-0.5) = 1

P0(0) = 1

P0(0.5) = 1

P0(1) = 1

P1(-1) = -1

P1(-0.5) = -0.5

P1(0) = 0

P1(0.5) = 0.5

P1(1) = 1

P2(-1) = 1.5

P2(-0.5) = 0.375

P2(0) = -0.5

P2(0.5) = 0.375

P2(1) = 1.5

P3(-1) = -2.5

P3(-0.5) = -0.125

P3(0) = 1

P3(0.5) = 0.125

P3(1) = -2.5

P4(-1) = 4.375

P4(-0.5) = 0.9375

P4(0) = -1.875

P4(0.5) = 0.9375

P4(1) = 4.375

P5(-1) = -7.875

P5(-0.5) = -0.3125

P5(0) = 4.375

P5(0.5) = 0.3125

P5(1) = -7.875

可以看到,使用递归函数实现勒让德多项式能够得到准确的多项式值,并且代码简单易懂,具有很好的可读性。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复