首页 > 解决方案 > Legendre多项式的计算,学习

问题描述

我正在尝试从我在网上找到的课程中解决这个练习。(如果你认识这个问题,请告诉我你对这门课程的看法)。我一直在研究如何解决这个问题,但我的计算一直存在错误,我认为这主要是因为我不确定输出将如何以及如何编写函数的某些部分。我会虚心接受任何善意的解释和建议,我还有很长的路要走,所以我会在身边。

这是问题,

勒让德多项式定义为:

()=∑=0(−1)(2−2)!2!(−)!(−2)!−2

其中 =/2 如果 n 为偶数,或 (-1)/2 如果为奇数。!表示“m 的阶乘”,例如 4! = 1 * 2 * 3 * 4 = 24。你可以这样计算:from math import factorial factorial(4) 24

这是一个有用的计算函数:

import numpy as np
def M(n):
    if np.mod(n, 2) == 0:  # this means n is even.
        return int(n / 2)
    else:
        return int((n - 1) / 2)

编写一个计算 P(x, n) 的函数,并在 x=-1 到 x=1 的范围内绘制 n=3 和 n=4 的函数。

import scipy as sp
P_tot = []
x = np.linspace(-1,1,10)
n = [3,4]
def P(x,n):
    return ((-1)**M(n))*((factorial(2*n-2*M(n)))/((2**n)*factorial(M(n))*factorial(n-M(n))*factorial(n-2*M(n))))*(x**(n-2*M(n)))
x = np.linspace(-1,1,10)
n = [3,4]
Px,pn = P(x,n)
P_tot += [Px,pn]

ValueError Traceback (最近一次调用最后一个 ValueError:具有多个元素的数组的真值不明确。使用 a.any() 或 a.all()

我迫不及待地想看看它是多么容易,我是否错过了。

谢谢你的时间。

标签: pythonmathpolynomials

解决方案


推荐阅读